From a00c26409d4b600dfc86d9b7d111e21f996876a1 Mon Sep 17 00:00:00 2001 From: Nicholas Rodrigues Lordello Date: Mon, 18 Mar 2024 15:16:57 +0100 Subject: [PATCH 01/12] Shared Local Bundler E2E Setup (#314) This PR adds a new workspace `packages/4337-local-bundler` which exposes a `bin` executable called `4337-local-bundler-test` which runs a local bundler using Docker, and then executes `hardhat` tests using the `@4337` tag. This allows us to have a homogeneous setup between both the 4337 and passkey repositories (as well as any future modules that we want to be 4337-compliant). Along the way, I was also able to share 4337 and Safe deployment scripts across the projects when bootstrapping the local development node. --- .github/workflows/ci_4337.yml | 15 +- .github/workflows/ci_4337_gas_metering.yml | 9 +- .github/workflows/ci_4337_local_bundler.yml | 19 + .../workflows/ci_4337_upstream_bundler.yml | 7 +- .github/workflows/ci_passkey_example.yml | 4 - .prettierignore | 3 +- modules/4337/docker/bundler/Dockerfile | 12 - modules/4337/hardhat.config.ts | 8 +- modules/4337/package.json | 11 +- modules/4337/src/deploy/entrypoint.ts | 26 +- .../deploy/{webauthn.ts => experimental.ts} | 11 + modules/4337/src/deploy/libraries.ts | 2 - modules/4337/src/deploy/mock.ts | 1 - .../4337/src/deploy/{modules.ts => module.ts} | 1 - modules/4337/src/deploy/safe.ts | 40 +- modules/4337/test/e2e/4337NestedSafe.spec.ts | 2 +- modules/4337/test/e2e/LocalBundler.spec.ts | 2 +- .../4337/test/e2e/SingletonSigners.spec.ts | 2 +- modules/4337/test/e2e/UniqueSigner.spec.ts | 2 +- modules/4337/test/e2e/WebAuthnSigner.spec.ts | 2 +- .../test/e2e/WebAuthnSingletonSigner.spec.ts | 2 +- modules/4337/test/e2e/run.sh | 29 -- modules/allowances/package.json | 4 +- modules/passkey/docker-compose.yaml | 35 -- modules/passkey/hardhat.config.ts | 4 +- modules/passkey/package.json | 4 +- modules/passkey/src/deploy/entrypoint.ts | 3 + modules/passkey/src/deploy/safe.ts | 59 +-- modules/passkey/src/deploy/safe4337.ts | 33 ++ modules/passkey/src/deploy/webauthn.ts | 6 +- modules/passkey/test/4337/run.sh | 29 -- package-lock.json | 491 ++---------------- package.json | 3 +- packages/4337-local-bundler/.eslintignore | 1 + packages/4337-local-bundler/.gitignore | 1 + packages/4337-local-bundler/README.md | 3 + .../4337-local-bundler}/docker-compose.yaml | 4 + .../docker/bundler/Dockerfile | 1 + packages/4337-local-bundler/package.json | 22 + packages/4337-local-bundler/src/bin/test.ts | 68 +++ .../src/deploy/entrypoint.ts | 6 +- .../4337-local-bundler/src/deploy/safe.ts | 39 ++ packages/4337-local-bundler/src/index.ts | 6 + packages/4337-local-bundler/tsconfig.json | 13 + 44 files changed, 331 insertions(+), 714 deletions(-) create mode 100644 .github/workflows/ci_4337_local_bundler.yml delete mode 100644 modules/4337/docker/bundler/Dockerfile rename modules/4337/src/deploy/{webauthn.ts => experimental.ts} (75%) rename modules/4337/src/deploy/{modules.ts => module.ts} (95%) delete mode 100755 modules/4337/test/e2e/run.sh delete mode 100644 modules/passkey/docker-compose.yaml create mode 100644 modules/passkey/src/deploy/entrypoint.ts create mode 100644 modules/passkey/src/deploy/safe4337.ts delete mode 100755 modules/passkey/test/4337/run.sh create mode 100644 packages/4337-local-bundler/.eslintignore create mode 100644 packages/4337-local-bundler/.gitignore create mode 100644 packages/4337-local-bundler/README.md rename {modules/4337 => packages/4337-local-bundler}/docker-compose.yaml (83%) rename {modules/passkey => packages/4337-local-bundler}/docker/bundler/Dockerfile (99%) create mode 100644 packages/4337-local-bundler/package.json create mode 100644 packages/4337-local-bundler/src/bin/test.ts rename modules/passkey/src/deploy/4337.ts => packages/4337-local-bundler/src/deploy/entrypoint.ts (88%) create mode 100644 packages/4337-local-bundler/src/deploy/safe.ts create mode 100644 packages/4337-local-bundler/src/index.ts create mode 100644 packages/4337-local-bundler/tsconfig.json diff --git a/.github/workflows/ci_4337.yml b/.github/workflows/ci_4337.yml index ce63df2bd..df4b06f04 100644 --- a/.github/workflows/ci_4337.yml +++ b/.github/workflows/ci_4337.yml @@ -14,9 +14,9 @@ jobs: node-version: 20.x cache: npm cache-dependency-path: package-lock.json - - run: npm ci - - run: npm run build -w modules/4337 && npm run build:ts -w modules/4337 - - run: npm run coverage -w modules/4337 + - run: | + npm ci + npm run coverage -w modules/4337 - name: Coveralls uses: coverallsapp/github-action@master with: @@ -33,7 +33,7 @@ jobs: cache-dependency-path: package-lock.json - run: | npm ci - npm run test:e2e -w modules/4337 + npm run test:4337 -w modules/4337 lint: runs-on: ubuntu-latest steps: @@ -43,6 +43,7 @@ jobs: node-version: 20.x cache: npm cache-dependency-path: package-lock.json - - run: npm ci - - run: npm run lint -w modules/4337 - - run: npm run fmt:check -w modules/4337 + - run: | + npm ci + npm run lint -w modules/4337 + npm run fmt:check -w modules/4337 diff --git a/.github/workflows/ci_4337_gas_metering.yml b/.github/workflows/ci_4337_gas_metering.yml index c9abcb4d1..0262192c1 100644 --- a/.github/workflows/ci_4337_gas_metering.yml +++ b/.github/workflows/ci_4337_gas_metering.yml @@ -15,7 +15,8 @@ jobs: node-version: 20.x cache: npm cache-dependency-path: package-lock.json - - run: npm ci - - run: npm run fmt:check -w examples/4337-gas-metering - - run: npm run lint -w examples/4337-gas-metering - - run: npm run build -w examples/4337-gas-metering + - run: | + npm ci + npm run fmt:check -w examples/4337-gas-metering + npm run lint -w examples/4337-gas-metering + npm run build -w examples/4337-gas-metering diff --git a/.github/workflows/ci_4337_local_bundler.yml b/.github/workflows/ci_4337_local_bundler.yml new file mode 100644 index 000000000..62e4dddf1 --- /dev/null +++ b/.github/workflows/ci_4337_local_bundler.yml @@ -0,0 +1,19 @@ +name: safe-modules-4337-local-bundler +on: + push: + paths: + - 'packages/4337-local-bundler/**' + +jobs: + lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: 20.x + cache: npm + cache-dependency-path: package-lock.json + - run: | + npm ci + npm run lint -w packages/4337-local-bundler diff --git a/.github/workflows/ci_4337_upstream_bundler.yml b/.github/workflows/ci_4337_upstream_bundler.yml index ba60471a1..4f7f857e8 100644 --- a/.github/workflows/ci_4337_upstream_bundler.yml +++ b/.github/workflows/ci_4337_upstream_bundler.yml @@ -1,4 +1,4 @@ -name: 4337 Module End-to-End Tests With Upstream Bundler +name: 4337 End-to-End Tests With Upstream Bundler on: schedule: # * is a special character in YAML so you have to quote this string @@ -7,6 +7,8 @@ on: push: paths: - 'modules/4337/**' + - 'modules/passkey/**' + - 'packages/4337-local-bundler/**' jobs: e2e-upstream-bundler: @@ -20,4 +22,5 @@ jobs: cache-dependency-path: package-lock.json - run: | npm ci - npm run test:e2e:upstream -w modules/4337 + npm run test:4337:upstream -w modules/4337 + npm run test:4337:upstream -w modules/passkey diff --git a/.github/workflows/ci_passkey_example.yml b/.github/workflows/ci_passkey_example.yml index 9bd7f05cd..57ac18d63 100644 --- a/.github/workflows/ci_passkey_example.yml +++ b/.github/workflows/ci_passkey_example.yml @@ -17,10 +17,6 @@ jobs: cache: npm cache-dependency-path: package-lock.json - run: | - npm ci - # Build the 4337 module so the app can use the artifacts - npm run build -w modules/4337 - # Reinstall the dependencies so the 4337 dependency includes artifacts npm ci npm run lint -w examples/4337-passkeys npm run build -w examples/4337-passkeys diff --git a/.prettierignore b/.prettierignore index 3debc756e..dcc491490 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,2 +1,3 @@ -modules/** examples/** +modules/** +packages/** diff --git a/modules/4337/docker/bundler/Dockerfile b/modules/4337/docker/bundler/Dockerfile deleted file mode 100644 index 86b79b9f1..000000000 --- a/modules/4337/docker/bundler/Dockerfile +++ /dev/null @@ -1,12 +0,0 @@ -FROM docker.io/library/node:18 - -# v0.7.0 -ARG TAG=26e4f4c -RUN git clone https://github.com/eth-infinitism/bundler /src/bundler -WORKDIR /src/bundler -RUN git checkout ${TAG} -RUN git submodule init && git submodule update - -RUN yarn && yarn preprocess -ENTRYPOINT ["yarn", "bundler"] -CMD [] diff --git a/modules/4337/hardhat.config.ts b/modules/4337/hardhat.config.ts index 08df57c30..b257fd3d7 100644 --- a/modules/4337/hardhat.config.ts +++ b/modules/4337/hardhat.config.ts @@ -67,11 +67,11 @@ const userConfig: HardhatUserConfig = { networks: { localhost: { url: 'http://localhost:8545', - tags: ['dev', 'safe'], + tags: ['dev', 'entrypoint', 'safe'], }, hardhat: { gasPrice: 10000000000, - tags: ['test'], + tags: ['test', 'entrypoint', 'safe'], }, mainnet: { ...sharedNetworkConfig, @@ -88,12 +88,12 @@ const userConfig: HardhatUserConfig = { sepolia: { ...sharedNetworkConfig, url: `https://sepolia.infura.io/v3/${INFURA_KEY}`, - tags: ['dev'], + tags: ['dev', 'entrypoint'], }, amoy: { ...sharedNetworkConfig, url: `https://polygon-amoy.infura.io/v3/${INFURA_KEY}`, - tags: ['dev'], + tags: ['dev', 'entrypoint'], }, ...customNetwork, }, diff --git a/modules/4337/package.json b/modules/4337/package.json index 0212efa0a..c02830625 100644 --- a/modules/4337/package.json +++ b/modules/4337/package.json @@ -18,9 +18,9 @@ "build:ts": "npx rimraf dist && tsc", "build:sol": "npx rimraf build && hardhat compile", "test": "hardhat test --deploy-fixture", - "test:e2e": "./test/e2e/run.sh", - "test:e2e:upstream": "USE_UPSTREAM_BUNDLER=1 ./test/e2e/run.sh", - "test:all": "npm run test && npm run test:e2e", + "test:4337": "4337-local-bundler-test", + "test:4337:upstream": "USE_UPSTREAM_BUNDLER=1 4337-local-bundler-test", + "test:all": "npm run test && npm run test:4337", "coverage": "hardhat coverage", "codesize": "hardhat codesize", "benchmark": "npm run test benchmark/*.ts", @@ -54,6 +54,7 @@ "@noble/curves": "^1.3.0", "@nomicfoundation/hardhat-toolbox": "^4.0.0", "@openzeppelin/contracts": "^5.0.2", + "@safe-global/safe-4337-local-bundler": "^0.0.0", "@simplewebauthn/server": "9.0.0", "@types/chai": "^4.3.11", "@types/mocha": "^10.0.6", @@ -63,8 +64,8 @@ "debug": "^4.3.4", "dotenv": "^16.4.4", "ethers": "^6.11.1", - "hardhat": "^2.20.1", - "hardhat-deploy": "0.11.45", + "hardhat": "^2.21.0", + "hardhat-deploy": "^0.12.1", "husky": "^9.0.11", "solc": "^0.8.24", "solhint": "^4.1.1", diff --git a/modules/4337/src/deploy/entrypoint.ts b/modules/4337/src/deploy/entrypoint.ts index ff22afb76..5a7d29f06 100644 --- a/modules/4337/src/deploy/entrypoint.ts +++ b/modules/4337/src/deploy/entrypoint.ts @@ -1,25 +1,3 @@ -import EntryPoint from '@account-abstraction/contracts/artifacts/EntryPoint.json' -import { DeployFunction } from 'hardhat-deploy/types' +import { deployEntryPoint } from '@safe-global/safe-4337-local-bundler' -const ENTRY_POINT = process.env.DEPLOYMENT_ENTRY_POINT_ADDRESS - -const deploy: DeployFunction = async ({ deployments, getNamedAccounts, network }) => { - const { deployer } = await getNamedAccounts() - const { deploy } = deployments - - if (network.tags.dev || network.tags.test) { - await deploy('EntryPoint', { - from: deployer, - contract: EntryPoint, - args: [], - log: true, - deterministicDeployment: '0x90d8084deab30c2a37c45e8d47f49f2f7965183cb6990a98943ef94940681de3', - }) - } else if (!ENTRY_POINT) { - throw new Error('DEPLOYMENT_ENTRY_POINT_ADDRESS must be set') - } -} - -deploy.tags = ['entrypoint'] - -export default deploy +export default deployEntryPoint diff --git a/modules/4337/src/deploy/webauthn.ts b/modules/4337/src/deploy/experimental.ts similarity index 75% rename from modules/4337/src/deploy/webauthn.ts rename to modules/4337/src/deploy/experimental.ts index 04f5636a4..e8f94b220 100644 --- a/modules/4337/src/deploy/webauthn.ts +++ b/modules/4337/src/deploy/experimental.ts @@ -8,6 +8,8 @@ const deploy: DeployFunction = async ({ deployments, getNamedAccounts, network } const { deployer } = await getNamedAccounts() const { deploy } = deployments + const entryPoint = await deployments.get('EntryPoint') + const p256Verifier = await deploy('P256Verifier', { from: deployer, args: [], @@ -28,6 +30,15 @@ const deploy: DeployFunction = async ({ deployments, getNamedAccounts, network } log: true, deterministicDeployment: true, }) + + await deploy('SafeSignerLaunchpad', { + from: deployer, + args: [entryPoint.address], + log: true, + deterministicDeployment: true, + }) } +deploy.dependencies = ['entrypoint'] + export default deploy diff --git a/modules/4337/src/deploy/libraries.ts b/modules/4337/src/deploy/libraries.ts index c3cfe75d4..a840f10d9 100644 --- a/modules/4337/src/deploy/libraries.ts +++ b/modules/4337/src/deploy/libraries.ts @@ -12,6 +12,4 @@ const deploy: DeployFunction = async ({ deployments, getNamedAccounts }) => { }) } -deploy.tags = ['libraries'] - export default deploy diff --git a/modules/4337/src/deploy/mock.ts b/modules/4337/src/deploy/mock.ts index 41e712069..3d1f5f946 100644 --- a/modules/4337/src/deploy/mock.ts +++ b/modules/4337/src/deploy/mock.ts @@ -28,6 +28,5 @@ const deploy: DeployFunction = async ({ deployments, getNamedAccounts, network } } deploy.dependencies = ['entrypoint'] -deploy.tags = ['mock'] export default deploy diff --git a/modules/4337/src/deploy/modules.ts b/modules/4337/src/deploy/module.ts similarity index 95% rename from modules/4337/src/deploy/modules.ts rename to modules/4337/src/deploy/module.ts index a46e020ac..b4f4b4208 100644 --- a/modules/4337/src/deploy/modules.ts +++ b/modules/4337/src/deploy/module.ts @@ -17,6 +17,5 @@ const deploy: DeployFunction = async ({ deployments, getNamedAccounts }) => { } deploy.dependencies = ['entrypoint'] -deploy.tags = ['modules'] export default deploy diff --git a/modules/4337/src/deploy/safe.ts b/modules/4337/src/deploy/safe.ts index b7f0c9c0e..9a91a3377 100644 --- a/modules/4337/src/deploy/safe.ts +++ b/modules/4337/src/deploy/safe.ts @@ -1,39 +1,3 @@ -import MultiSend from '@safe-global/safe-contracts/build/artifacts/contracts/libraries/MultiSend.sol/MultiSend.json' -import SafeProxyFactory from '@safe-global/safe-contracts/build/artifacts/contracts/proxies/SafeProxyFactory.sol/SafeProxyFactory.json' -import SafeL2 from '@safe-global/safe-contracts/build/artifacts/contracts/SafeL2.sol/SafeL2.json' -import { DeployFunction } from 'hardhat-deploy/types' +import { deploySafe } from '@safe-global/safe-4337-local-bundler' -const deploy: DeployFunction = async ({ deployments, getNamedAccounts, network }) => { - if (!network.tags.safe && !network.tags.test) { - return - } - - const { deployer } = await getNamedAccounts() - const { deploy } = deployments - - await deploy('MultiSend', { - from: deployer, - contract: MultiSend, - args: [], - log: true, - deterministicDeployment: true, - }) - await deploy('SafeL2', { - from: deployer, - contract: SafeL2, - args: [], - log: true, - deterministicDeployment: true, - }) - await deploy('SafeProxyFactory', { - from: deployer, - contract: SafeProxyFactory, - args: [], - log: true, - deterministicDeployment: true, - }) -} - -deploy.tags = ['safe'] - -export default deploy +export default deploySafe diff --git a/modules/4337/test/e2e/4337NestedSafe.spec.ts b/modules/4337/test/e2e/4337NestedSafe.spec.ts index 6059fdebc..449068ba4 100644 --- a/modules/4337/test/e2e/4337NestedSafe.spec.ts +++ b/modules/4337/test/e2e/4337NestedSafe.spec.ts @@ -290,7 +290,7 @@ const buildNestedSafeOp = async ( ) } -describe('E2E - Nested Safes With An Execution Initiated by a Leaf 4337 Safe', () => { +describe('Nested Safes With An Execution Initiated by a Leaf 4337 Safe [@4337]', () => { before(function () { if (network.name !== 'localhost') { this.skip() diff --git a/modules/4337/test/e2e/LocalBundler.spec.ts b/modules/4337/test/e2e/LocalBundler.spec.ts index fef9561df..7c7bdd158 100644 --- a/modules/4337/test/e2e/LocalBundler.spec.ts +++ b/modules/4337/test/e2e/LocalBundler.spec.ts @@ -6,7 +6,7 @@ import { chainId, timestamp } from '../utils/encoding' import { Safe4337 } from '../../src/utils/safe' import { bundlerRpc, prepareAccounts, waitForUserOp } from '../utils/e2e' -describe('E2E - Local Bundler', () => { +describe('Local Bundler [@4337]', () => { before(function () { if (network.name !== 'localhost') { this.skip() diff --git a/modules/4337/test/e2e/SingletonSigners.spec.ts b/modules/4337/test/e2e/SingletonSigners.spec.ts index 134cb76e1..d7b977918 100644 --- a/modules/4337/test/e2e/SingletonSigners.spec.ts +++ b/modules/4337/test/e2e/SingletonSigners.spec.ts @@ -8,7 +8,7 @@ import { } from '../../src/utils/userOp' import { bundlerRpc, encodeMultiSendTransactions, prepareAccounts, waitForUserOp } from '../utils/e2e' -describe('E2E - Singleton Signers', () => { +describe('Singleton Signers [@4337]', () => { before(function () { if (network.name !== 'localhost') { this.skip() diff --git a/modules/4337/test/e2e/UniqueSigner.spec.ts b/modules/4337/test/e2e/UniqueSigner.spec.ts index 16a100834..dc923ded9 100644 --- a/modules/4337/test/e2e/UniqueSigner.spec.ts +++ b/modules/4337/test/e2e/UniqueSigner.spec.ts @@ -4,7 +4,7 @@ import { bundlerRpc, prepareAccounts, waitForUserOp } from '../utils/e2e' import { chainId } from '../utils/encoding' import { packGasParameters, unpackUserOperation } from '../../src/utils/userOp' -describe('E2E - Unique Signers', () => { +describe('Unique Signers [@4337]', () => { before(function () { if (network.name !== 'localhost') { this.skip() diff --git a/modules/4337/test/e2e/WebAuthnSigner.spec.ts b/modules/4337/test/e2e/WebAuthnSigner.spec.ts index 5f8f3165d..bdb51052b 100644 --- a/modules/4337/test/e2e/WebAuthnSigner.spec.ts +++ b/modules/4337/test/e2e/WebAuthnSigner.spec.ts @@ -11,7 +11,7 @@ import { } from '../utils/webauthn' import { packGasParameters, unpackUserOperation } from '../../src/utils/userOp' -describe('E2E - WebAuthn Signers', () => { +describe('WebAuthn Signers [@4337]', () => { before(function () { if (network.name !== 'localhost') { this.skip() diff --git a/modules/4337/test/e2e/WebAuthnSingletonSigner.spec.ts b/modules/4337/test/e2e/WebAuthnSingletonSigner.spec.ts index e61ad22f4..50eb3d408 100644 --- a/modules/4337/test/e2e/WebAuthnSingletonSigner.spec.ts +++ b/modules/4337/test/e2e/WebAuthnSingletonSigner.spec.ts @@ -15,7 +15,7 @@ import { } from '../../src/utils/userOp' import { buildSignatureBytes } from '../../src/utils/execution' -describe('E2E - WebAuthn Singleton Signers', () => { +describe('WebAuthn Singleton Signers [@4337]', () => { before(function () { if (network.name !== 'localhost') { this.skip() diff --git a/modules/4337/test/e2e/run.sh b/modules/4337/test/e2e/run.sh deleted file mode 100755 index 3a77a3280..000000000 --- a/modules/4337/test/e2e/run.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env bash - -DOCKER="${DOCKER:-docker}" - -bundler_container="bundler" -if [[ -n "$USE_UPSTREAM_BUNDLER" ]]; then - bundler_container="bundler-upstream" -fi - -"$DOCKER" compose up -d geth "$bundler_container" - -# wait for containers to start up -SECONDS=0 -until curl -fs http://localhost:8545 >/dev/null && curl -fs http://localhost:3000 >/dev/null; do - if [[ $SECONDS -gt 30 ]]; then - echo "ERROR: timeout waiting for local node and bundler to start" - "$DOCKER" compose logs - exit 1 - fi - sleep 1 -done - -hardhat test --deploy-fixture --network localhost --grep '^E2E - ' -success=$? - -"$DOCKER" compose down - -# exit with the E2E test's exit code -exit $success diff --git a/modules/allowances/package.json b/modules/allowances/package.json index ac00c787d..e35e93616 100644 --- a/modules/allowances/package.json +++ b/modules/allowances/package.json @@ -42,8 +42,8 @@ "chai": "^4.2.0", "dotenv": "^16.4.4", "ethers": "^6.11.1", - "hardhat": "^2.20.1", - "hardhat-deploy": "^0.11.45", + "hardhat": "^2.21.0", + "hardhat-deploy": "^0.12.1", "hardhat-gas-reporter": "^1.0.10", "rimraf": "^5.0.5", "solhint": "4.1.1", diff --git a/modules/passkey/docker-compose.yaml b/modules/passkey/docker-compose.yaml deleted file mode 100644 index fee33d682..000000000 --- a/modules/passkey/docker-compose.yaml +++ /dev/null @@ -1,35 +0,0 @@ -version: '3.8' - -services: - geth: - image: docker.io/ethereum/client-go:stable - restart: always - environment: - GETH_DEV: 'true' - GETH_HTTP: 'true' - GETH_HTTP_ADDR: '0.0.0.0' - GETH_HTTP_API: 'personal,eth,net,web3,debug' - GETH_HTTP_VHOSTS: '*' - GETH_RPC_ALLOW_UNPROTECTED_TXS: 'true' - ports: - - 8545:8545 - - bundler: - build: - context: . - dockerfile: docker/bundler/Dockerfile - restart: always - command: ['--auto', '--network=http://geth:8545'] - ports: - - 3000:3000 - - bundler-upstream: - build: - context: . - dockerfile: docker/bundler/Dockerfile - args: - TAG: main - restart: always - command: ['--auto', '--network=http://geth:8545'] - ports: - - 3000:3000 diff --git a/modules/passkey/hardhat.config.ts b/modules/passkey/hardhat.config.ts index 405a5b7bb..7ca871482 100644 --- a/modules/passkey/hardhat.config.ts +++ b/modules/passkey/hardhat.config.ts @@ -15,10 +15,10 @@ const config: HardhatUserConfig = { networks: { localhost: { url: 'http://localhost:8545', - tags: ['dev'], + tags: ['dev', 'entrypoint', 'safe'], }, hardhat: { - tags: ['test'], + tags: ['test', 'entrypoint', 'safe'], }, }, solidity: { diff --git a/modules/passkey/package.json b/modules/passkey/package.json index a52477edf..7eb510bcd 100644 --- a/modules/passkey/package.json +++ b/modules/passkey/package.json @@ -37,13 +37,15 @@ "lint:sol": "solhint 'contracts/**/*.sol'", "lint:ts": "eslint .", "test": "hardhat test", - "test:4337": "./test/4337/run.sh" + "test:4337": "4337-local-bundler-test", + "test:4337:upstream": "USE_UPSTREAM_BUNDLER=1 4337-local-bundler-test" }, "devDependencies": { "@account-abstraction/contracts": "^0.7.0", "@noble/curves": "^1.3.0", "@nomicfoundation/hardhat-toolbox": "^4.0.0", "@safe-global/safe-4337": "^0.3.0", + "@safe-global/safe-4337-local-bundler": "^0.0.0", "@simplewebauthn/server": "^9.0.3", "cbor": "^9.0.2", "dotenv": "^16.4.5", diff --git a/modules/passkey/src/deploy/entrypoint.ts b/modules/passkey/src/deploy/entrypoint.ts new file mode 100644 index 000000000..5a7d29f06 --- /dev/null +++ b/modules/passkey/src/deploy/entrypoint.ts @@ -0,0 +1,3 @@ +import { deployEntryPoint } from '@safe-global/safe-4337-local-bundler' + +export default deployEntryPoint diff --git a/modules/passkey/src/deploy/safe.ts b/modules/passkey/src/deploy/safe.ts index 5137033aa..9a91a3377 100644 --- a/modules/passkey/src/deploy/safe.ts +++ b/modules/passkey/src/deploy/safe.ts @@ -1,58 +1,3 @@ -import MultiSend from '@safe-global/safe-contracts/build/artifacts/contracts/libraries/MultiSend.sol/MultiSend.json' -import SafeProxyFactory from '@safe-global/safe-contracts/build/artifacts/contracts/proxies/SafeProxyFactory.sol/SafeProxyFactory.json' -import SafeL2 from '@safe-global/safe-contracts/build/artifacts/contracts/SafeL2.sol/SafeL2.json' -import Safe4337Module from '@safe-global/safe-4337/build/artifacts/contracts/Safe4337Module.sol/Safe4337Module.json' -import SafeModuleSetup from '@safe-global/safe-4337/build/artifacts/contracts/SafeModuleSetup.sol/SafeModuleSetup.json' -import { DeployFunction } from 'hardhat-deploy/types' +import { deploySafe } from '@safe-global/safe-4337-local-bundler' -const deploy: DeployFunction = async ({ deployments, getNamedAccounts, network }) => { - if (!network.tags.dev && !network.tags.test) { - return - } - - const { deployer } = await getNamedAccounts() - const { deploy } = deployments - - const entryPoint = await deployments.get('EntryPoint') - - await deploy('MultiSend', { - from: deployer, - contract: MultiSend, - args: [], - log: true, - deterministicDeployment: true, - }) - await deploy('SafeL2', { - from: deployer, - contract: SafeL2, - args: [], - log: true, - deterministicDeployment: true, - }) - await deploy('SafeProxyFactory', { - from: deployer, - contract: SafeProxyFactory, - args: [], - log: true, - deterministicDeployment: true, - }) - await deploy('SafeModuleSetup', { - from: deployer, - contract: SafeModuleSetup, - args: [], - log: true, - deterministicDeployment: true, - }) - await deploy('Safe4337Module', { - from: deployer, - contract: Safe4337Module, - args: [entryPoint.address], - log: true, - deterministicDeployment: true, - }) -} - -deploy.dependencies = ['entrypoint'] -deploy.tags = ['safe'] - -export default deploy +export default deploySafe diff --git a/modules/passkey/src/deploy/safe4337.ts b/modules/passkey/src/deploy/safe4337.ts new file mode 100644 index 000000000..a77960062 --- /dev/null +++ b/modules/passkey/src/deploy/safe4337.ts @@ -0,0 +1,33 @@ +import Safe4337Module from '@safe-global/safe-4337/build/artifacts/contracts/Safe4337Module.sol/Safe4337Module.json' +import SafeModuleSetup from '@safe-global/safe-4337/build/artifacts/contracts/SafeModuleSetup.sol/SafeModuleSetup.json' +import { DeployFunction } from 'hardhat-deploy/types' + +const deploy: DeployFunction = async ({ deployments, getNamedAccounts, network }) => { + if (!network.tags.safe) { + return + } + + const { deployer } = await getNamedAccounts() + const { deploy } = deployments + + const entryPoint = await deployments.get('EntryPoint') + + await deploy('SafeModuleSetup', { + from: deployer, + contract: SafeModuleSetup, + args: [], + log: true, + deterministicDeployment: true, + }) + await deploy('Safe4337Module', { + from: deployer, + contract: Safe4337Module, + args: [entryPoint.address], + log: true, + deterministicDeployment: true, + }) +} + +deploy.dependencies = ['entrypoint'] + +export default deploy diff --git a/modules/passkey/src/deploy/webauthn.ts b/modules/passkey/src/deploy/webauthn.ts index 6fc7f6a04..38dbb51df 100644 --- a/modules/passkey/src/deploy/webauthn.ts +++ b/modules/passkey/src/deploy/webauthn.ts @@ -1,10 +1,6 @@ import { DeployFunction } from 'hardhat-deploy/types' -const deploy: DeployFunction = async ({ deployments, getNamedAccounts, network }) => { - if (!network.tags.dev && !network.tags.test) { - return - } - +const deploy: DeployFunction = async ({ deployments, getNamedAccounts }) => { const { deployer } = await getNamedAccounts() const { deploy } = deployments diff --git a/modules/passkey/test/4337/run.sh b/modules/passkey/test/4337/run.sh deleted file mode 100755 index 943f2a359..000000000 --- a/modules/passkey/test/4337/run.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env bash - -DOCKER="${DOCKER:-docker}" - -bundler_container="bundler" -if [[ -n "$USE_UPSTREAM_BUNDLER" ]]; then - bundler_container="bundler-upstream" -fi - -"$DOCKER" compose up -d geth "$bundler_container" - -# wait for containers to start up -SECONDS=0 -until curl -fs http://localhost:8545 >/dev/null && curl -fs http://localhost:3000 >/dev/null; do - if [[ $SECONDS -gt 30 ]]; then - echo "ERROR: timeout waiting for local node and bundler to start" - "$DOCKER" compose logs - exit 1 - fi - sleep 1 -done - -hardhat test --deploy-fixture --network localhost --grep '@4337' -success=$? - -"$DOCKER" compose down - -# exit with the E2E test's exit code -exit $success diff --git a/package-lock.json b/package-lock.json index fbc5a0354..a26ac5fe0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -568,6 +568,7 @@ "@noble/curves": "^1.3.0", "@nomicfoundation/hardhat-toolbox": "^4.0.0", "@openzeppelin/contracts": "^5.0.2", + "@safe-global/safe-4337-local-bundler": "^0.0.0", "@simplewebauthn/server": "9.0.0", "@types/chai": "^4.3.11", "@types/mocha": "^10.0.6", @@ -577,8 +578,8 @@ "debug": "^4.3.4", "dotenv": "^16.4.4", "ethers": "^6.11.1", - "hardhat": "^2.20.1", - "hardhat-deploy": "0.11.45", + "hardhat": "^2.21.0", + "hardhat-deploy": "^0.12.1", "husky": "^9.0.11", "solc": "^0.8.24", "solhint": "^4.1.1", @@ -908,8 +909,8 @@ "chai": "^4.2.0", "dotenv": "^16.4.4", "ethers": "^6.11.1", - "hardhat": "^2.20.1", - "hardhat-deploy": "^0.11.45", + "hardhat": "^2.21.0", + "hardhat-deploy": "^0.12.1", "hardhat-gas-reporter": "^1.0.10", "rimraf": "^5.0.5", "solhint": "4.1.1", @@ -1190,6 +1191,7 @@ "@noble/curves": "^1.3.0", "@nomicfoundation/hardhat-toolbox": "^4.0.0", "@safe-global/safe-4337": "^0.3.0", + "@safe-global/safe-4337-local-bundler": "^0.0.0", "@simplewebauthn/server": "^9.0.3", "cbor": "^9.0.2", "dotenv": "^16.4.5", @@ -1204,213 +1206,6 @@ "license": "MIT", "peer": true }, - "modules/passkey/node_modules/@ethersproject/contracts": { - "version": "5.7.0", - "dev": true, - "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" - } - }, - "modules/passkey/node_modules/@ethersproject/hdnode": { - "version": "5.7.0", - "dev": true, - "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" - } - }, - "modules/passkey/node_modules/@ethersproject/json-wallets": { - "version": "5.7.0", - "dev": true, - "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" - } - }, - "modules/passkey/node_modules/@ethersproject/json-wallets/node_modules/aes-js": { - "version": "3.0.0", - "dev": true, - "license": "MIT" - }, - "modules/passkey/node_modules/@ethersproject/pbkdf2": { - "version": "5.7.0", - "dev": true, - "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" - } - }, - "modules/passkey/node_modules/@ethersproject/solidity": { - "version": "5.7.0", - "dev": true, - "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" - } - }, - "modules/passkey/node_modules/@ethersproject/units": { - "version": "5.7.0", - "dev": true, - "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" - } - }, - "modules/passkey/node_modules/@ethersproject/wallet": { - "version": "5.7.0", - "dev": true, - "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" - } - }, - "modules/passkey/node_modules/@ethersproject/wordlists": { - "version": "5.7.0", - "dev": true, - "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" - } - }, "modules/passkey/node_modules/@noble/curves": { "version": "1.2.0", "dev": true, @@ -1525,51 +1320,6 @@ "license": "MIT", "peer": true }, - "modules/passkey/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "modules/passkey/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "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" - } - }, - "modules/passkey/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "modules/passkey/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, "modules/passkey/node_modules/dotenv": { "version": "16.4.5", "dev": true, @@ -1624,109 +1374,11 @@ "node": ">=10" } }, - "modules/passkey/node_modules/hardhat-deploy": { - "version": "0.12.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@ethersproject/abi": "^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/contracts": "^5.7.0", - "@ethersproject/providers": "^5.7.2", - "@ethersproject/solidity": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/wallet": "^5.7.0", - "@types/qs": "^6.9.7", - "axios": "^0.21.1", - "chalk": "^4.1.2", - "chokidar": "^3.5.2", - "debug": "^4.3.2", - "enquirer": "^2.3.6", - "ethers": "^5.7.0", - "form-data": "^4.0.0", - "fs-extra": "^10.0.0", - "match-all": "^1.2.6", - "murmur-128": "^0.2.1", - "qs": "^6.9.4", - "zksync-ethers": "^5.0.0" - } - }, - "modules/passkey/node_modules/hardhat-deploy/node_modules/ethers": { - "version": "5.7.2", - "dev": true, - "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/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" - } - }, - "modules/passkey/node_modules/hardhat-deploy/node_modules/fs-extra": { - "version": "10.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "modules/passkey/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "modules/passkey/node_modules/jsonfile": { "version": "6.1.0", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "universalify": "^2.0.0" }, @@ -1734,17 +1386,6 @@ "graceful-fs": "^4.1.6" } }, - "modules/passkey/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "modules/passkey/node_modules/tslib": { "version": "2.4.0", "dev": true, @@ -1755,6 +1396,7 @@ "version": "2.0.1", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">= 10.0.0" } @@ -3886,6 +3528,10 @@ "resolved": "modules/4337", "link": true }, + "node_modules/@safe-global/safe-4337-local-bundler": { + "resolved": "packages/4337-local-bundler", + "link": true + }, "node_modules/@safe-global/safe-allowance-module": { "resolved": "modules/allowances", "link": true @@ -4480,7 +4126,6 @@ }, "node_modules/@types/qs": { "version": "6.9.11", - "dev": true, "license": "MIT" }, "node_modules/@types/react": { @@ -5552,7 +5197,6 @@ }, "node_modules/ansi-colors": { "version": "4.1.3", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -5842,7 +5486,6 @@ }, "node_modules/axios": { "version": "0.21.4", - "dev": true, "license": "MIT", "dependencies": { "follow-redirects": "^1.14.0" @@ -6137,7 +5780,6 @@ }, "node_modules/call-bind": { "version": "1.0.5", - "dev": true, "license": "MIT", "dependencies": { "function-bind": "^1.1.2", @@ -6803,7 +6445,6 @@ }, "node_modules/define-data-property": { "version": "1.1.1", - "dev": true, "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.1", @@ -6973,7 +6614,6 @@ }, "node_modules/enquirer": { "version": "2.4.1", - "dev": true, "license": "MIT", "dependencies": { "ansi-colors": "^4.1.1", @@ -8985,7 +8625,6 @@ }, "node_modules/fmix": { "version": "0.1.0", - "dev": true, "license": "MIT", "dependencies": { "imul": "^1.0.0" @@ -9082,7 +8721,6 @@ }, "node_modules/function-bind": { "version": "1.1.2", - "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9130,7 +8768,6 @@ }, "node_modules/get-intrinsic": { "version": "1.2.2", - "dev": true, "license": "MIT", "dependencies": { "function-bind": "^1.1.2", @@ -9327,7 +8964,6 @@ }, "node_modules/gopd": { "version": "1.0.1", - "dev": true, "license": "MIT", "dependencies": { "get-intrinsic": "^1.1.3" @@ -9362,7 +8998,6 @@ }, "node_modules/graceful-fs": { "version": "4.2.11", - "dev": true, "license": "ISC" }, "node_modules/graphemer": { @@ -9407,8 +9042,9 @@ }, "node_modules/hardhat": { "version": "2.21.0", + "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.21.0.tgz", + "integrity": "sha512-8DlJAVJDEVHaV1sh9FLuKLLgCFv9EAJ+M+8IbjSIPgoeNo3ss5L1HgGBMfnI88c7OzMEZkdcuyGoobFeK3Orqw==", "dev": true, - "license": "MIT", "dependencies": { "@ethersproject/abi": "^5.1.2", "@metamask/eth-sig-util": "^4.0.0", @@ -9471,9 +9107,9 @@ } }, "node_modules/hardhat-deploy": { - "version": "0.11.45", - "dev": true, - "license": "MIT", + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/hardhat-deploy/-/hardhat-deploy-0.12.1.tgz", + "integrity": "sha512-ayPJqBCElzPeiwdHUEV0rKQ6NvKStjQAxCqCPlsavQVaxl7uZUHt/d+XbLqglVFqOOpHHs6L9K4W1vxPbsOy5Q==", "dependencies": { "@ethersproject/abi": "^5.7.0", "@ethersproject/abstract-signer": "^5.7.0", @@ -9498,12 +9134,13 @@ "match-all": "^1.2.6", "murmur-128": "^0.2.1", "qs": "^6.9.4", - "zksync-web3": "^0.14.3" + "zksync-ethers": "^5.0.0" } }, "node_modules/hardhat-deploy/node_modules/@ethersproject/contracts": { "version": "5.7.0", - "dev": true, + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", + "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", "funding": [ { "type": "individual", @@ -9514,7 +9151,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/abi": "^5.7.0", "@ethersproject/abstract-provider": "^5.7.0", @@ -9530,7 +9166,8 @@ }, "node_modules/hardhat-deploy/node_modules/@ethersproject/hdnode": { "version": "5.7.0", - "dev": true, + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", + "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", "funding": [ { "type": "individual", @@ -9541,7 +9178,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/abstract-signer": "^5.7.0", "@ethersproject/basex": "^5.7.0", @@ -9559,7 +9195,8 @@ }, "node_modules/hardhat-deploy/node_modules/@ethersproject/json-wallets": { "version": "5.7.0", - "dev": true, + "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", @@ -9570,7 +9207,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/abstract-signer": "^5.7.0", "@ethersproject/address": "^5.7.0", @@ -9589,7 +9225,8 @@ }, "node_modules/hardhat-deploy/node_modules/@ethersproject/pbkdf2": { "version": "5.7.0", - "dev": true, + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", + "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", "funding": [ { "type": "individual", @@ -9600,7 +9237,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/sha2": "^5.7.0" @@ -9608,7 +9244,8 @@ }, "node_modules/hardhat-deploy/node_modules/@ethersproject/solidity": { "version": "5.7.0", - "dev": true, + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", + "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", "funding": [ { "type": "individual", @@ -9619,7 +9256,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/bignumber": "^5.7.0", "@ethersproject/bytes": "^5.7.0", @@ -9631,7 +9267,8 @@ }, "node_modules/hardhat-deploy/node_modules/@ethersproject/units": { "version": "5.7.0", - "dev": true, + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", + "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", "funding": [ { "type": "individual", @@ -9642,7 +9279,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/bignumber": "^5.7.0", "@ethersproject/constants": "^5.7.0", @@ -9651,7 +9287,8 @@ }, "node_modules/hardhat-deploy/node_modules/@ethersproject/wallet": { "version": "5.7.0", - "dev": true, + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", + "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", "funding": [ { "type": "individual", @@ -9662,7 +9299,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/abstract-provider": "^5.7.0", "@ethersproject/abstract-signer": "^5.7.0", @@ -9683,7 +9319,8 @@ }, "node_modules/hardhat-deploy/node_modules/@ethersproject/wordlists": { "version": "5.7.0", - "dev": true, + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", + "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", "funding": [ { "type": "individual", @@ -9694,7 +9331,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/hash": "^5.7.0", @@ -9705,12 +9341,11 @@ }, "node_modules/hardhat-deploy/node_modules/aes-js": { "version": "3.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==" }, "node_modules/hardhat-deploy/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -9724,7 +9359,6 @@ }, "node_modules/hardhat-deploy/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -9739,7 +9373,6 @@ }, "node_modules/hardhat-deploy/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -9750,12 +9383,12 @@ }, "node_modules/hardhat-deploy/node_modules/color-name": { "version": "1.1.4", - "dev": true, "license": "MIT" }, "node_modules/hardhat-deploy/node_modules/ethers": { "version": "5.7.2", - "dev": true, + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", "funding": [ { "type": "individual", @@ -9766,7 +9399,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/abi": "5.7.0", "@ethersproject/abstract-provider": "5.7.0", @@ -9802,7 +9434,6 @@ }, "node_modules/hardhat-deploy/node_modules/fs-extra": { "version": "10.1.0", - "dev": true, "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", @@ -9815,7 +9446,6 @@ }, "node_modules/hardhat-deploy/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -9823,7 +9453,6 @@ }, "node_modules/hardhat-deploy/node_modules/jsonfile": { "version": "6.1.0", - "dev": true, "license": "MIT", "dependencies": { "universalify": "^2.0.0" @@ -9834,7 +9463,6 @@ }, "node_modules/hardhat-deploy/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -9845,20 +9473,11 @@ }, "node_modules/hardhat-deploy/node_modules/universalify": { "version": "2.0.1", - "dev": true, "license": "MIT", "engines": { "node": ">= 10.0.0" } }, - "node_modules/hardhat-deploy/node_modules/zksync-web3": { - "version": "0.14.4", - "dev": true, - "license": "MIT", - "peerDependencies": { - "ethers": "^5.7.0" - } - }, "node_modules/hardhat-gas-reporter": { "version": "1.0.10", "dev": true, @@ -9890,7 +9509,6 @@ }, "node_modules/has-property-descriptors": { "version": "1.0.1", - "dev": true, "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.2" @@ -9901,7 +9519,6 @@ }, "node_modules/has-proto": { "version": "1.0.1", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -9912,7 +9529,6 @@ }, "node_modules/has-symbols": { "version": "1.0.3", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -9977,7 +9593,6 @@ }, "node_modules/hasown": { "version": "2.0.0", - "dev": true, "license": "MIT", "dependencies": { "function-bind": "^1.1.2" @@ -10175,7 +9790,6 @@ }, "node_modules/imul": { "version": "1.0.1", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -11070,7 +10684,6 @@ }, "node_modules/match-all": { "version": "1.2.6", - "dev": true, "license": "MIT" }, "node_modules/md5.js": { @@ -11427,7 +11040,6 @@ }, "node_modules/murmur-128": { "version": "0.2.1", - "dev": true, "license": "MIT", "dependencies": { "encode-utf8": "^1.0.2", @@ -11612,7 +11224,6 @@ }, "node_modules/object-inspect": { "version": "1.13.1", - "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -12407,7 +12018,6 @@ }, "node_modules/qs": { "version": "6.11.2", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.0.4" @@ -13041,7 +12651,6 @@ }, "node_modules/set-function-length": { "version": "1.1.1", - "dev": true, "license": "MIT", "dependencies": { "define-data-property": "^1.1.1", @@ -13134,7 +12743,6 @@ }, "node_modules/side-channel": { "version": "1.0.4", - "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.0", @@ -15268,7 +14876,6 @@ }, "node_modules/zksync-ethers": { "version": "5.4.0", - "dev": true, "license": "MIT", "dependencies": { "ethers": "~5.7.0" @@ -15279,7 +14886,6 @@ }, "node_modules/zksync-ethers/node_modules/@ethersproject/contracts": { "version": "5.7.0", - "dev": true, "funding": [ { "type": "individual", @@ -15306,7 +14912,6 @@ }, "node_modules/zksync-ethers/node_modules/@ethersproject/hdnode": { "version": "5.7.0", - "dev": true, "funding": [ { "type": "individual", @@ -15335,7 +14940,6 @@ }, "node_modules/zksync-ethers/node_modules/@ethersproject/json-wallets": { "version": "5.7.0", - "dev": true, "funding": [ { "type": "individual", @@ -15365,7 +14969,6 @@ }, "node_modules/zksync-ethers/node_modules/@ethersproject/pbkdf2": { "version": "5.7.0", - "dev": true, "funding": [ { "type": "individual", @@ -15384,7 +14987,6 @@ }, "node_modules/zksync-ethers/node_modules/@ethersproject/solidity": { "version": "5.7.0", - "dev": true, "funding": [ { "type": "individual", @@ -15407,7 +15009,6 @@ }, "node_modules/zksync-ethers/node_modules/@ethersproject/units": { "version": "5.7.0", - "dev": true, "funding": [ { "type": "individual", @@ -15427,7 +15028,6 @@ }, "node_modules/zksync-ethers/node_modules/@ethersproject/wallet": { "version": "5.7.0", - "dev": true, "funding": [ { "type": "individual", @@ -15459,7 +15059,6 @@ }, "node_modules/zksync-ethers/node_modules/@ethersproject/wordlists": { "version": "5.7.0", - "dev": true, "funding": [ { "type": "individual", @@ -15481,12 +15080,10 @@ }, "node_modules/zksync-ethers/node_modules/aes-js": { "version": "3.0.0", - "dev": true, "license": "MIT" }, "node_modules/zksync-ethers/node_modules/ethers": { "version": "5.7.2", - "dev": true, "funding": [ { "type": "individual", @@ -15537,6 +15134,18 @@ "funding": { "url": "https://github.com/sponsors/colinhacks" } + }, + "packages/4337-local-bundler": { + "name": "@safe-global/safe-4337-local-bundler", + "version": "0.0.0", + "hasInstallScript": true, + "license": "LGPL-3.0-only", + "dependencies": { + "hardhat-deploy": "^0.12.1" + }, + "bin": { + "local-bundler-test": "dist/bin/test.js" + } } } } diff --git a/package.json b/package.json index 2dd1df5d7..aa48f7437 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,8 @@ ], "scripts": { "fmt:global": "prettier --write .", - "fmt:global-check": "prettier --check ." + "fmt:global-check": "prettier --check .", + "postinstall": "npm rebuild --skip-scripts @safe-global/safe-4337-local-bundler" }, "repository": { "type": "git", diff --git a/packages/4337-local-bundler/.eslintignore b/packages/4337-local-bundler/.eslintignore new file mode 100644 index 000000000..849ddff3b --- /dev/null +++ b/packages/4337-local-bundler/.eslintignore @@ -0,0 +1 @@ +dist/ diff --git a/packages/4337-local-bundler/.gitignore b/packages/4337-local-bundler/.gitignore new file mode 100644 index 000000000..849ddff3b --- /dev/null +++ b/packages/4337-local-bundler/.gitignore @@ -0,0 +1 @@ +dist/ diff --git a/packages/4337-local-bundler/README.md b/packages/4337-local-bundler/README.md new file mode 100644 index 000000000..5f24a4bfd --- /dev/null +++ b/packages/4337-local-bundler/README.md @@ -0,0 +1,3 @@ +# ERC-4337 Local Bundler + +This repository contains tools for setting up and using a local ERC-4337 bundler for testing. While on-chain compatibility with the ERC-4337 `EntryPoint` contract is important, arguably the most challenging part of being compatible with the standard is ensuring that the account follows the user operation validation and account deployment rules that are enforced by the off-chain bundlers. As such, this repository provides tools to run a local development node with the reference ERC-4337 bundler for testing purposes. diff --git a/modules/4337/docker-compose.yaml b/packages/4337-local-bundler/docker-compose.yaml similarity index 83% rename from modules/4337/docker-compose.yaml rename to packages/4337-local-bundler/docker-compose.yaml index fee33d682..6ccfae84c 100644 --- a/modules/4337/docker-compose.yaml +++ b/packages/4337-local-bundler/docker-compose.yaml @@ -20,6 +20,8 @@ services: dockerfile: docker/bundler/Dockerfile restart: always command: ['--auto', '--network=http://geth:8545'] + environment: + DEBUG: 'aa.exec,aa.exec.cron,aa.events,aa.mempool' ports: - 3000:3000 @@ -31,5 +33,7 @@ services: TAG: main restart: always command: ['--auto', '--network=http://geth:8545'] + environment: + DEBUG: 'aa.exec,aa.exec.cron,aa.events,aa.mempool' ports: - 3000:3000 diff --git a/modules/passkey/docker/bundler/Dockerfile b/packages/4337-local-bundler/docker/bundler/Dockerfile similarity index 99% rename from modules/passkey/docker/bundler/Dockerfile rename to packages/4337-local-bundler/docker/bundler/Dockerfile index 86b79b9f1..61ed0c454 100644 --- a/modules/passkey/docker/bundler/Dockerfile +++ b/packages/4337-local-bundler/docker/bundler/Dockerfile @@ -2,6 +2,7 @@ FROM docker.io/library/node:18 # v0.7.0 ARG TAG=26e4f4c + RUN git clone https://github.com/eth-infinitism/bundler /src/bundler WORKDIR /src/bundler RUN git checkout ${TAG} diff --git a/packages/4337-local-bundler/package.json b/packages/4337-local-bundler/package.json new file mode 100644 index 000000000..ceaf6e913 --- /dev/null +++ b/packages/4337-local-bundler/package.json @@ -0,0 +1,22 @@ +{ + "name": "@safe-global/safe-4337-local-bundler", + "version": "0.0.0", + "private": true, + "license": "LGPL-3.0-only", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "bin": { + "4337-local-bundler-test": "dist/bin/test.js" + }, + "scripts": { + "build": "npx rimraf dist && tsc && chmod +x dist/bin/*.js", + "lint": "eslint .", + "prepack": "npm run build", + "prepublish": "npm run build", + "postinstall": "npm run build" + }, + "dependencies": { + "hardhat-deploy": "^0.12.1", + "node-fetch": "^2.7.0" + } +} diff --git a/packages/4337-local-bundler/src/bin/test.ts b/packages/4337-local-bundler/src/bin/test.ts new file mode 100644 index 000000000..bd6a98538 --- /dev/null +++ b/packages/4337-local-bundler/src/bin/test.ts @@ -0,0 +1,68 @@ +#!/usr/bin/env node + +import childProcess, { SpawnOptions } from 'node:child_process' +import path from 'node:path' + +const { DOCKER, USE_UPSTREAM_BUNDLER } = process.env + +const root = path.join(__dirname, '..', '..') + +const docker = DOCKER || 'docker' +const bundler = USE_UPSTREAM_BUNDLER === '1' ? 'bundler-upstream' : 'bundler' + +async function exec(command: string, args: string[], options: Omit = {}) { + const process = childProcess.spawn(command, args, { ...options, stdio: 'inherit' }) + await new Promise((resolve, reject) => { + process.on('exit', (code) => { + if (code === 0) { + resolve(undefined) + } else { + reject(new Error(`'${command}' process exited with code ${code}`)) + } + }) + }) +} + +async function checkRpc(...urls: string[]) { + const statuses = await Promise.all( + urls.map(async (url) => { + try { + const response = await fetch(url) + return response.ok + } catch (err) { + return false + } + }), + ) + return statuses.every((ok) => ok) +} + +async function main() { + console.log('==> Starting docker containers...') + await exec(docker, ['compose', 'up', '-d', 'geth', bundler], { cwd: root }) + + console.log('==> Waiting for RPC endpoints') + const start = Date.now() + const timeout = 60 * 1000 + while (!(await checkRpc('http://localhost:8545', 'http://localhost:3000'))) { + if (Date.now() - start > timeout) { + throw new Error('timeout waiting for local node and bundler to start') + } + } + + try { + console.log('==> Running tests') + await exec('hardhat', ['test', '--network', 'localhost', '--grep', '@4337']) + } finally { + console.log('==> Shutting down') + await exec(docker, ['compose', 'down'], { cwd: root }) + } +} + +main().catch((err) => { + console.error('ERROR: ', err) + if (err.stderr) { + console.log(err.stderr) + } + process.exitCode = 1 +}) diff --git a/modules/passkey/src/deploy/4337.ts b/packages/4337-local-bundler/src/deploy/entrypoint.ts similarity index 88% rename from modules/passkey/src/deploy/4337.ts rename to packages/4337-local-bundler/src/deploy/entrypoint.ts index 1b86a7e6c..8983b69bc 100644 --- a/modules/passkey/src/deploy/4337.ts +++ b/packages/4337-local-bundler/src/deploy/entrypoint.ts @@ -1,7 +1,11 @@ import EntryPoint from '@account-abstraction/contracts/artifacts/EntryPoint.json' import { DeployFunction } from 'hardhat-deploy/types' -const deploy: DeployFunction = async ({ deployments, getNamedAccounts }) => { +const deploy: DeployFunction = async ({ deployments, getNamedAccounts, network }) => { + if (!network.tags.entrypoint) { + return + } + const { deployer } = await getNamedAccounts() const { deploy } = deployments diff --git a/packages/4337-local-bundler/src/deploy/safe.ts b/packages/4337-local-bundler/src/deploy/safe.ts new file mode 100644 index 000000000..1e6749ffb --- /dev/null +++ b/packages/4337-local-bundler/src/deploy/safe.ts @@ -0,0 +1,39 @@ +import MultiSend from '@safe-global/safe-contracts/build/artifacts/contracts/libraries/MultiSend.sol/MultiSend.json' +import SafeProxyFactory from '@safe-global/safe-contracts/build/artifacts/contracts/proxies/SafeProxyFactory.sol/SafeProxyFactory.json' +import SafeL2 from '@safe-global/safe-contracts/build/artifacts/contracts/SafeL2.sol/SafeL2.json' +import { DeployFunction } from 'hardhat-deploy/types' + +const deploy: DeployFunction = async ({ deployments, getNamedAccounts, network }) => { + if (!network.tags.safe) { + return + } + + const { deployer } = await getNamedAccounts() + const { deploy } = deployments + + await deploy('MultiSend', { + from: deployer, + contract: MultiSend, + args: [], + log: true, + deterministicDeployment: true, + }) + await deploy('SafeL2', { + from: deployer, + contract: SafeL2, + args: [], + log: true, + deterministicDeployment: true, + }) + await deploy('SafeProxyFactory', { + from: deployer, + contract: SafeProxyFactory, + args: [], + log: true, + deterministicDeployment: true, + }) +} + +deploy.tags = ['safe'] + +export default deploy diff --git a/packages/4337-local-bundler/src/index.ts b/packages/4337-local-bundler/src/index.ts new file mode 100644 index 000000000..3d2da4d3a --- /dev/null +++ b/packages/4337-local-bundler/src/index.ts @@ -0,0 +1,6 @@ +import 'hardhat-deploy' + +import deployEntryPoint from './deploy/entrypoint' +import deploySafe from './deploy/safe' + +export { deployEntryPoint, deploySafe } diff --git a/packages/4337-local-bundler/tsconfig.json b/packages/4337-local-bundler/tsconfig.json new file mode 100644 index 000000000..0ae3997d0 --- /dev/null +++ b/packages/4337-local-bundler/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "target": "es2020", + "module": "commonjs", + "declaration": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "outDir": "./dist", + "strict": true, + "skipLibCheck": true, + "resolveJsonModule": true + } +} From 232e71b737bad9b0573665a9a40d5437dd267048 Mon Sep 17 00:00:00 2001 From: Nicholas Rodrigues Lordello Date: Mon, 18 Mar 2024 15:28:11 +0100 Subject: [PATCH 02/12] Move 4337 Testing Utilies To Local Bundler Package (#315) This PR moves the TS testing utility code for 4337 local bundler tests into the package introduced in #314. This is done in an effort to avoid duplicating the `test/utils/e2e.ts` file that contains setup functions for the local bundler setup that gets deployed from the `safe-4337-local-bundler` package. --- .github/workflows/certora_4337.yml | 8 +- examples/4337-gas-metering/package.json | 3 +- modules/4337/package.json | 11 +- modules/4337/src/utils/safe.ts | 60 +- modules/4337/src/utils/userOp.ts | 21 +- modules/4337/test/e2e/4337NestedSafe.spec.ts | 4 +- modules/4337/test/e2e/LocalBundler.spec.ts | 2 +- .../4337/test/e2e/SingletonSigners.spec.ts | 3 +- modules/4337/test/e2e/UniqueSigner.spec.ts | 2 +- modules/4337/test/e2e/WebAuthnSigner.spec.ts | 2 +- .../test/e2e/WebAuthnSingletonSigner.spec.ts | 3 +- modules/4337/test/utils/encoding.ts | 16 + modules/allowances/package.json | 1 - modules/passkey/package.json | 9 +- .../passkey/test/4337/WebAuthnSigner.spec.ts | 9 +- modules/passkey/test/utils/e2e.ts | 56 - modules/passkey/test/utils/encoding.ts | 5 - .../test/{ => webauthn}/WebAuthnShim.spec.ts | 2 +- package-lock.json | 992 ++++++++---------- package.json | 5 +- packages/4337-local-bundler/package.json | 9 +- packages/4337-local-bundler/src/index.ts | 4 +- .../4337-local-bundler/src/testing.ts | 33 +- .../4337-local-bundler/src/types/hardhat.ts | 2 + packages/4337-provider/.eslintignore | 1 + packages/4337-provider/.gitignore | 1 + packages/4337-provider/README.md | 3 + packages/4337-provider/package.json | 16 + packages/4337-provider/src/index.ts | 74 ++ packages/4337-provider/tsconfig.json | 13 + 30 files changed, 610 insertions(+), 760 deletions(-) delete mode 100644 modules/passkey/test/utils/e2e.ts delete mode 100644 modules/passkey/test/utils/encoding.ts rename modules/passkey/test/{ => webauthn}/WebAuthnShim.spec.ts (98%) rename modules/4337/test/utils/e2e.ts => packages/4337-local-bundler/src/testing.ts (68%) create mode 100644 packages/4337-local-bundler/src/types/hardhat.ts create mode 100644 packages/4337-provider/.eslintignore create mode 100644 packages/4337-provider/.gitignore create mode 100644 packages/4337-provider/README.md create mode 100644 packages/4337-provider/package.json create mode 100644 packages/4337-provider/src/index.ts create mode 100644 packages/4337-provider/tsconfig.json diff --git a/.github/workflows/certora_4337.yml b/.github/workflows/certora_4337.yml index 349917c22..cb6f1c011 100644 --- a/.github/workflows/certora_4337.yml +++ b/.github/workflows/certora_4337.yml @@ -20,9 +20,6 @@ jobs: strategy: matrix: rule: ['verify4337Module.sh', 'verifyTransactionExecutionMethods.sh', 'verifyValidationData.sh'] - defaults: - run: - working-directory: ./modules/4337 steps: - uses: actions/checkout@v3 @@ -30,10 +27,6 @@ jobs: uses: actions/setup-python@v4 with: { python-version: 3.11 } - - name: Install java - uses: actions/setup-java@v3 - with: { java-version: '17', java-package: jre, distribution: semeru } - - name: Install certora cli run: pip install -Iv certora-cli==6.1.3 @@ -47,6 +40,7 @@ jobs: run: npm ci - name: Verify rule ${{ matrix.rule }} + working-directory: ./modules/4337 run: | echo "key length" ${#CERTORAKEY} chmod +x ./certora/scripts/${{ matrix.rule }} diff --git a/examples/4337-gas-metering/package.json b/examples/4337-gas-metering/package.json index 822429fe7..927337374 100644 --- a/examples/4337-gas-metering/package.json +++ b/examples/4337-gas-metering/package.json @@ -16,7 +16,7 @@ "alchemy:erc721": "tsx ./alchemy/alchemy.ts erc721", "alchemy:erc721:paymaster": "tsx ./alchemy/alchemy.ts erc721 paymaster=true", "alchemy": "tsx ./alchemy/alchemy.ts", - "build": "npx rimraf dist && tsc", + "build": "rimraf dist && tsc", "fmt": "prettier --ignore-path .gitignore --write .", "fmt:check": "prettier --check .", "lint": "eslint ./alchemy && eslint ./gelato && eslint ./pimlico && eslint ./utils", @@ -60,7 +60,6 @@ }, "devDependencies": { "@types/node": "20.11.18", - "rimraf": "^5.0.5", "tsx": "4.7.1", "typescript": "^5.3.3" } diff --git a/modules/4337/package.json b/modules/4337/package.json index c02830625..cec30279d 100644 --- a/modules/4337/package.json +++ b/modules/4337/package.json @@ -15,8 +15,8 @@ ], "scripts": { "build": "npm run build:sol && npm run build:ts", - "build:ts": "npx rimraf dist && tsc", - "build:sol": "npx rimraf build && hardhat compile", + "build:ts": "rimraf dist && tsc", + "build:sol": "rimraf build typechain-types && hardhat compile", "test": "hardhat test --deploy-fixture", "test:4337": "4337-local-bundler-test", "test:4337:upstream": "USE_UPSTREAM_BUNDLER=1 4337-local-bundler-test", @@ -31,9 +31,7 @@ "lint:ts": "eslint ./src --fix && eslint ./test --fix", "fmt": "prettier --write ./contracts/**/*.sol", "fmt:check": "prettier --check ./**/*.sol", - "prepack": "npm run build", - "prepublish": "npm run build", - "postinstall": "npm run build" + "prepare": "npm run build" }, "repository": { "type": "git", @@ -55,6 +53,7 @@ "@nomicfoundation/hardhat-toolbox": "^4.0.0", "@openzeppelin/contracts": "^5.0.2", "@safe-global/safe-4337-local-bundler": "^0.0.0", + "@safe-global/safe-4337-provider": "^0.0.0", "@simplewebauthn/server": "9.0.0", "@types/chai": "^4.3.11", "@types/mocha": "^10.0.6", @@ -75,7 +74,7 @@ }, "overrides": { "@safe-global/safe-contracts": { - "ethers": "^6.11.0" + "ethers": "^6.11.1" } }, "dependencies": { diff --git a/modules/4337/src/utils/safe.ts b/modules/4337/src/utils/safe.ts index b6d0fed16..ae0bd55b9 100644 --- a/modules/4337/src/utils/safe.ts +++ b/modules/4337/src/utils/safe.ts @@ -1,9 +1,12 @@ -import { AddressLike, JsonRpcProvider, Provider, Signer, ethers } from 'ethers' +import { MultiProvider4337, RpcProvider } from '@safe-global/safe-4337-provider' +import { Provider, Signer, ethers } from 'ethers' // Import from Safe contracts repo once it is upgraded to ethers v6 and can be installed via npm import { MetaTransaction, SafeSignature, SignedSafeTransaction, buildSignatureBytes } from './execution' import { PackedUserOperation, UserOperation, EIP712_SAFE_OPERATION_TYPE, packGasParameters, unpackUserOperation } from './userOp' +export { MultiProvider4337 } + const AddressOne = '0x0000000000000000000000000000000000000001' const INTERFACES = new ethers.Interface([ @@ -91,61 +94,6 @@ const actionCalldata = (action: MetaTransaction): string => { return INTERFACES.encodeFunctionData('executeUserOp', [action.to, action.value, action.data, action.operation]) } -export interface RpcProvider extends Provider { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - send(method: string, params: unknown[]): Promise -} - -export class MultiProvider4337 extends JsonRpcProvider { - generalProvider: RpcProvider - constructor(aaProviderUrl: string, generalProvider: RpcProvider) { - super(aaProviderUrl) - this.generalProvider = generalProvider - } - - // eslint-disable-next-line @typescript-eslint/no-explicit-any - send(method: string, params: unknown[]): Promise { - if ( - [ - 'eth_supportedEntryPoints', - 'eth_estimateUserOperationGas', - 'eth_sendUserOperation', - 'eth_getUserOperationByHash', - 'eth_getUserOperationReceipt', - ].indexOf(method) >= 0 - ) { - return super.send(method, params) - } else { - return this.generalProvider.send(method, params) - } - } - - public async sendUserOperation(userOp: UserOperation, entryPoint: AddressLike): Promise { - const jsonUserOp = { - sender: ethers.getAddress(userOp.sender), - nonce: ethers.toBeHex(userOp.nonce), - callData: ethers.hexlify(userOp.callData), - callGasLimit: ethers.toBeHex(userOp.callGasLimit), - verificationGasLimit: ethers.toBeHex(userOp.verificationGasLimit), - preVerificationGas: ethers.toBeHex(userOp.preVerificationGas), - maxFeePerGas: ethers.toBeHex(userOp.maxFeePerGas), - maxPriorityFeePerGas: ethers.toBeHex(userOp.maxPriorityFeePerGas), - signature: ethers.hexlify(userOp.signature), - } as Record - if (userOp.factory) { - jsonUserOp.factory = ethers.getAddress(userOp.factory) - jsonUserOp.factoryData = ethers.hexlify(userOp.factoryData!) - } - if (userOp.paymaster) { - jsonUserOp.paymaster = ethers.getAddress(userOp.paymaster) - jsonUserOp.paymasterVerificationGasLimit = ethers.toBeHex(userOp.paymasterVerificationGasLimit!) - jsonUserOp.paymasterPostOpGasLimit = ethers.toBeHex(userOp.paymasterPostOpGasLimit!) - jsonUserOp.paymasterData = ethers.hexlify(userOp.paymasterData!) - } - return await super.send('eth_sendUserOperation', [jsonUserOp, await ethers.resolveAddress(entryPoint, this)]) - } -} - export class Safe4337Operation { private safe: Safe4337 private action: MetaTransaction diff --git a/modules/4337/src/utils/userOp.ts b/modules/4337/src/utils/userOp.ts index d2c7f1cf7..f9a16ccd8 100644 --- a/modules/4337/src/utils/userOp.ts +++ b/modules/4337/src/utils/userOp.ts @@ -1,8 +1,9 @@ +import { UserOperation } from '@safe-global/safe-4337-provider' import { BigNumberish, BytesLike, Contract, Signer, ethers } from 'ethers' import { PackedUserOperationStruct as PackedUserOperation } from '../../typechain-types/contracts/Safe4337Module' import { SafeSignature } from './execution' -export { PackedUserOperation } +export { PackedUserOperation, UserOperation } type OptionalExceptFor = Partial>> & Required> @@ -15,24 +16,6 @@ export type SafeUserOperation = { } & GasParameters & Omit -export type UserOperation = { - sender: string - nonce: BigNumberish - factory?: string - factoryData?: BytesLike - callData: BytesLike - callGasLimit: BigNumberish - verificationGasLimit: BigNumberish - preVerificationGas: BigNumberish - maxFeePerGas: BigNumberish - maxPriorityFeePerGas: BigNumberish - paymaster?: string - paymasterVerificationGasLimit?: BigNumberish - paymasterPostOpGasLimit?: BigNumberish - paymasterData?: BytesLike - signature: BytesLike -} - export const EIP712_SAFE_OPERATION_TYPE = { SafeOp: [ { type: 'address', name: 'safe' }, diff --git a/modules/4337/test/e2e/4337NestedSafe.spec.ts b/modules/4337/test/e2e/4337NestedSafe.spec.ts index 449068ba4..b9b738e17 100644 --- a/modules/4337/test/e2e/4337NestedSafe.spec.ts +++ b/modules/4337/test/e2e/4337NestedSafe.spec.ts @@ -1,3 +1,4 @@ +import { bundlerRpc, prepareAccounts, waitForUserOp } from '@safe-global/safe-4337-local-bundler' import { expect } from 'chai' import { deployments, ethers, network } from 'hardhat' import { @@ -20,7 +21,6 @@ import { } from '../../src/utils/userOp' import { chainId } from '../utils/encoding' import { Safe4337 } from '../../src/utils/safe' -import { BUNDLER_MNEMONIC, bundlerRpc, prepareAccounts, waitForUserOp } from '../utils/e2e' import { BigNumberish, Signer } from 'ethers' import { assert } from 'console' @@ -299,7 +299,7 @@ describe('Nested Safes With An Execution Initiated by a Leaf 4337 Safe [@4337]', const setupTests = async () => { const { SafeModuleSetup, EntryPoint, HariWillibaldToken, Safe4337Module, SafeL2, SafeProxyFactory } = await deployments.run() - const [user, user2, user3] = await prepareAccounts(BUNDLER_MNEMONIC, 3) + const [user, user2, user3] = await prepareAccounts({ count: 3 }) const bundler = bundlerRpc() const entryPoint = new ethers.Contract(EntryPoint.address, EntryPoint.abi, ethers.provider) diff --git a/modules/4337/test/e2e/LocalBundler.spec.ts b/modules/4337/test/e2e/LocalBundler.spec.ts index 7c7bdd158..87cad0108 100644 --- a/modules/4337/test/e2e/LocalBundler.spec.ts +++ b/modules/4337/test/e2e/LocalBundler.spec.ts @@ -1,10 +1,10 @@ +import { bundlerRpc, prepareAccounts, waitForUserOp } from '@safe-global/safe-4337-local-bundler' import { expect } from 'chai' import { deployments, ethers, network } from 'hardhat' import { buildSignatureBytes } from '../../src/utils/execution' import { buildRpcUserOperationFromSafeUserOperation, buildSafeUserOpTransaction, signSafeOp } from '../../src/utils/userOp' import { chainId, timestamp } from '../utils/encoding' import { Safe4337 } from '../../src/utils/safe' -import { bundlerRpc, prepareAccounts, waitForUserOp } from '../utils/e2e' describe('Local Bundler [@4337]', () => { before(function () { diff --git a/modules/4337/test/e2e/SingletonSigners.spec.ts b/modules/4337/test/e2e/SingletonSigners.spec.ts index d7b977918..803c2e7d9 100644 --- a/modules/4337/test/e2e/SingletonSigners.spec.ts +++ b/modules/4337/test/e2e/SingletonSigners.spec.ts @@ -1,3 +1,4 @@ +import { bundlerRpc, prepareAccounts, waitForUserOp } from '@safe-global/safe-4337-local-bundler' import { expect } from 'chai' import { deployments, ethers, network } from 'hardhat' import { buildSignatureBytes } from '../../src/utils/execution' @@ -6,7 +7,7 @@ import { buildRpcUserOperationFromSafeUserOperation, buildSafeUserOpTransaction, } from '../../src/utils/userOp' -import { bundlerRpc, encodeMultiSendTransactions, prepareAccounts, waitForUserOp } from '../utils/e2e' +import { encodeMultiSendTransactions } from '../utils/encoding' describe('Singleton Signers [@4337]', () => { before(function () { diff --git a/modules/4337/test/e2e/UniqueSigner.spec.ts b/modules/4337/test/e2e/UniqueSigner.spec.ts index dc923ded9..7b62e05da 100644 --- a/modules/4337/test/e2e/UniqueSigner.spec.ts +++ b/modules/4337/test/e2e/UniqueSigner.spec.ts @@ -1,6 +1,6 @@ +import { bundlerRpc, prepareAccounts, waitForUserOp } from '@safe-global/safe-4337-local-bundler' import { expect } from 'chai' import { deployments, ethers, network } from 'hardhat' -import { bundlerRpc, prepareAccounts, waitForUserOp } from '../utils/e2e' import { chainId } from '../utils/encoding' import { packGasParameters, unpackUserOperation } from '../../src/utils/userOp' diff --git a/modules/4337/test/e2e/WebAuthnSigner.spec.ts b/modules/4337/test/e2e/WebAuthnSigner.spec.ts index bdb51052b..b70edd512 100644 --- a/modules/4337/test/e2e/WebAuthnSigner.spec.ts +++ b/modules/4337/test/e2e/WebAuthnSigner.spec.ts @@ -1,6 +1,6 @@ +import { bundlerRpc, prepareAccounts, waitForUserOp } from '@safe-global/safe-4337-local-bundler' import { expect } from 'chai' import { deployments, ethers, network } from 'hardhat' -import { bundlerRpc, prepareAccounts, waitForUserOp } from '../utils/e2e' import { chainId } from '../utils/encoding' import { UserVerificationRequirement, diff --git a/modules/4337/test/e2e/WebAuthnSingletonSigner.spec.ts b/modules/4337/test/e2e/WebAuthnSingletonSigner.spec.ts index 50eb3d408..688212551 100644 --- a/modules/4337/test/e2e/WebAuthnSingletonSigner.spec.ts +++ b/modules/4337/test/e2e/WebAuthnSingletonSigner.spec.ts @@ -1,6 +1,7 @@ +import { bundlerRpc, prepareAccounts, waitForUserOp } from '@safe-global/safe-4337-local-bundler' import { expect } from 'chai' import { deployments, ethers, network } from 'hardhat' -import { bundlerRpc, encodeMultiSendTransactions, prepareAccounts, waitForUserOp } from '../utils/e2e' +import { encodeMultiSendTransactions } from '../utils/encoding' import { UserVerificationRequirement, WebAuthnCredentials, diff --git a/modules/4337/test/utils/encoding.ts b/modules/4337/test/utils/encoding.ts index 049e0971f..a1e602639 100644 --- a/modules/4337/test/utils/encoding.ts +++ b/modules/4337/test/utils/encoding.ts @@ -1,3 +1,4 @@ +import { AddressLike, BigNumberish, BytesLike } from 'ethers' import { ethers } from 'hardhat' export const Erc20 = [ @@ -25,3 +26,18 @@ export const timestamp = async () => { } return block.timestamp } + +export interface MultiSendTransaction { + op: 0 | 1 + to: AddressLike + value?: BigNumberish + data: BytesLike +} + +export function encodeMultiSendTransactions(transactions: MultiSendTransaction[]) { + return ethers.concat( + transactions.map(({ op, to, value, data }) => + ethers.solidityPacked(['uint8', 'address', 'uint256', 'uint256', 'bytes'], [op, to, value ?? 0, ethers.dataLength(data), data]), + ), + ) +} diff --git a/modules/allowances/package.json b/modules/allowances/package.json index e35e93616..c61c1b11a 100644 --- a/modules/allowances/package.json +++ b/modules/allowances/package.json @@ -45,7 +45,6 @@ "hardhat": "^2.21.0", "hardhat-deploy": "^0.12.1", "hardhat-gas-reporter": "^1.0.10", - "rimraf": "^5.0.5", "solhint": "4.1.1", "solidity-coverage": "^0.8.7", "ts-node": "^10.9.2", diff --git a/modules/passkey/package.json b/modules/passkey/package.json index 7eb510bcd..3c4148c7a 100644 --- a/modules/passkey/package.json +++ b/modules/passkey/package.json @@ -28,8 +28,8 @@ ], "scripts": { "build": "npm run build:sol && npm run build:ts", - "build:sol": "npx rimraf build && hardhat compile", - "build:ts": "npx rimraf dist && tsc", + "build:sol": "rimraf build typechain-types && hardhat compile", + "build:ts": "rimraf dist && tsc", "coverage": "hardhat coverage", "fmt": "prettier --write .", "fmt:check": "prettier --check .", @@ -38,7 +38,8 @@ "lint:ts": "eslint .", "test": "hardhat test", "test:4337": "4337-local-bundler-test", - "test:4337:upstream": "USE_UPSTREAM_BUNDLER=1 4337-local-bundler-test" + "test:4337:upstream": "USE_UPSTREAM_BUNDLER=1 4337-local-bundler-test", + "prepare": "npm run build -w ../4337 && npm run build" }, "devDependencies": { "@account-abstraction/contracts": "^0.7.0", @@ -55,7 +56,7 @@ }, "overrides": { "@safe-global/safe-contracts": { - "ethers": "^6.11.0" + "ethers": "^6.11.1" } }, "dependencies": { diff --git a/modules/passkey/test/4337/WebAuthnSigner.spec.ts b/modules/passkey/test/4337/WebAuthnSigner.spec.ts index 0ce600fe1..a236fc79c 100644 --- a/modules/passkey/test/4337/WebAuthnSigner.spec.ts +++ b/modules/passkey/test/4337/WebAuthnSigner.spec.ts @@ -1,8 +1,7 @@ import { expect } from 'chai' import { deployments, ethers, network } from 'hardhat' import { packGasParameters, unpackUserOperation } from '@safe-global/safe-4337/dist/src/utils/userOp' -import { bundlerRpc, prepareAccounts, waitForUserOp } from '../utils/e2e' -import { chainId } from '../utils/encoding' +import { bundlerRpc, prepareAccounts, waitForUserOp } from '@safe-global/safe-4337-local-bundler' import { WebAuthnCredentials, decodePublicKey, encodeWebAuthnSignature } from '../utils/webauthn' describe('WebAuthn Signers [@4337]', () => { @@ -64,6 +63,8 @@ describe('WebAuthn Signers [@4337]', () => { webAuthnVerifier, SafeL2, } = await setupTests() + + const { chainId } = await ethers.provider.getNetwork() const webAuthnVerifierAddress = await webAuthnVerifier.getAddress() const credential = navigator.credentials.create({ @@ -95,7 +96,7 @@ describe('WebAuthn Signers [@4337]', () => { fallbackHandler: module.target, } const safeInitHash = ethers.TypedDataEncoder.hash( - { verifyingContract: await signerLaunchpad.getAddress(), chainId: await chainId() }, + { verifyingContract: await signerLaunchpad.getAddress(), chainId }, { SafeInit: [ { type: 'address', name: 'singleton' }, @@ -171,7 +172,7 @@ describe('WebAuthn Signers [@4337]', () => { entryPoint: entryPoint.target, } const safeInitOpHash = ethers.TypedDataEncoder.hash( - { verifyingContract: await signerLaunchpad.getAddress(), chainId: await chainId() }, + { verifyingContract: await signerLaunchpad.getAddress(), chainId }, { SafeInitOp: [ { type: 'bytes32', name: 'userOpHash' }, diff --git a/modules/passkey/test/utils/e2e.ts b/modules/passkey/test/utils/e2e.ts deleted file mode 100644 index 8906b9d6c..000000000 --- a/modules/passkey/test/utils/e2e.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { deployments, ethers } from 'hardhat' -import { MultiProvider4337 } from '@safe-global/safe-4337/dist/src/utils/safe' -import { AddressLike, BigNumberish, BytesLike, HDNodeWallet } from 'ethers' -import { PackedUserOperationStruct } from '../../typechain-types/@account-abstraction/contracts/interfaces/IAccount' - -export const BUNDLER_URL = process.env.TEST_BUNLDER_URL || 'http://localhost:3000/rpc' -export const BUNDLER_MNEMONIC = process.env.TEST_BUNDLER_MNEMONIC || 'test test test test test test test test test test test junk' - -export async function prepareAccounts(mnemonic = BUNDLER_MNEMONIC, count = 1): Promise { - const bundler = ethers.HDNodeWallet.fromPhrase(mnemonic).connect(ethers.provider) - const accounts = [...Array(count)].map(() => ethers.Wallet.createRandom(ethers.provider)) - - const [deployer] = await ethers.getSigners() - const fund = ethers.parseEther('1.337') - for (const account of [bundler, ...accounts]) { - const balance = await ethers.provider.getBalance(account.address) - if (balance < fund) { - const transaction = await deployer.sendTransaction({ to: account.address, value: fund }) - await transaction.wait() - } - } - - return accounts -} - -export function bundlerRpc(url = BUNDLER_URL) { - return new MultiProvider4337(url, ethers.provider) -} - -export async function waitForUserOp({ sender, nonce }: Pick, timeout = 10_000) { - const { address: entryPointAddress } = await deployments.get('EntryPoint') - const entryPoint = await ethers.getContractAt('INonceManager', entryPointAddress) - const start = performance.now() - const key = BigInt(nonce) >> 64n - while ((await entryPoint.getNonce(sender, key)) <= BigInt(nonce)) { - if (performance.now() - start > timeout) { - throw new Error(`timeout waiting for user operation execution`) - } - await new Promise((resolve) => setTimeout(resolve, 10)) - } -} - -export interface MultiSendTransaction { - op: 0 | 1 - to: AddressLike - value?: BigNumberish - data: BytesLike -} - -export function encodeMultiSendTransactions(transactions: MultiSendTransaction[]) { - return ethers.concat( - transactions.map(({ op, to, value, data }) => - ethers.solidityPacked(['uint8', 'address', 'uint256', 'uint256', 'bytes'], [op, to, value ?? 0, ethers.dataLength(data), data]), - ), - ) -} diff --git a/modules/passkey/test/utils/encoding.ts b/modules/passkey/test/utils/encoding.ts deleted file mode 100644 index fde9528d0..000000000 --- a/modules/passkey/test/utils/encoding.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { ethers } from 'hardhat' - -export async function chainId(): Promise { - return (await ethers.provider.getNetwork()).chainId -} diff --git a/modules/passkey/test/WebAuthnShim.spec.ts b/modules/passkey/test/webauthn/WebAuthnShim.spec.ts similarity index 98% rename from modules/passkey/test/WebAuthnShim.spec.ts rename to modules/passkey/test/webauthn/WebAuthnShim.spec.ts index 2d068d6cc..1ac405dd2 100644 --- a/modules/passkey/test/WebAuthnShim.spec.ts +++ b/modules/passkey/test/webauthn/WebAuthnShim.spec.ts @@ -11,7 +11,7 @@ import { import { expect } from 'chai' import CBOR from 'cbor' import { ethers } from 'ethers' -import { WebAuthnCredentials, base64UrlEncode } from './utils/webauthn' +import { WebAuthnCredentials, base64UrlEncode } from '../utils/webauthn' describe('WebAuthn Shim', () => { const navigator = { diff --git a/package-lock.json b/package-lock.json index a26ac5fe0..0b0fe11fb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,10 +7,11 @@ "": { "name": "@safe-global/safe-modules", "version": "1.0.0", + "hasInstallScript": true, "license": "GPL-3.0", "workspaces": [ - "modules/*", "packages/*", + "modules/*", "examples/*" ], "devDependencies": { @@ -24,7 +25,8 @@ "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-refresh": "^0.4.5", "prettier": "^3.2.5", - "prettier-plugin-solidity": "^1.3.1" + "prettier-plugin-solidity": "^1.3.1", + "rimraf": "^5.0.5" } }, "examples/4337-gas-metering": { @@ -42,7 +44,6 @@ }, "devDependencies": { "@types/node": "20.11.18", - "rimraf": "^5.0.5", "tsx": "4.7.1", "typescript": "^5.3.3" } @@ -109,49 +110,6 @@ } } }, - "examples/4337-gas-metering/node_modules/brace-expansion": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "examples/4337-gas-metering/node_modules/glob": { - "version": "10.3.10", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "examples/4337-gas-metering/node_modules/minimatch": { - "version": "9.0.3", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "examples/4337-gas-metering/node_modules/permissionless": { "version": "0.0.35", "license": "MIT", @@ -159,23 +117,6 @@ "viem": "^2.0.0" } }, - "examples/4337-gas-metering/node_modules/rimraf": { - "version": "5.0.5", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^10.3.7" - }, - "bin": { - "rimraf": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "examples/4337-gas-metering/node_modules/viem": { "version": "2.7.9", "funding": [ @@ -558,7 +499,6 @@ "modules/4337": { "name": "@safe-global/safe-4337", "version": "0.3.0", - "hasInstallScript": true, "license": "GPL-3.0", "dependencies": { "@safe-global/safe-contracts": "^1.4.1-build.0" @@ -569,6 +509,7 @@ "@nomicfoundation/hardhat-toolbox": "^4.0.0", "@openzeppelin/contracts": "^5.0.2", "@safe-global/safe-4337-local-bundler": "^0.0.0", + "@safe-global/safe-4337-provider": "^0.0.0", "@simplewebauthn/server": "9.0.0", "@types/chai": "^4.3.11", "@types/mocha": "^10.0.6", @@ -912,7 +853,6 @@ "hardhat": "^2.21.0", "hardhat-deploy": "^0.12.1", "hardhat-gas-reporter": "^1.0.10", - "rimraf": "^5.0.5", "solhint": "4.1.1", "solidity-coverage": "^0.8.7", "ts-node": "^10.9.2", @@ -1029,14 +969,6 @@ "typechain": "^8.3.2" } }, - "modules/allowances/node_modules/brace-expansion": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "modules/allowances/node_modules/ethers": { "version": "6.11.1", "dev": true, @@ -1083,27 +1015,6 @@ "node": ">=10" } }, - "modules/allowances/node_modules/glob": { - "version": "10.3.10", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "modules/allowances/node_modules/jsonfile": { "version": "6.1.0", "dev": true, @@ -1115,37 +1026,6 @@ "graceful-fs": "^4.1.6" } }, - "modules/allowances/node_modules/minimatch": { - "version": "9.0.3", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "modules/allowances/node_modules/rimraf": { - "version": "5.0.5", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^10.3.7" - }, - "bin": { - "rimraf": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "modules/allowances/node_modules/tslib": { "version": "2.4.0", "dev": true, @@ -1545,7 +1425,6 @@ }, "node_modules/@cspotcode/source-map-support": { "version": "0.8.1", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "0.3.9" @@ -2434,7 +2313,6 @@ }, "node_modules/@fastify/busboy": { "version": "2.1.0", - "dev": true, "license": "MIT", "engines": { "node": ">=14" @@ -2481,8 +2359,9 @@ }, "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, - "license": "ISC", "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", @@ -2497,8 +2376,9 @@ }, "node_modules/@isaacs/cliui/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": ">=12" }, @@ -2508,8 +2388,9 @@ }, "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, - "license": "MIT", "engines": { "node": ">=12" }, @@ -2519,13 +2400,15 @@ }, "node_modules/@isaacs/cliui/node_modules/emoji-regex": { "version": "9.2.2", - "dev": true, - "license": "MIT" + "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, - "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -2540,8 +2423,9 @@ }, "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, - "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -2554,8 +2438,9 @@ }, "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, - "license": "MIT", "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -2570,7 +2455,6 @@ }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.1", - "dev": true, "license": "MIT", "engines": { "node": ">=6.0.0" @@ -2582,7 +2466,6 @@ }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.9", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", @@ -2619,7 +2502,6 @@ }, "node_modules/@metamask/eth-sig-util": { "version": "4.0.1", - "dev": true, "license": "ISC", "dependencies": { "ethereumjs-abi": "^0.6.8", @@ -2917,7 +2799,6 @@ }, "node_modules/@noble/hashes": { "version": "1.2.0", - "dev": true, "funding": [ { "type": "individual", @@ -2928,7 +2809,6 @@ }, "node_modules/@noble/secp256k1": { "version": "1.7.1", - "dev": true, "funding": [ { "type": "individual", @@ -2939,7 +2819,6 @@ }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", - "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", @@ -2951,7 +2830,6 @@ }, "node_modules/@nodelib/fs.stat": { "version": "2.0.5", - "dev": true, "license": "MIT", "engines": { "node": ">= 8" @@ -2959,7 +2837,6 @@ }, "node_modules/@nodelib/fs.walk": { "version": "1.2.8", - "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", @@ -2971,7 +2848,6 @@ }, "node_modules/@nomicfoundation/edr": { "version": "0.2.1", - "dev": true, "license": "MIT", "engines": { "node": ">= 18" @@ -2993,7 +2869,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -3008,7 +2883,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -3020,7 +2894,6 @@ }, "node_modules/@nomicfoundation/ethereumjs-common": { "version": "4.0.4", - "dev": true, "license": "MIT", "dependencies": { "@nomicfoundation/ethereumjs-util": "9.0.4" @@ -3028,7 +2901,6 @@ }, "node_modules/@nomicfoundation/ethereumjs-rlp": { "version": "5.0.4", - "dev": true, "license": "MPL-2.0", "bin": { "rlp": "bin/rlp.cjs" @@ -3039,7 +2911,6 @@ }, "node_modules/@nomicfoundation/ethereumjs-tx": { "version": "5.0.4", - "dev": true, "license": "MPL-2.0", "dependencies": { "@nomicfoundation/ethereumjs-common": "4.0.4", @@ -3061,7 +2932,6 @@ }, "node_modules/@nomicfoundation/ethereumjs-tx/node_modules/ethereum-cryptography": { "version": "0.1.3", - "dev": true, "license": "MIT", "dependencies": { "@types/pbkdf2": "^3.0.0", @@ -3083,7 +2953,6 @@ }, "node_modules/@nomicfoundation/ethereumjs-util": { "version": "9.0.4", - "dev": true, "license": "MPL-2.0", "dependencies": { "@nomicfoundation/ethereumjs-rlp": "5.0.4", @@ -3103,7 +2972,6 @@ }, "node_modules/@nomicfoundation/ethereumjs-util/node_modules/ethereum-cryptography": { "version": "0.1.3", - "dev": true, "license": "MIT", "dependencies": { "@types/pbkdf2": "^3.0.0", @@ -3125,7 +2993,6 @@ }, "node_modules/@nomicfoundation/hardhat-network-helpers": { "version": "1.0.10", - "dev": true, "license": "MIT", "dependencies": { "ethereumjs-util": "^7.1.4" @@ -3136,7 +3003,6 @@ }, "node_modules/@nomicfoundation/hardhat-network-helpers/node_modules/ethereum-cryptography": { "version": "0.1.3", - "dev": true, "license": "MIT", "dependencies": { "@types/pbkdf2": "^3.0.0", @@ -3158,7 +3024,6 @@ }, "node_modules/@nomicfoundation/hardhat-network-helpers/node_modules/ethereumjs-util": { "version": "7.1.5", - "dev": true, "license": "MPL-2.0", "dependencies": { "@types/bn.js": "^5.1.0", @@ -3173,7 +3038,6 @@ }, "node_modules/@nomicfoundation/hardhat-verify": { "version": "2.0.4", - "dev": true, "license": "MIT", "dependencies": { "@ethersproject/abi": "^5.1.2", @@ -3192,7 +3056,6 @@ }, "node_modules/@nomicfoundation/hardhat-verify/node_modules/cbor": { "version": "8.1.0", - "dev": true, "license": "MIT", "dependencies": { "nofilter": "^3.1.0" @@ -3203,7 +3066,6 @@ }, "node_modules/@nomicfoundation/solidity-analyzer": { "version": "0.1.1", - "dev": true, "license": "MIT", "engines": { "node": ">= 12" @@ -3226,7 +3088,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -3241,7 +3102,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -3445,8 +3305,9 @@ }, "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, - "license": "MIT", "optional": true, "engines": { "node": ">=14" @@ -3532,6 +3393,10 @@ "resolved": "packages/4337-local-bundler", "link": true }, + "node_modules/@safe-global/safe-4337-provider": { + "resolved": "packages/4337-provider", + "link": true + }, "node_modules/@safe-global/safe-allowance-module": { "resolved": "modules/allowances", "link": true @@ -3602,7 +3467,6 @@ }, "node_modules/@scure/bip32": { "version": "1.1.5", - "dev": true, "funding": [ { "type": "individual", @@ -3618,7 +3482,6 @@ }, "node_modules/@scure/bip39": { "version": "1.1.1", - "dev": true, "funding": [ { "type": "individual", @@ -3633,7 +3496,6 @@ }, "node_modules/@sentry/core": { "version": "5.30.0", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "@sentry/hub": "5.30.0", @@ -3648,7 +3510,6 @@ }, "node_modules/@sentry/hub": { "version": "5.30.0", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "@sentry/types": "5.30.0", @@ -3661,7 +3522,6 @@ }, "node_modules/@sentry/minimal": { "version": "5.30.0", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "@sentry/hub": "5.30.0", @@ -3674,7 +3534,6 @@ }, "node_modules/@sentry/node": { "version": "5.30.0", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "@sentry/core": "5.30.0", @@ -3693,7 +3552,6 @@ }, "node_modules/@sentry/tracing": { "version": "5.30.0", - "dev": true, "license": "MIT", "dependencies": { "@sentry/hub": "5.30.0", @@ -3708,7 +3566,6 @@ }, "node_modules/@sentry/types": { "version": "5.30.0", - "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=6" @@ -3716,7 +3573,6 @@ }, "node_modules/@sentry/utils": { "version": "5.30.0", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "@sentry/types": "5.30.0", @@ -3764,7 +3620,6 @@ }, "node_modules/@solidity-parser/parser": { "version": "0.14.5", - "dev": true, "license": "MIT", "dependencies": { "antlr4ts": "^0.5.0-alpha.4" @@ -3900,7 +3755,7 @@ }, "node_modules/@swc/core": { "version": "1.4.1", - "dev": true, + "devOptional": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { @@ -3967,12 +3822,12 @@ }, "node_modules/@swc/counter": { "version": "0.1.2", - "dev": true, + "devOptional": true, "license": "Apache-2.0" }, "node_modules/@swc/types": { "version": "0.1.5", - "dev": true, + "devOptional": true, "license": "Apache-2.0" }, "node_modules/@szmarczak/http-timer": { @@ -3988,27 +3843,22 @@ }, "node_modules/@tsconfig/node10": { "version": "1.0.9", - "dev": true, "license": "MIT" }, "node_modules/@tsconfig/node12": { "version": "1.0.11", - "dev": true, "license": "MIT" }, "node_modules/@tsconfig/node14": { "version": "1.0.3", - "dev": true, "license": "MIT" }, "node_modules/@tsconfig/node16": { "version": "1.0.4", - "dev": true, "license": "MIT" }, "node_modules/@types/bn.js": { "version": "5.1.5", - "dev": true, "license": "MIT", "dependencies": { "@types/node": "*" @@ -4016,12 +3866,10 @@ }, "node_modules/@types/chai": { "version": "4.3.11", - "dev": true, "license": "MIT" }, "node_modules/@types/chai-as-promised": { "version": "7.1.8", - "dev": true, "license": "MIT", "dependencies": { "@types/chai": "*" @@ -4029,7 +3877,6 @@ }, "node_modules/@types/concat-stream": { "version": "1.6.1", - "dev": true, "license": "MIT", "dependencies": { "@types/node": "*" @@ -4049,7 +3896,6 @@ }, "node_modules/@types/form-data": { "version": "0.0.33", - "dev": true, "license": "MIT", "dependencies": { "@types/node": "*" @@ -4057,7 +3903,6 @@ }, "node_modules/@types/glob": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "@types/minimatch": "*", @@ -4081,17 +3926,14 @@ }, "node_modules/@types/lru-cache": { "version": "5.1.1", - "dev": true, "license": "MIT" }, "node_modules/@types/minimatch": { "version": "5.1.2", - "dev": true, "license": "MIT" }, "node_modules/@types/mocha": { "version": "10.0.6", - "dev": true, "license": "MIT" }, "node_modules/@types/ms": { @@ -4100,7 +3942,6 @@ }, "node_modules/@types/node": { "version": "20.11.18", - "dev": true, "license": "MIT", "dependencies": { "undici-types": "~5.26.4" @@ -4108,7 +3949,6 @@ }, "node_modules/@types/pbkdf2": { "version": "3.1.2", - "dev": true, "license": "MIT", "dependencies": { "@types/node": "*" @@ -4116,7 +3956,6 @@ }, "node_modules/@types/prettier": { "version": "2.7.3", - "dev": true, "license": "MIT" }, "node_modules/@types/prop-types": { @@ -4153,7 +3992,6 @@ }, "node_modules/@types/secp256k1": { "version": "4.0.6", - "dev": true, "license": "MIT", "dependencies": { "@types/node": "*" @@ -4880,7 +4718,6 @@ }, "node_modules/abbrev": { "version": "1.0.9", - "dev": true, "license": "ISC" }, "node_modules/abitype": { @@ -4916,7 +4753,6 @@ }, "node_modules/acorn-walk": { "version": "8.3.1", - "dev": true, "license": "MIT", "engines": { "node": ">=0.4.0" @@ -4924,7 +4760,6 @@ }, "node_modules/adm-zip": { "version": "0.4.16", - "dev": true, "license": "MIT", "engines": { "node": ">=0.3.0" @@ -4936,7 +4771,6 @@ }, "node_modules/agent-base": { "version": "6.0.2", - "dev": true, "license": "MIT", "dependencies": { "debug": "4" @@ -4947,7 +4781,6 @@ }, "node_modules/aggregate-error": { "version": "3.1.0", - "dev": true, "license": "MIT", "dependencies": { "clean-stack": "^2.0.0", @@ -5179,7 +5012,6 @@ }, "node_modules/amdefine": { "version": "1.0.1", - "dev": true, "license": "BSD-3-Clause OR MIT", "optional": true, "peer": true, @@ -5189,7 +5021,6 @@ }, "node_modules/ansi-align": { "version": "3.0.1", - "dev": true, "license": "ISC", "dependencies": { "string-width": "^4.1.0" @@ -5204,7 +5035,6 @@ }, "node_modules/ansi-escapes": { "version": "4.3.2", - "dev": true, "license": "MIT", "dependencies": { "type-fest": "^0.21.3" @@ -5225,7 +5055,6 @@ }, "node_modules/ansi-styles": { "version": "3.2.1", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^1.9.0" @@ -5244,7 +5073,6 @@ }, "node_modules/antlr4ts": { "version": "0.5.0-alpha.4", - "dev": true, "license": "BSD-3-Clause" }, "node_modules/anymatch": { @@ -5260,17 +5088,14 @@ }, "node_modules/arg": { "version": "4.1.3", - "dev": true, "license": "MIT" }, "node_modules/argparse": { "version": "2.0.1", - "dev": true, "license": "Python-2.0" }, "node_modules/array-back": { "version": "3.1.0", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -5308,7 +5133,6 @@ }, "node_modules/array-union": { "version": "2.1.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -5316,7 +5140,6 @@ }, "node_modules/array-uniq": { "version": "1.0.3", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -5396,7 +5219,6 @@ }, "node_modules/asap": { "version": "2.0.6", - "dev": true, "license": "MIT" }, "node_modules/asn1js": { @@ -5419,7 +5241,6 @@ }, "node_modules/assertion-error": { "version": "1.1.0", - "dev": true, "license": "MIT", "engines": { "node": "*" @@ -5432,7 +5253,6 @@ }, "node_modules/astral-regex": { "version": "2.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -5440,7 +5260,6 @@ }, "node_modules/async": { "version": "1.5.2", - "dev": true, "license": "MIT" }, "node_modules/async-mutex": { @@ -5460,7 +5279,6 @@ }, "node_modules/at-least-node": { "version": "1.0.0", - "dev": true, "license": "ISC", "engines": { "node": ">= 4.0.0" @@ -5493,12 +5311,10 @@ }, "node_modules/balanced-match": { "version": "1.0.2", - "dev": true, "license": "MIT" }, "node_modules/base-x": { "version": "3.0.9", - "dev": true, "license": "MIT", "dependencies": { "safe-buffer": "^5.0.1" @@ -5540,7 +5356,6 @@ }, "node_modules/blakejs": { "version": "1.2.1", - "dev": true, "license": "MIT" }, "node_modules/bn.js": { @@ -5549,7 +5364,6 @@ }, "node_modules/boxen": { "version": "5.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-align": "^3.0.0", @@ -5570,7 +5384,6 @@ }, "node_modules/boxen/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -5584,7 +5397,6 @@ }, "node_modules/boxen/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -5599,7 +5411,6 @@ }, "node_modules/boxen/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -5610,12 +5421,10 @@ }, "node_modules/boxen/node_modules/color-name": { "version": "1.1.4", - "dev": true, "license": "MIT" }, "node_modules/boxen/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -5623,7 +5432,6 @@ }, "node_modules/boxen/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -5634,7 +5442,6 @@ }, "node_modules/boxen/node_modules/type-fest": { "version": "0.20.2", - "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" @@ -5645,7 +5452,6 @@ }, "node_modules/brace-expansion": { "version": "1.1.11", - "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", @@ -5668,12 +5474,10 @@ }, "node_modules/browser-stdout": { "version": "1.3.1", - "dev": true, "license": "ISC" }, "node_modules/browserify-aes": { "version": "1.2.0", - "dev": true, "license": "MIT", "dependencies": { "buffer-xor": "^1.0.3", @@ -5686,7 +5490,6 @@ }, "node_modules/bs58": { "version": "4.0.1", - "dev": true, "license": "MIT", "dependencies": { "base-x": "^3.0.2" @@ -5694,7 +5497,6 @@ }, "node_modules/bs58check": { "version": "2.1.2", - "dev": true, "license": "MIT", "dependencies": { "bs58": "^4.0.0", @@ -5726,12 +5528,10 @@ }, "node_modules/buffer-from": { "version": "1.1.2", - "dev": true, "license": "MIT" }, "node_modules/buffer-xor": { "version": "1.0.3", - "dev": true, "license": "MIT" }, "node_modules/bufferutil": { @@ -5747,7 +5547,6 @@ }, "node_modules/bytes": { "version": "3.1.2", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.8" @@ -5800,7 +5599,6 @@ }, "node_modules/camelcase": { "version": "6.3.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -5811,7 +5609,6 @@ }, "node_modules/caseless": { "version": "0.12.0", - "dev": true, "license": "Apache-2.0" }, "node_modules/cbor": { @@ -5856,7 +5653,6 @@ }, "node_modules/chai": { "version": "4.4.0", - "dev": true, "license": "MIT", "dependencies": { "assertion-error": "^1.1.0", @@ -5873,7 +5669,6 @@ }, "node_modules/chai-as-promised": { "version": "7.1.1", - "dev": true, "license": "WTFPL", "dependencies": { "check-error": "^1.0.2" @@ -5884,7 +5679,6 @@ }, "node_modules/chalk": { "version": "2.4.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", @@ -5897,7 +5691,6 @@ }, "node_modules/charenc": { "version": "0.0.2", - "dev": true, "license": "BSD-3-Clause", "engines": { "node": "*" @@ -5905,7 +5698,6 @@ }, "node_modules/check-error": { "version": "1.0.3", - "dev": true, "license": "MIT", "dependencies": { "get-func-name": "^2.0.2" @@ -5941,12 +5733,10 @@ }, "node_modules/ci-info": { "version": "2.0.0", - "dev": true, "license": "MIT" }, "node_modules/cipher-base": { "version": "1.0.4", - "dev": true, "license": "MIT", "dependencies": { "inherits": "^2.0.1", @@ -5962,7 +5752,6 @@ }, "node_modules/clean-stack": { "version": "2.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -5970,7 +5759,6 @@ }, "node_modules/cli-boxes": { "version": "2.2.1", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -5981,7 +5769,6 @@ }, "node_modules/cli-table3": { "version": "0.5.1", - "dev": true, "license": "MIT", "dependencies": { "object-assign": "^4.1.0", @@ -5996,7 +5783,6 @@ }, "node_modules/cli-table3/node_modules/ansi-regex": { "version": "3.0.1", - "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -6004,7 +5790,6 @@ }, "node_modules/cli-table3/node_modules/is-fullwidth-code-point": { "version": "2.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -6012,7 +5797,6 @@ }, "node_modules/cli-table3/node_modules/string-width": { "version": "2.1.1", - "dev": true, "license": "MIT", "dependencies": { "is-fullwidth-code-point": "^2.0.0", @@ -6024,7 +5808,6 @@ }, "node_modules/cli-table3/node_modules/strip-ansi": { "version": "4.0.0", - "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^3.0.0" @@ -6050,7 +5833,6 @@ }, "node_modules/cliui": { "version": "7.0.4", - "dev": true, "license": "ISC", "dependencies": { "string-width": "^4.2.0", @@ -6074,7 +5856,6 @@ }, "node_modules/color-convert": { "version": "1.9.3", - "dev": true, "license": "MIT", "dependencies": { "color-name": "1.1.3" @@ -6082,12 +5863,10 @@ }, "node_modules/color-name": { "version": "1.1.3", - "dev": true, "license": "MIT" }, "node_modules/colors": { "version": "1.4.0", - "dev": true, "license": "MIT", "engines": { "node": ">=0.1.90" @@ -6105,12 +5884,10 @@ }, "node_modules/command-exists": { "version": "1.2.9", - "dev": true, "license": "MIT" }, "node_modules/command-line-args": { "version": "5.2.1", - "dev": true, "license": "MIT", "dependencies": { "array-back": "^3.1.0", @@ -6124,7 +5901,6 @@ }, "node_modules/command-line-usage": { "version": "6.1.3", - "dev": true, "license": "MIT", "dependencies": { "array-back": "^4.0.2", @@ -6138,7 +5914,6 @@ }, "node_modules/command-line-usage/node_modules/array-back": { "version": "4.0.2", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -6146,7 +5921,6 @@ }, "node_modules/command-line-usage/node_modules/typical": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -6154,17 +5928,14 @@ }, "node_modules/commander": { "version": "3.0.2", - "dev": true, "license": "MIT" }, "node_modules/concat-map": { "version": "0.0.1", - "dev": true, "license": "MIT" }, "node_modules/concat-stream": { "version": "1.6.2", - "dev": true, "engines": [ "node >= 0.8" ], @@ -6178,12 +5949,10 @@ }, "node_modules/concat-stream/node_modules/isarray": { "version": "1.0.0", - "dev": true, "license": "MIT" }, "node_modules/concat-stream/node_modules/readable-stream": { "version": "2.3.8", - "dev": true, "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", @@ -6197,7 +5966,6 @@ }, "node_modules/concat-stream/node_modules/string_decoder": { "version": "1.1.1", - "dev": true, "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" @@ -6221,7 +5989,6 @@ }, "node_modules/cookie": { "version": "0.4.2", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -6233,7 +6000,6 @@ }, "node_modules/core-util-is": { "version": "1.0.3", - "dev": true, "license": "MIT" }, "node_modules/cosmiconfig": { @@ -6273,7 +6039,6 @@ }, "node_modules/create-hash": { "version": "1.2.0", - "dev": true, "license": "MIT", "dependencies": { "cipher-base": "^1.0.1", @@ -6285,7 +6050,6 @@ }, "node_modules/create-hmac": { "version": "1.1.7", - "dev": true, "license": "MIT", "dependencies": { "cipher-base": "^1.0.3", @@ -6298,7 +6062,6 @@ }, "node_modules/create-require": { "version": "1.1.1", - "dev": true, "license": "MIT" }, "node_modules/cross-fetch": { @@ -6327,7 +6090,6 @@ }, "node_modules/crypt": { "version": "0.0.2", - "dev": true, "license": "BSD-3-Clause", "engines": { "node": "*" @@ -6350,8 +6112,7 @@ "license": "MIT" }, "node_modules/death": { - "version": "1.1.0", - "dev": true + "version": "1.1.0" }, "node_modules/debug": { "version": "4.3.4", @@ -6370,7 +6131,6 @@ }, "node_modules/decamelize": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -6413,7 +6173,6 @@ }, "node_modules/deep-eql": { "version": "4.1.3", - "dev": true, "license": "MIT", "dependencies": { "type-detect": "^4.0.0" @@ -6424,7 +6183,6 @@ }, "node_modules/deep-extend": { "version": "0.6.0", - "dev": true, "license": "MIT", "engines": { "node": ">=4.0.0" @@ -6432,7 +6190,6 @@ }, "node_modules/deep-is": { "version": "0.1.4", - "dev": true, "license": "MIT" }, "node_modules/defer-to-connect": { @@ -6491,7 +6248,6 @@ }, "node_modules/depd": { "version": "2.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.8" @@ -6516,7 +6272,6 @@ }, "node_modules/diff": { "version": "5.0.0", - "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" @@ -6524,7 +6279,6 @@ }, "node_modules/difflib": { "version": "0.2.4", - "dev": true, "dependencies": { "heap": ">= 0.2.0" } @@ -6535,7 +6289,6 @@ }, "node_modules/dir-glob": { "version": "3.0.1", - "dev": true, "license": "MIT", "dependencies": { "path-type": "^4.0.0" @@ -6577,8 +6330,9 @@ }, "node_modules/eastasianwidth": { "version": "0.2.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true }, "node_modules/elliptic": { "version": "6.5.4", @@ -6635,7 +6389,6 @@ }, "node_modules/env-paths": { "version": "2.2.1", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -6808,7 +6561,6 @@ }, "node_modules/escalade": { "version": "3.1.1", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -6816,7 +6568,6 @@ }, "node_modules/escape-string-regexp": { "version": "1.0.5", - "dev": true, "license": "MIT", "engines": { "node": ">=0.8.0" @@ -6824,7 +6575,6 @@ }, "node_modules/escodegen": { "version": "1.8.1", - "dev": true, "license": "BSD-2-Clause", "dependencies": { "esprima": "^2.7.1", @@ -6845,14 +6595,12 @@ }, "node_modules/escodegen/node_modules/estraverse": { "version": "1.9.3", - "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/escodegen/node_modules/levn": { "version": "0.3.0", - "dev": true, "license": "MIT", "dependencies": { "prelude-ls": "~1.1.2", @@ -6864,7 +6612,6 @@ }, "node_modules/escodegen/node_modules/optionator": { "version": "0.8.3", - "dev": true, "license": "MIT", "dependencies": { "deep-is": "~0.1.3", @@ -6880,14 +6627,12 @@ }, "node_modules/escodegen/node_modules/prelude-ls": { "version": "1.1.2", - "dev": true, "engines": { "node": ">= 0.8.0" } }, "node_modules/escodegen/node_modules/source-map": { "version": "0.2.0", - "dev": true, "optional": true, "peer": true, "dependencies": { @@ -6899,7 +6644,6 @@ }, "node_modules/escodegen/node_modules/type-check": { "version": "0.3.2", - "dev": true, "license": "MIT", "dependencies": { "prelude-ls": "~1.1.2" @@ -7348,7 +7092,6 @@ }, "node_modules/esprima": { "version": "2.7.3", - "dev": true, "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", @@ -7394,7 +7137,6 @@ }, "node_modules/esutils": { "version": "2.0.3", - "dev": true, "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" @@ -7423,7 +7165,6 @@ }, "node_modules/eth-gas-reporter": { "version": "0.2.27", - "dev": true, "license": "MIT", "dependencies": { "@solidity-parser/parser": "^0.14.0", @@ -7451,7 +7192,6 @@ }, "node_modules/eth-gas-reporter/node_modules/@ethersproject/contracts": { "version": "5.7.0", - "dev": true, "funding": [ { "type": "individual", @@ -7478,7 +7218,6 @@ }, "node_modules/eth-gas-reporter/node_modules/@ethersproject/hdnode": { "version": "5.7.0", - "dev": true, "funding": [ { "type": "individual", @@ -7507,7 +7246,6 @@ }, "node_modules/eth-gas-reporter/node_modules/@ethersproject/json-wallets": { "version": "5.7.0", - "dev": true, "funding": [ { "type": "individual", @@ -7537,7 +7275,6 @@ }, "node_modules/eth-gas-reporter/node_modules/@ethersproject/pbkdf2": { "version": "5.7.0", - "dev": true, "funding": [ { "type": "individual", @@ -7556,7 +7293,6 @@ }, "node_modules/eth-gas-reporter/node_modules/@ethersproject/solidity": { "version": "5.7.0", - "dev": true, "funding": [ { "type": "individual", @@ -7579,7 +7315,6 @@ }, "node_modules/eth-gas-reporter/node_modules/@ethersproject/units": { "version": "5.7.0", - "dev": true, "funding": [ { "type": "individual", @@ -7599,7 +7334,6 @@ }, "node_modules/eth-gas-reporter/node_modules/@ethersproject/wallet": { "version": "5.7.0", - "dev": true, "funding": [ { "type": "individual", @@ -7631,7 +7365,6 @@ }, "node_modules/eth-gas-reporter/node_modules/@ethersproject/wordlists": { "version": "5.7.0", - "dev": true, "funding": [ { "type": "individual", @@ -7653,12 +7386,10 @@ }, "node_modules/eth-gas-reporter/node_modules/aes-js": { "version": "3.0.0", - "dev": true, "license": "MIT" }, "node_modules/eth-gas-reporter/node_modules/axios": { "version": "1.6.5", - "dev": true, "license": "MIT", "dependencies": { "follow-redirects": "^1.15.4", @@ -7668,7 +7399,6 @@ }, "node_modules/eth-gas-reporter/node_modules/ethers": { "version": "5.7.2", - "dev": true, "funding": [ { "type": "individual", @@ -7754,7 +7484,6 @@ }, "node_modules/ethereum-bloom-filters": { "version": "1.0.10", - "dev": true, "license": "MIT", "dependencies": { "js-sha3": "^0.8.0" @@ -7762,7 +7491,6 @@ }, "node_modules/ethereum-cryptography": { "version": "1.2.0", - "dev": true, "license": "MIT", "dependencies": { "@noble/hashes": "1.2.0", @@ -7773,7 +7501,6 @@ }, "node_modules/ethereumjs-abi": { "version": "0.6.8", - "dev": true, "license": "MIT", "dependencies": { "bn.js": "^4.11.8", @@ -7782,12 +7509,10 @@ }, "node_modules/ethereumjs-abi/node_modules/bn.js": { "version": "4.12.0", - "dev": true, "license": "MIT" }, "node_modules/ethereumjs-util": { "version": "6.2.1", - "dev": true, "license": "MPL-2.0", "dependencies": { "@types/bn.js": "^4.11.3", @@ -7801,7 +7526,6 @@ }, "node_modules/ethereumjs-util/node_modules/@types/bn.js": { "version": "4.11.6", - "dev": true, "license": "MIT", "dependencies": { "@types/node": "*" @@ -7809,12 +7533,10 @@ }, "node_modules/ethereumjs-util/node_modules/bn.js": { "version": "4.12.0", - "dev": true, "license": "MIT" }, "node_modules/ethereumjs-util/node_modules/ethereum-cryptography": { "version": "0.1.3", - "dev": true, "license": "MIT", "dependencies": { "@types/pbkdf2": "^3.0.0", @@ -8380,7 +8102,6 @@ }, "node_modules/ethjs-unit": { "version": "0.1.6", - "dev": true, "license": "MIT", "dependencies": { "bn.js": "4.11.6", @@ -8393,12 +8114,10 @@ }, "node_modules/ethjs-unit/node_modules/bn.js": { "version": "4.11.6", - "dev": true, "license": "MIT" }, "node_modules/ethjs-util": { "version": "0.1.6", - "dev": true, "license": "MIT", "dependencies": { "is-hex-prefixed": "1.0.0", @@ -8430,7 +8149,6 @@ }, "node_modules/evp_bytestokey": { "version": "1.0.3", - "dev": true, "license": "MIT", "dependencies": { "md5.js": "^1.3.4", @@ -8481,7 +8199,6 @@ }, "node_modules/fast-deep-equal": { "version": "3.1.3", - "dev": true, "license": "MIT" }, "node_modules/fast-diff": { @@ -8491,7 +8208,6 @@ }, "node_modules/fast-glob": { "version": "3.3.2", - "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -8511,7 +8227,6 @@ }, "node_modules/fast-levenshtein": { "version": "2.0.6", - "dev": true, "license": "MIT" }, "node_modules/fast-redact": { @@ -8527,7 +8242,6 @@ }, "node_modules/fastq": { "version": "1.16.0", - "dev": true, "license": "ISC", "dependencies": { "reusify": "^1.0.4" @@ -8563,7 +8277,6 @@ }, "node_modules/find-replace": { "version": "3.0.0", - "dev": true, "license": "MIT", "dependencies": { "array-back": "^3.0.1" @@ -8574,7 +8287,6 @@ }, "node_modules/find-up": { "version": "2.1.0", - "dev": true, "license": "MIT", "dependencies": { "locate-path": "^2.0.0" @@ -8585,7 +8297,6 @@ }, "node_modules/flat": { "version": "5.0.2", - "dev": true, "license": "BSD-3-Clause", "bin": { "flat": "cli.js" @@ -8658,8 +8369,9 @@ }, "node_modules/foreground-child": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", "dev": true, - "license": "ISC", "dependencies": { "cross-spawn": "^7.0.0", "signal-exit": "^4.0.1" @@ -8693,12 +8405,10 @@ }, "node_modules/fp-ts": { "version": "1.19.3", - "dev": true, "license": "MIT" }, "node_modules/fs-extra": { "version": "7.0.1", - "dev": true, "license": "MIT", "dependencies": { "graceful-fs": "^4.1.2", @@ -8711,12 +8421,10 @@ }, "node_modules/fs-readdir-recursive": { "version": "1.1.0", - "dev": true, "license": "MIT" }, "node_modules/fs.realpath": { "version": "1.0.0", - "dev": true, "license": "ISC" }, "node_modules/function-bind": { @@ -8760,7 +8468,6 @@ }, "node_modules/get-func-name": { "version": "2.0.2", - "dev": true, "license": "MIT", "engines": { "node": "*" @@ -8781,7 +8488,6 @@ }, "node_modules/get-port": { "version": "3.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -8830,7 +8536,6 @@ }, "node_modules/ghost-testrpc": { "version": "0.0.2", - "dev": true, "license": "ISC", "dependencies": { "chalk": "^2.4.2", @@ -8842,7 +8547,6 @@ }, "node_modules/glob": { "version": "7.2.0", - "dev": true, "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", @@ -8871,7 +8575,6 @@ }, "node_modules/global-modules": { "version": "2.0.0", - "dev": true, "license": "MIT", "dependencies": { "global-prefix": "^3.0.0" @@ -8882,7 +8585,6 @@ }, "node_modules/global-prefix": { "version": "3.0.0", - "dev": true, "license": "MIT", "dependencies": { "ini": "^1.3.5", @@ -8895,7 +8597,6 @@ }, "node_modules/global-prefix/node_modules/which": { "version": "1.3.1", - "dev": true, "license": "ISC", "dependencies": { "isexe": "^2.0.0" @@ -9022,7 +8723,6 @@ }, "node_modules/handlebars": { "version": "4.7.8", - "dev": true, "license": "MIT", "dependencies": { "minimist": "^1.2.5", @@ -9044,7 +8744,6 @@ "version": "2.21.0", "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.21.0.tgz", "integrity": "sha512-8DlJAVJDEVHaV1sh9FLuKLLgCFv9EAJ+M+8IbjSIPgoeNo3ss5L1HgGBMfnI88c7OzMEZkdcuyGoobFeK3Orqw==", - "dev": true, "dependencies": { "@ethersproject/abi": "^5.1.2", "@metamask/eth-sig-util": "^4.0.0", @@ -9480,7 +9179,6 @@ }, "node_modules/hardhat-gas-reporter": { "version": "1.0.10", - "dev": true, "license": "MIT", "dependencies": { "array-uniq": "1.0.3", @@ -9501,7 +9199,6 @@ }, "node_modules/has-flag": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -9553,7 +9250,6 @@ }, "node_modules/hash-base": { "version": "3.1.0", - "dev": true, "license": "MIT", "dependencies": { "inherits": "^2.0.4", @@ -9566,7 +9262,6 @@ }, "node_modules/hash-base/node_modules/safe-buffer": { "version": "5.2.1", - "dev": true, "funding": [ { "type": "github", @@ -9603,7 +9298,6 @@ }, "node_modules/he": { "version": "1.2.0", - "dev": true, "license": "MIT", "bin": { "he": "bin/he" @@ -9611,7 +9305,6 @@ }, "node_modules/heap": { "version": "0.2.7", - "dev": true, "license": "MIT" }, "node_modules/hey-listen": { @@ -9629,7 +9322,6 @@ }, "node_modules/http-basic": { "version": "8.1.3", - "dev": true, "license": "MIT", "dependencies": { "caseless": "^0.12.0", @@ -9648,7 +9340,6 @@ }, "node_modules/http-errors": { "version": "2.0.0", - "dev": true, "license": "MIT", "dependencies": { "depd": "2.0.0", @@ -9663,7 +9354,6 @@ }, "node_modules/http-response-object": { "version": "3.0.2", - "dev": true, "license": "MIT", "dependencies": { "@types/node": "^10.0.3" @@ -9671,7 +9361,6 @@ }, "node_modules/http-response-object/node_modules/@types/node": { "version": "10.17.60", - "dev": true, "license": "MIT" }, "node_modules/http-shutdown": { @@ -9696,7 +9385,6 @@ }, "node_modules/https-proxy-agent": { "version": "5.0.1", - "dev": true, "license": "MIT", "dependencies": { "agent-base": "6", @@ -9729,7 +9417,6 @@ }, "node_modules/iconv-lite": { "version": "0.4.24", - "dev": true, "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" @@ -9762,7 +9449,6 @@ }, "node_modules/ignore": { "version": "5.3.0", - "dev": true, "license": "MIT", "engines": { "node": ">= 4" @@ -9770,7 +9456,6 @@ }, "node_modules/immutable": { "version": "4.3.4", - "dev": true, "license": "MIT" }, "node_modules/import-fresh": { @@ -9805,7 +9490,6 @@ }, "node_modules/indent-string": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -9813,7 +9497,6 @@ }, "node_modules/inflight": { "version": "1.0.6", - "dev": true, "license": "ISC", "dependencies": { "once": "^1.3.0", @@ -9826,7 +9509,6 @@ }, "node_modules/ini": { "version": "1.3.8", - "dev": true, "license": "ISC" }, "node_modules/internal-slot": { @@ -9844,7 +9526,6 @@ }, "node_modules/interpret": { "version": "1.4.0", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.10" @@ -9852,7 +9533,6 @@ }, "node_modules/io-ts": { "version": "1.10.4", - "dev": true, "license": "MIT", "dependencies": { "fp-ts": "^1.0.0" @@ -10024,7 +9704,6 @@ }, "node_modules/is-hex-prefixed": { "version": "1.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=6.5.0", @@ -10089,7 +9768,6 @@ }, "node_modules/is-plain-obj": { "version": "2.1.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -10179,7 +9857,6 @@ }, "node_modules/is-unicode-supported": { "version": "0.1.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -10257,8 +9934,9 @@ }, "node_modules/jackspeak": { "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", "dev": true, - "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -10289,7 +9967,6 @@ }, "node_modules/js-yaml": { "version": "4.1.0", - "dev": true, "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -10354,7 +10031,6 @@ }, "node_modules/jsonfile": { "version": "4.0.0", - "dev": true, "license": "MIT", "optionalDependencies": { "graceful-fs": "^4.1.6" @@ -10362,7 +10038,6 @@ }, "node_modules/jsonschema": { "version": "1.4.1", - "dev": true, "license": "MIT", "engines": { "node": "*" @@ -10395,7 +10070,6 @@ }, "node_modules/kind-of": { "version": "6.0.3", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -10403,7 +10077,6 @@ }, "node_modules/klaw": { "version": "1.3.1", - "dev": true, "license": "MIT", "optionalDependencies": { "graceful-fs": "^4.1.9" @@ -10495,7 +10168,6 @@ }, "node_modules/locate-path": { "version": "2.0.0", - "dev": true, "license": "MIT", "dependencies": { "p-locate": "^2.0.0", @@ -10507,17 +10179,14 @@ }, "node_modules/lodash": { "version": "4.17.21", - "dev": true, "license": "MIT" }, "node_modules/lodash.camelcase": { "version": "4.3.0", - "dev": true, "license": "MIT" }, "node_modules/lodash.clonedeep": { "version": "4.5.0", - "dev": true, "license": "MIT" }, "node_modules/lodash.defaults": { @@ -10539,12 +10208,10 @@ }, "node_modules/lodash.truncate": { "version": "4.4.2", - "dev": true, "license": "MIT" }, "node_modules/log-symbols": { "version": "4.1.0", - "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.1.0", @@ -10559,7 +10226,6 @@ }, "node_modules/log-symbols/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -10573,7 +10239,6 @@ }, "node_modules/log-symbols/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -10588,7 +10253,6 @@ }, "node_modules/log-symbols/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -10599,12 +10263,10 @@ }, "node_modules/log-symbols/node_modules/color-name": { "version": "1.1.4", - "dev": true, "license": "MIT" }, "node_modules/log-symbols/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -10612,7 +10274,6 @@ }, "node_modules/log-symbols/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -10633,7 +10294,6 @@ }, "node_modules/loupe": { "version": "2.3.7", - "dev": true, "license": "MIT", "dependencies": { "get-func-name": "^2.0.1" @@ -10652,7 +10312,6 @@ }, "node_modules/lru_map": { "version": "0.3.3", - "dev": true, "license": "MIT" }, "node_modules/lru-cache": { @@ -10674,12 +10333,10 @@ }, "node_modules/make-error": { "version": "1.3.6", - "dev": true, "license": "ISC" }, "node_modules/markdown-table": { "version": "1.1.3", - "dev": true, "license": "MIT" }, "node_modules/match-all": { @@ -10688,7 +10345,6 @@ }, "node_modules/md5.js": { "version": "1.3.5", - "dev": true, "license": "MIT", "dependencies": { "hash-base": "^3.0.0", @@ -10698,7 +10354,6 @@ }, "node_modules/memorystream": { "version": "0.3.1", - "dev": true, "engines": { "node": ">= 0.10.0" } @@ -10709,7 +10364,6 @@ }, "node_modules/merge2": { "version": "1.4.1", - "dev": true, "license": "MIT", "engines": { "node": ">= 8" @@ -10788,7 +10442,6 @@ }, "node_modules/minimatch": { "version": "3.1.2", - "dev": true, "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -10799,7 +10452,6 @@ }, "node_modules/minimist": { "version": "1.2.8", - "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -10807,15 +10459,15 @@ }, "node_modules/minipass": { "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", "dev": true, - "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } }, "node_modules/mkdirp": { "version": "0.5.6", - "dev": true, "license": "MIT", "dependencies": { "minimist": "^1.2.6" @@ -10836,7 +10488,6 @@ }, "node_modules/mnemonist": { "version": "0.38.5", - "dev": true, "license": "MIT", "dependencies": { "obliterator": "^2.0.0" @@ -10844,7 +10495,6 @@ }, "node_modules/mocha": { "version": "10.2.0", - "dev": true, "license": "MIT", "dependencies": { "ansi-colors": "4.1.1", @@ -10883,7 +10533,6 @@ }, "node_modules/mocha/node_modules/ansi-colors": { "version": "4.1.1", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -10891,7 +10540,6 @@ }, "node_modules/mocha/node_modules/brace-expansion": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" @@ -10899,7 +10547,6 @@ }, "node_modules/mocha/node_modules/escape-string-regexp": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -10910,7 +10557,6 @@ }, "node_modules/mocha/node_modules/find-up": { "version": "5.0.0", - "dev": true, "license": "MIT", "dependencies": { "locate-path": "^6.0.0", @@ -10925,7 +10571,6 @@ }, "node_modules/mocha/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -10933,7 +10578,6 @@ }, "node_modules/mocha/node_modules/locate-path": { "version": "6.0.0", - "dev": true, "license": "MIT", "dependencies": { "p-locate": "^5.0.0" @@ -10947,7 +10591,6 @@ }, "node_modules/mocha/node_modules/minimatch": { "version": "5.0.1", - "dev": true, "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" @@ -10958,12 +10601,10 @@ }, "node_modules/mocha/node_modules/ms": { "version": "2.1.3", - "dev": true, "license": "MIT" }, "node_modules/mocha/node_modules/p-limit": { "version": "3.1.0", - "dev": true, "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" @@ -10977,7 +10618,6 @@ }, "node_modules/mocha/node_modules/p-locate": { "version": "5.0.0", - "dev": true, "license": "MIT", "dependencies": { "p-limit": "^3.0.2" @@ -10991,7 +10631,6 @@ }, "node_modules/mocha/node_modules/path-exists": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -10999,7 +10638,6 @@ }, "node_modules/mocha/node_modules/supports-color": { "version": "8.1.1", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -11049,7 +10687,6 @@ }, "node_modules/nanoid": { "version": "3.3.3", - "dev": true, "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" @@ -11065,7 +10702,6 @@ }, "node_modules/neo-async": { "version": "2.6.2", - "dev": true, "license": "MIT" }, "node_modules/next-tick": { @@ -11078,7 +10714,6 @@ }, "node_modules/node-emoji": { "version": "1.11.0", - "dev": true, "license": "MIT", "dependencies": { "lodash": "^4.17.21" @@ -11138,7 +10773,6 @@ }, "node_modules/nofilter": { "version": "3.1.0", - "dev": true, "license": "MIT", "engines": { "node": ">=12.19" @@ -11146,7 +10780,6 @@ }, "node_modules/nopt": { "version": "3.0.6", - "dev": true, "license": "ISC", "dependencies": { "abbrev": "1" @@ -11198,7 +10831,6 @@ }, "node_modules/number-to-bn": { "version": "1.7.0", - "dev": true, "license": "MIT", "dependencies": { "bn.js": "4.11.6", @@ -11211,12 +10843,10 @@ }, "node_modules/number-to-bn/node_modules/bn.js": { "version": "4.11.6", - "dev": true, "license": "MIT" }, "node_modules/object-assign": { "version": "4.1.1", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -11299,7 +10929,6 @@ }, "node_modules/obliterator": { "version": "2.0.4", - "dev": true, "license": "MIT" }, "node_modules/ofetch": { @@ -11357,12 +10986,10 @@ }, "node_modules/ordinal": { "version": "1.0.3", - "dev": true, "license": "MIT" }, "node_modules/os-tmpdir": { "version": "1.0.2", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -11378,7 +11005,6 @@ }, "node_modules/p-limit": { "version": "1.3.0", - "dev": true, "license": "MIT", "dependencies": { "p-try": "^1.0.0" @@ -11389,7 +11015,6 @@ }, "node_modules/p-locate": { "version": "2.0.0", - "dev": true, "license": "MIT", "dependencies": { "p-limit": "^1.1.0" @@ -11400,7 +11025,6 @@ }, "node_modules/p-map": { "version": "4.0.0", - "dev": true, "license": "MIT", "dependencies": { "aggregate-error": "^3.0.0" @@ -11414,7 +11038,6 @@ }, "node_modules/p-try": { "version": "1.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -11474,8 +11097,7 @@ } }, "node_modules/parse-cache-control": { - "version": "1.0.1", - "dev": true + "version": "1.0.1" }, "node_modules/parse-json": { "version": "5.2.0", @@ -11496,7 +11118,6 @@ }, "node_modules/path-exists": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -11504,7 +11125,6 @@ }, "node_modules/path-is-absolute": { "version": "1.0.1", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -11519,13 +11139,13 @@ }, "node_modules/path-parse": { "version": "1.0.7", - "dev": true, "license": "MIT" }, "node_modules/path-scurry": { "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", "dev": true, - "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^9.1.1 || ^10.0.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" @@ -11539,7 +11159,6 @@ }, "node_modules/path-type": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -11551,7 +11170,6 @@ }, "node_modules/pathval": { "version": "1.1.1", - "dev": true, "license": "MIT", "engines": { "node": "*" @@ -11559,7 +11177,6 @@ }, "node_modules/pbkdf2": { "version": "3.1.2", - "dev": true, "license": "MIT", "dependencies": { "create-hash": "^1.1.2", @@ -11588,7 +11205,6 @@ }, "node_modules/pify": { "version": "4.0.1", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -11788,7 +11404,6 @@ }, "node_modules/process-nextick-args": { "version": "2.0.1", - "dev": true, "license": "MIT" }, "node_modules/process-warning": { @@ -11797,7 +11412,6 @@ }, "node_modules/promise": { "version": "8.3.0", - "dev": true, "license": "MIT", "dependencies": { "asap": "~2.0.6" @@ -11818,7 +11432,6 @@ }, "node_modules/punycode": { "version": "2.3.1", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -12047,7 +11660,6 @@ }, "node_modules/queue-microtask": { "version": "1.2.3", - "dev": true, "funding": [ { "type": "github", @@ -12085,7 +11697,6 @@ }, "node_modules/randombytes": { "version": "2.1.0", - "dev": true, "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" @@ -12093,7 +11704,6 @@ }, "node_modules/raw-body": { "version": "2.5.2", - "dev": true, "license": "MIT", "dependencies": { "bytes": "3.1.2", @@ -12179,7 +11789,6 @@ }, "node_modules/rechoir": { "version": "0.6.2", - "dev": true, "dependencies": { "resolve": "^1.1.6" }, @@ -12189,7 +11798,6 @@ }, "node_modules/recursive-readdir": { "version": "2.2.3", - "dev": true, "license": "MIT", "dependencies": { "minimatch": "^3.0.5" @@ -12217,7 +11825,6 @@ }, "node_modules/reduce-flatten": { "version": "2.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -12266,7 +11873,6 @@ }, "node_modules/req-cwd": { "version": "2.0.0", - "dev": true, "license": "MIT", "dependencies": { "req-from": "^2.0.0" @@ -12277,7 +11883,6 @@ }, "node_modules/req-from": { "version": "2.0.0", - "dev": true, "license": "MIT", "dependencies": { "resolve-from": "^3.0.0" @@ -12288,7 +11893,6 @@ }, "node_modules/req-from/node_modules/resolve-from": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -12303,7 +11907,6 @@ }, "node_modules/require-from-string": { "version": "2.0.2", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -12315,7 +11918,6 @@ }, "node_modules/resolve": { "version": "1.17.0", - "dev": true, "license": "MIT", "dependencies": { "path-parse": "^1.0.6" @@ -12361,7 +11963,6 @@ }, "node_modules/reusify": { "version": "1.0.4", - "dev": true, "license": "MIT", "engines": { "iojs": ">=1.0.0", @@ -12369,19 +11970,71 @@ } }, "node_modules/rimraf": { - "version": "2.7.1", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", + "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", "dev": true, - "license": "ISC", "dependencies": { - "glob": "^7.1.3" + "glob": "^10.3.7" }, "bin": { - "rimraf": "bin.js" + "rimraf": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/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==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/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, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/ripemd160": { "version": "2.0.2", - "dev": true, "license": "MIT", "dependencies": { "hash-base": "^3.0.0", @@ -12390,7 +12043,6 @@ }, "node_modules/rlp": { "version": "2.2.7", - "dev": true, "license": "MPL-2.0", "dependencies": { "bn.js": "^5.2.0" @@ -12432,7 +12084,6 @@ }, "node_modules/run-parallel": { "version": "1.2.0", - "dev": true, "funding": [ { "type": "github", @@ -12495,12 +12146,10 @@ }, "node_modules/safer-buffer": { "version": "2.1.2", - "dev": true, "license": "MIT" }, "node_modules/sc-istanbul": { "version": "0.4.6", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "abbrev": "1.0.x", @@ -12524,7 +12173,6 @@ }, "node_modules/sc-istanbul/node_modules/argparse": { "version": "1.0.10", - "dev": true, "license": "MIT", "dependencies": { "sprintf-js": "~1.0.2" @@ -12532,7 +12180,6 @@ }, "node_modules/sc-istanbul/node_modules/glob": { "version": "5.0.15", - "dev": true, "license": "ISC", "dependencies": { "inflight": "^1.0.4", @@ -12547,7 +12194,6 @@ }, "node_modules/sc-istanbul/node_modules/has-flag": { "version": "1.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -12555,7 +12201,6 @@ }, "node_modules/sc-istanbul/node_modules/js-yaml": { "version": "3.14.1", - "dev": true, "license": "MIT", "dependencies": { "argparse": "^1.0.7", @@ -12567,7 +12212,6 @@ }, "node_modules/sc-istanbul/node_modules/js-yaml/node_modules/esprima": { "version": "4.0.1", - "dev": true, "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", @@ -12579,12 +12223,10 @@ }, "node_modules/sc-istanbul/node_modules/resolve": { "version": "1.1.7", - "dev": true, "license": "MIT" }, "node_modules/sc-istanbul/node_modules/supports-color": { "version": "3.2.3", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^1.0.0" @@ -12595,7 +12237,6 @@ }, "node_modules/sc-istanbul/node_modules/which": { "version": "1.3.1", - "dev": true, "license": "ISC", "dependencies": { "isexe": "^2.0.0" @@ -12617,7 +12258,6 @@ }, "node_modules/secp256k1": { "version": "4.0.3", - "dev": true, "hasInstallScript": true, "license": "MIT", "dependencies": { @@ -12631,7 +12271,6 @@ }, "node_modules/semver": { "version": "6.3.1", - "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -12639,7 +12278,6 @@ }, "node_modules/serialize-javascript": { "version": "6.0.0", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" @@ -12677,12 +12315,10 @@ }, "node_modules/setimmediate": { "version": "1.0.5", - "dev": true, "license": "MIT" }, "node_modules/setprototypeof": { "version": "1.2.0", - "dev": true, "license": "ISC" }, "node_modules/sha.js": { @@ -12698,7 +12334,6 @@ }, "node_modules/sha1": { "version": "1.1.1", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "charenc": ">= 0.0.1", @@ -12727,7 +12362,6 @@ }, "node_modules/shelljs": { "version": "0.8.5", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "glob": "^7.0.0", @@ -12765,7 +12399,6 @@ }, "node_modules/slash": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -12773,7 +12406,6 @@ }, "node_modules/slice-ansi": { "version": "4.0.0", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -12789,7 +12421,6 @@ }, "node_modules/slice-ansi/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -12803,7 +12434,6 @@ }, "node_modules/slice-ansi/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -12814,12 +12444,10 @@ }, "node_modules/slice-ansi/node_modules/color-name": { "version": "1.1.4", - "dev": true, "license": "MIT" }, "node_modules/solc": { "version": "0.7.3", - "dev": true, "license": "MIT", "dependencies": { "command-exists": "^1.2.8", @@ -12841,7 +12469,6 @@ }, "node_modules/solc/node_modules/fs-extra": { "version": "0.30.0", - "dev": true, "license": "MIT", "dependencies": { "graceful-fs": "^4.1.2", @@ -12853,15 +12480,24 @@ }, "node_modules/solc/node_modules/jsonfile": { "version": "2.4.0", - "dev": true, "license": "MIT", "optionalDependencies": { "graceful-fs": "^4.1.6" } }, + "node_modules/solc/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, "node_modules/solc/node_modules/semver": { "version": "5.7.2", - "dev": true, "license": "ISC", "bin": { "semver": "bin/semver" @@ -13062,7 +12698,6 @@ }, "node_modules/solidity-coverage": { "version": "0.8.7", - "dev": true, "license": "ISC", "dependencies": { "@ethersproject/abi": "^5.0.9", @@ -13094,12 +12729,10 @@ }, "node_modules/solidity-coverage/node_modules/@solidity-parser/parser": { "version": "0.18.0", - "dev": true, "license": "MIT" }, "node_modules/solidity-coverage/node_modules/fs-extra": { "version": "8.1.0", - "dev": true, "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", @@ -13112,7 +12745,6 @@ }, "node_modules/solidity-coverage/node_modules/globby": { "version": "10.0.2", - "dev": true, "license": "MIT", "dependencies": { "@types/glob": "^7.1.1", @@ -13130,7 +12762,6 @@ }, "node_modules/solidity-coverage/node_modules/lru-cache": { "version": "6.0.0", - "dev": true, "license": "ISC", "dependencies": { "yallist": "^4.0.0" @@ -13141,7 +12772,6 @@ }, "node_modules/solidity-coverage/node_modules/semver": { "version": "7.5.4", - "dev": true, "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" @@ -13162,7 +12792,6 @@ }, "node_modules/source-map": { "version": "0.6.1", - "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -13177,7 +12806,6 @@ }, "node_modules/source-map-support": { "version": "0.5.21", - "dev": true, "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", @@ -13200,12 +12828,10 @@ }, "node_modules/sprintf-js": { "version": "1.0.3", - "dev": true, "license": "BSD-3-Clause" }, "node_modules/stacktrace-parser": { "version": "0.1.10", - "dev": true, "license": "MIT", "dependencies": { "type-fest": "^0.7.1" @@ -13216,7 +12842,6 @@ }, "node_modules/stacktrace-parser/node_modules/type-fest": { "version": "0.7.1", - "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=8" @@ -13228,7 +12853,6 @@ }, "node_modules/statuses": { "version": "2.0.1", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.8" @@ -13276,7 +12900,6 @@ }, "node_modules/string-format": { "version": "2.0.0", - "dev": true, "license": "WTFPL OR MIT" }, "node_modules/string-width": { @@ -13294,8 +12917,9 @@ "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, - "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -13360,8 +12984,9 @@ "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, - "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -13389,7 +13014,6 @@ }, "node_modules/strip-hex-prefix": { "version": "1.0.0", - "dev": true, "license": "MIT", "dependencies": { "is-hex-prefixed": "1.0.0" @@ -13401,7 +13025,6 @@ }, "node_modules/strip-json-comments": { "version": "3.1.1", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13423,7 +13046,6 @@ }, "node_modules/supports-color": { "version": "5.5.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^3.0.0" @@ -13445,7 +13067,6 @@ }, "node_modules/sync-request": { "version": "6.1.0", - "dev": true, "license": "MIT", "dependencies": { "http-response-object": "^3.0.1", @@ -13458,7 +13079,6 @@ }, "node_modules/sync-rpc": { "version": "1.3.6", - "dev": true, "license": "MIT", "dependencies": { "get-port": "^3.1.0" @@ -13496,7 +13116,6 @@ }, "node_modules/table": { "version": "6.8.1", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "ajv": "^8.0.1", @@ -13511,7 +13130,6 @@ }, "node_modules/table-layout": { "version": "1.0.2", - "dev": true, "license": "MIT", "dependencies": { "array-back": "^4.0.1", @@ -13525,7 +13143,6 @@ }, "node_modules/table-layout/node_modules/array-back": { "version": "4.0.2", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13533,7 +13150,6 @@ }, "node_modules/table-layout/node_modules/typical": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13541,7 +13157,6 @@ }, "node_modules/table/node_modules/ajv": { "version": "8.12.0", - "dev": true, "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", @@ -13556,7 +13171,6 @@ }, "node_modules/table/node_modules/json-schema-traverse": { "version": "1.0.0", - "dev": true, "license": "MIT" }, "node_modules/text-table": { @@ -13566,7 +13180,6 @@ }, "node_modules/then-request": { "version": "6.0.2", - "dev": true, "license": "MIT", "dependencies": { "@types/concat-stream": "^1.6.0", @@ -13587,12 +13200,10 @@ }, "node_modules/then-request/node_modules/@types/node": { "version": "8.10.66", - "dev": true, "license": "MIT" }, "node_modules/then-request/node_modules/form-data": { "version": "2.5.1", - "dev": true, "license": "MIT", "dependencies": { "asynckit": "^0.4.0", @@ -13612,7 +13223,6 @@ }, "node_modules/tmp": { "version": "0.0.33", - "dev": true, "license": "MIT", "dependencies": { "os-tmpdir": "~1.0.2" @@ -13633,7 +13243,6 @@ }, "node_modules/toidentifier": { "version": "1.0.1", - "dev": true, "license": "MIT", "engines": { "node": ">=0.6" @@ -13656,7 +13265,6 @@ }, "node_modules/ts-command-line-args": { "version": "2.5.1", - "dev": true, "license": "ISC", "dependencies": { "chalk": "^4.1.0", @@ -13670,7 +13278,6 @@ }, "node_modules/ts-command-line-args/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -13684,7 +13291,6 @@ }, "node_modules/ts-command-line-args/node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -13699,7 +13305,6 @@ }, "node_modules/ts-command-line-args/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -13710,12 +13315,10 @@ }, "node_modules/ts-command-line-args/node_modules/color-name": { "version": "1.1.4", - "dev": true, "license": "MIT" }, "node_modules/ts-command-line-args/node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -13723,7 +13326,6 @@ }, "node_modules/ts-command-line-args/node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13734,7 +13336,6 @@ }, "node_modules/ts-essentials": { "version": "7.0.3", - "dev": true, "license": "MIT", "peerDependencies": { "typescript": ">=3.7.0" @@ -13742,7 +13343,6 @@ }, "node_modules/ts-node": { "version": "10.9.2", - "dev": true, "license": "MIT", "dependencies": { "@cspotcode/source-map-support": "^0.8.0", @@ -13784,7 +13384,6 @@ }, "node_modules/ts-node/node_modules/diff": { "version": "4.0.2", - "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" @@ -13807,7 +13406,6 @@ }, "node_modules/tsort": { "version": "0.0.1", - "dev": true, "license": "MIT" }, "node_modules/tsx": { @@ -13830,12 +13428,10 @@ }, "node_modules/tweetnacl": { "version": "1.0.3", - "dev": true, "license": "Unlicense" }, "node_modules/tweetnacl-util": { "version": "0.15.1", - "dev": true, "license": "Unlicense" }, "node_modules/type": { @@ -13855,7 +13451,6 @@ }, "node_modules/type-detect": { "version": "4.0.8", - "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -13863,7 +13458,6 @@ }, "node_modules/type-fest": { "version": "0.21.3", - "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" @@ -13874,7 +13468,6 @@ }, "node_modules/typechain": { "version": "8.3.2", - "dev": true, "license": "MIT", "dependencies": { "@types/prettier": "^2.1.1", @@ -13897,7 +13490,6 @@ }, "node_modules/typechain/node_modules/glob": { "version": "7.1.7", - "dev": true, "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", @@ -13916,7 +13508,6 @@ }, "node_modules/typechain/node_modules/mkdirp": { "version": "1.0.4", - "dev": true, "license": "MIT", "bin": { "mkdirp": "bin/cmd.js" @@ -13927,7 +13518,6 @@ }, "node_modules/typechain/node_modules/prettier": { "version": "2.8.8", - "dev": true, "license": "MIT", "bin": { "prettier": "bin-prettier.js" @@ -14002,7 +13592,6 @@ }, "node_modules/typedarray": { "version": "0.0.6", - "dev": true, "license": "MIT" }, "node_modules/typedarray-to-buffer": { @@ -14025,7 +13614,6 @@ }, "node_modules/typical": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -14037,7 +13625,6 @@ }, "node_modules/uglify-js": { "version": "3.17.4", - "dev": true, "license": "BSD-2-Clause", "optional": true, "peer": true, @@ -14075,7 +13662,6 @@ }, "node_modules/undici": { "version": "5.28.3", - "dev": true, "license": "MIT", "dependencies": { "@fastify/busboy": "^2.0.0" @@ -14086,7 +13672,6 @@ }, "node_modules/undici-types": { "version": "5.26.5", - "dev": true, "license": "MIT" }, "node_modules/unenv": { @@ -14106,7 +13691,6 @@ }, "node_modules/universalify": { "version": "0.1.2", - "dev": true, "license": "MIT", "engines": { "node": ">= 4.0.0" @@ -14114,7 +13698,6 @@ }, "node_modules/unpipe": { "version": "1.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.8" @@ -14207,7 +13790,6 @@ }, "node_modules/uri-js": { "version": "4.4.1", - "dev": true, "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" @@ -14233,7 +13815,6 @@ }, "node_modules/utf8": { "version": "3.0.0", - "dev": true, "license": "MIT" }, "node_modules/util-deprecate": { @@ -14242,7 +13823,6 @@ }, "node_modules/uuid": { "version": "8.3.2", - "dev": true, "license": "MIT", "bin": { "uuid": "dist/bin/uuid" @@ -14250,7 +13830,6 @@ }, "node_modules/v8-compile-cache-lib": { "version": "3.0.1", - "dev": true, "license": "MIT" }, "node_modules/valtio": { @@ -14463,7 +14042,6 @@ }, "node_modules/web3-utils": { "version": "1.10.3", - "dev": true, "license": "LGPL-3.0", "dependencies": { "@ethereumjs/util": "^8.1.0", @@ -14481,7 +14059,6 @@ }, "node_modules/web3-utils/node_modules/@noble/curves": { "version": "1.1.0", - "dev": true, "license": "MIT", "dependencies": { "@noble/hashes": "1.3.1" @@ -14492,7 +14069,6 @@ }, "node_modules/web3-utils/node_modules/@noble/hashes": { "version": "1.3.1", - "dev": true, "license": "MIT", "engines": { "node": ">= 16" @@ -14503,7 +14079,6 @@ }, "node_modules/web3-utils/node_modules/@scure/bip32": { "version": "1.3.1", - "dev": true, "license": "MIT", "dependencies": { "@noble/curves": "~1.1.0", @@ -14516,7 +14091,6 @@ }, "node_modules/web3-utils/node_modules/@scure/bip39": { "version": "1.2.1", - "dev": true, "license": "MIT", "dependencies": { "@noble/hashes": "~1.3.0", @@ -14528,7 +14102,6 @@ }, "node_modules/web3-utils/node_modules/ethereum-cryptography": { "version": "2.1.2", - "dev": true, "license": "MIT", "dependencies": { "@noble/curves": "1.1.0", @@ -14627,7 +14200,6 @@ }, "node_modules/widest-line": { "version": "3.1.0", - "dev": true, "license": "MIT", "dependencies": { "string-width": "^4.0.0" @@ -14638,7 +14210,6 @@ }, "node_modules/word-wrap": { "version": "1.2.5", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -14646,12 +14217,10 @@ }, "node_modules/wordwrap": { "version": "1.0.0", - "dev": true, "license": "MIT" }, "node_modules/wordwrapjs": { "version": "4.0.1", - "dev": true, "license": "MIT", "dependencies": { "reduce-flatten": "^2.0.0", @@ -14663,7 +14232,6 @@ }, "node_modules/wordwrapjs/node_modules/typical": { "version": "5.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -14671,12 +14239,10 @@ }, "node_modules/workerpool": { "version": "6.2.1", - "dev": true, "license": "Apache-2.0" }, "node_modules/wrap-ansi": { "version": "7.0.0", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -14693,8 +14259,9 @@ "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, - "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -14709,8 +14276,9 @@ }, "node_modules/wrap-ansi-cjs/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==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -14723,8 +14291,9 @@ }, "node_modules/wrap-ansi-cjs/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==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -14734,12 +14303,12 @@ }, "node_modules/wrap-ansi-cjs/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/wrap-ansi/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -14753,7 +14322,6 @@ }, "node_modules/wrap-ansi/node_modules/color-convert": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -14764,7 +14332,6 @@ }, "node_modules/wrap-ansi/node_modules/color-name": { "version": "1.1.4", - "dev": true, "license": "MIT" }, "node_modules/wrappy": { @@ -14799,7 +14366,6 @@ }, "node_modules/y18n": { "version": "5.0.8", - "dev": true, "license": "ISC", "engines": { "node": ">=10" @@ -14818,7 +14384,6 @@ }, "node_modules/yargs": { "version": "16.2.0", - "dev": true, "license": "MIT", "dependencies": { "cliui": "^7.0.2", @@ -14835,7 +14400,6 @@ }, "node_modules/yargs-parser": { "version": "20.2.4", - "dev": true, "license": "ISC", "engines": { "node": ">=10" @@ -14843,7 +14407,6 @@ }, "node_modules/yargs-unparser": { "version": "2.0.0", - "dev": true, "license": "MIT", "dependencies": { "camelcase": "^6.0.0", @@ -14857,7 +14420,6 @@ }, "node_modules/yn": { "version": "3.1.1", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -14865,7 +14427,6 @@ }, "node_modules/yocto-queue": { "version": "0.1.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -15138,13 +14699,314 @@ "packages/4337-local-bundler": { "name": "@safe-global/safe-4337-local-bundler", "version": "0.0.0", - "hasInstallScript": true, "license": "LGPL-3.0-only", "dependencies": { - "hardhat-deploy": "^0.12.1" + "@nomicfoundation/hardhat-toolbox": "^4.0.0", + "@safe-global/safe-4337-provider": "^0.0.0", + "ethers": "^6.11.1", + "hardhat-deploy": "^0.12.1", + "node-fetch": "^2.7.0" }, "bin": { - "local-bundler-test": "dist/bin/test.js" + "4337-local-bundler-test": "dist/bin/test.js" + } + }, + "packages/4337-local-bundler/node_modules/@adraffy/ens-normalize": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz", + "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==" + }, + "packages/4337-local-bundler/node_modules/@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "dependencies": { + "@noble/hashes": "1.3.2" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "packages/4337-local-bundler/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==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "packages/4337-local-bundler/node_modules/@nomicfoundation/hardhat-chai-matchers": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-2.0.6.tgz", + "integrity": "sha512-Te1Uyo9oJcTCF0Jy9dztaLpshmlpjLf2yPtWXlXuLjMt3RRSmJLm/+rKVTW6gfadAEs12U/it6D0ZRnnRGiICQ==", + "peer": true, + "dependencies": { + "@types/chai-as-promised": "^7.1.3", + "chai-as-promised": "^7.1.1", + "deep-eql": "^4.0.1", + "ordinal": "^1.0.3" + }, + "peerDependencies": { + "@nomicfoundation/hardhat-ethers": "^3.0.0", + "chai": "^4.2.0", + "ethers": "^6.1.0", + "hardhat": "^2.9.4" + } + }, + "packages/4337-local-bundler/node_modules/@nomicfoundation/hardhat-ethers": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ethers/-/hardhat-ethers-3.0.5.tgz", + "integrity": "sha512-RNFe8OtbZK6Ila9kIlHp0+S80/0Bu/3p41HUpaRIoHLm6X3WekTd83vob3rE54Duufu1edCiBDxspBzi2rxHHw==", + "peer": true, + "dependencies": { + "debug": "^4.1.1", + "lodash.isequal": "^4.5.0" + }, + "peerDependencies": { + "ethers": "^6.1.0", + "hardhat": "^2.0.0" + } + }, + "packages/4337-local-bundler/node_modules/@nomicfoundation/hardhat-toolbox": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-toolbox/-/hardhat-toolbox-4.0.0.tgz", + "integrity": "sha512-jhcWHp0aHaL0aDYj8IJl80v4SZXWMS1A2XxXa1CA6pBiFfJKuZinCkO6wb+POAt0LIfXB3gA3AgdcOccrcwBwA==", + "peerDependencies": { + "@nomicfoundation/hardhat-chai-matchers": "^2.0.0", + "@nomicfoundation/hardhat-ethers": "^3.0.0", + "@nomicfoundation/hardhat-network-helpers": "^1.0.0", + "@nomicfoundation/hardhat-verify": "^2.0.0", + "@typechain/ethers-v6": "^0.5.0", + "@typechain/hardhat": "^9.0.0", + "@types/chai": "^4.2.0", + "@types/mocha": ">=9.1.0", + "@types/node": ">=16.0.0", + "chai": "^4.2.0", + "ethers": "^6.4.0", + "hardhat": "^2.11.0", + "hardhat-gas-reporter": "^1.0.8", + "solidity-coverage": "^0.8.1", + "ts-node": ">=8.0.0", + "typechain": "^8.3.0", + "typescript": ">=4.5.0" + } + }, + "packages/4337-local-bundler/node_modules/@typechain/ethers-v6": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@typechain/ethers-v6/-/ethers-v6-0.5.1.tgz", + "integrity": "sha512-F+GklO8jBWlsaVV+9oHaPh5NJdd6rAKN4tklGfInX1Q7h0xPgVLP39Jl3eCulPB5qexI71ZFHwbljx4ZXNfouA==", + "peer": true, + "dependencies": { + "lodash": "^4.17.15", + "ts-essentials": "^7.0.1" + }, + "peerDependencies": { + "ethers": "6.x", + "typechain": "^8.3.2", + "typescript": ">=4.7.0" + } + }, + "packages/4337-local-bundler/node_modules/@typechain/hardhat": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@typechain/hardhat/-/hardhat-9.1.0.tgz", + "integrity": "sha512-mtaUlzLlkqTlfPwB3FORdejqBskSnh+Jl8AIJGjXNAQfRQ4ofHADPl1+oU7Z3pAJzmZbUXII8MhOLQltcHgKnA==", + "peer": true, + "dependencies": { + "fs-extra": "^9.1.0" + }, + "peerDependencies": { + "@typechain/ethers-v6": "^0.5.1", + "ethers": "^6.1.0", + "hardhat": "^2.9.9", + "typechain": "^8.3.2" + } + }, + "packages/4337-local-bundler/node_modules/@types/node": { + "version": "18.15.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", + "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==" + }, + "packages/4337-local-bundler/node_modules/ethers": { + "version": "6.11.1", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.11.1.tgz", + "integrity": "sha512-mxTAE6wqJQAbp5QAe/+o+rXOID7Nw91OZXvgpjDa1r4fAbq2Nu314oEZSbjoRLacuCzs7kUC3clEvkCQowffGg==", + "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": "18.15.13", + "aes-js": "4.0.0-beta.5", + "tslib": "2.4.0", + "ws": "8.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "packages/4337-local-bundler/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==", + "peer": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "packages/4337-local-bundler/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "peer": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "packages/4337-local-bundler/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, + "packages/4337-local-bundler/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "peer": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "packages/4337-local-bundler/node_modules/ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "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 + } + } + }, + "packages/4337-provider": { + "name": "@safe-global/safe-4337-provider", + "version": "0.0.0", + "license": "LGPL-3.0-only", + "dependencies": { + "ethers": "^6.11.1" + } + }, + "packages/4337-provider/node_modules/@adraffy/ens-normalize": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz", + "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==" + }, + "packages/4337-provider/node_modules/@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "dependencies": { + "@noble/hashes": "1.3.2" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "packages/4337-provider/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==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "packages/4337-provider/node_modules/@types/node": { + "version": "18.15.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", + "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==" + }, + "packages/4337-provider/node_modules/ethers": { + "version": "6.11.1", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.11.1.tgz", + "integrity": "sha512-mxTAE6wqJQAbp5QAe/+o+rXOID7Nw91OZXvgpjDa1r4fAbq2Nu314oEZSbjoRLacuCzs7kUC3clEvkCQowffGg==", + "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": "18.15.13", + "aes-js": "4.0.0-beta.5", + "tslib": "2.4.0", + "ws": "8.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "packages/4337-provider/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, + "packages/4337-provider/node_modules/ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "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 + } } } } diff --git a/package.json b/package.json index aa48f7437..edccf0ff0 100644 --- a/package.json +++ b/package.json @@ -4,8 +4,8 @@ "description": "A monorepo for Safe modules", "main": "dist/index.js", "workspaces": [ - "modules/*", "packages/*", + "modules/*", "examples/*" ], "scripts": { @@ -39,6 +39,7 @@ "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-refresh": "^0.4.5", "prettier": "^3.2.5", - "prettier-plugin-solidity": "^1.3.1" + "prettier-plugin-solidity": "^1.3.1", + "rimraf": "^5.0.5" } } diff --git a/packages/4337-local-bundler/package.json b/packages/4337-local-bundler/package.json index ceaf6e913..d9d5f3e7a 100644 --- a/packages/4337-local-bundler/package.json +++ b/packages/4337-local-bundler/package.json @@ -9,14 +9,15 @@ "4337-local-bundler-test": "dist/bin/test.js" }, "scripts": { - "build": "npx rimraf dist && tsc && chmod +x dist/bin/*.js", + "build": "rimraf dist && tsc && chmod +x dist/bin/*.js", "lint": "eslint .", - "prepack": "npm run build", - "prepublish": "npm run build", - "postinstall": "npm run build" + "prepare": "npm run build -w ../4337-provider && npm run build" }, "dependencies": { + "@nomicfoundation/hardhat-toolbox": "^4.0.0", + "@safe-global/safe-4337-provider": "^0.0.0", "hardhat-deploy": "^0.12.1", + "ethers": "^6.11.1", "node-fetch": "^2.7.0" } } diff --git a/packages/4337-local-bundler/src/index.ts b/packages/4337-local-bundler/src/index.ts index 3d2da4d3a..ef730dc9b 100644 --- a/packages/4337-local-bundler/src/index.ts +++ b/packages/4337-local-bundler/src/index.ts @@ -1,6 +1,6 @@ -import 'hardhat-deploy' - import deployEntryPoint from './deploy/entrypoint' import deploySafe from './deploy/safe' +export * from './testing' + export { deployEntryPoint, deploySafe } diff --git a/modules/4337/test/utils/e2e.ts b/packages/4337-local-bundler/src/testing.ts similarity index 68% rename from modules/4337/test/utils/e2e.ts rename to packages/4337-local-bundler/src/testing.ts index 445deae4a..396ca4592 100644 --- a/modules/4337/test/utils/e2e.ts +++ b/packages/4337-local-bundler/src/testing.ts @@ -1,12 +1,22 @@ +import { MultiProvider4337, UserOperation } from '@safe-global/safe-4337-provider' +import { HDNodeWallet } from 'ethers' import { deployments, ethers } from 'hardhat' -import { MultiProvider4337 } from '../../src/utils/safe' -import { UserOperation } from '../../src/utils/userOp' -import { AddressLike, BigNumberish, BytesLike, HDNodeWallet } from 'ethers' export const BUNDLER_URL = process.env.TEST_BUNLDER_URL || 'http://localhost:3000/rpc' export const BUNDLER_MNEMONIC = process.env.TEST_BUNDLER_MNEMONIC || 'test test test test test test test test test test test junk' -export async function prepareAccounts(mnemonic = BUNDLER_MNEMONIC, count = 1): Promise { +export type PrepareAccountOptions = { + mnemonic: string + count: number +} + +export async function prepareAccounts(options: Partial = {}): Promise { + const { mnemonic, count } = { + mnemonic: BUNDLER_MNEMONIC, + count: 1, + ...options, + } + const bundler = ethers.HDNodeWallet.fromPhrase(mnemonic).connect(ethers.provider) const accounts = [...Array(count)].map(() => ethers.Wallet.createRandom(ethers.provider)) @@ -39,18 +49,3 @@ export async function waitForUserOp({ sender, nonce }: Pick setTimeout(resolve, 10)) } } - -export interface MultiSendTransaction { - op: 0 | 1 - to: AddressLike - value?: BigNumberish - data: BytesLike -} - -export function encodeMultiSendTransactions(transactions: MultiSendTransaction[]) { - return ethers.concat( - transactions.map(({ op, to, value, data }) => - ethers.solidityPacked(['uint8', 'address', 'uint256', 'uint256', 'bytes'], [op, to, value ?? 0, ethers.dataLength(data), data]), - ), - ) -} diff --git a/packages/4337-local-bundler/src/types/hardhat.ts b/packages/4337-local-bundler/src/types/hardhat.ts new file mode 100644 index 000000000..23e5ec22c --- /dev/null +++ b/packages/4337-local-bundler/src/types/hardhat.ts @@ -0,0 +1,2 @@ +import '@nomicfoundation/hardhat-ethers' +import 'hardhat-deploy' diff --git a/packages/4337-provider/.eslintignore b/packages/4337-provider/.eslintignore new file mode 100644 index 000000000..849ddff3b --- /dev/null +++ b/packages/4337-provider/.eslintignore @@ -0,0 +1 @@ +dist/ diff --git a/packages/4337-provider/.gitignore b/packages/4337-provider/.gitignore new file mode 100644 index 000000000..849ddff3b --- /dev/null +++ b/packages/4337-provider/.gitignore @@ -0,0 +1 @@ +dist/ diff --git a/packages/4337-provider/README.md b/packages/4337-provider/README.md new file mode 100644 index 000000000..d61f341c9 --- /dev/null +++ b/packages/4337-provider/README.md @@ -0,0 +1,3 @@ +# ERC-4337 Ethers Provider + +This package contains an Ethers.js RPC provider with support for interacting with ERC-4337 bundlers. diff --git a/packages/4337-provider/package.json b/packages/4337-provider/package.json new file mode 100644 index 000000000..01cd048d3 --- /dev/null +++ b/packages/4337-provider/package.json @@ -0,0 +1,16 @@ +{ + "name": "@safe-global/safe-4337-provider", + "version": "0.0.0", + "private": true, + "license": "LGPL-3.0-only", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "scripts": { + "build": "rimraf dist && tsc", + "lint": "eslint .", + "prepare": "npm run build" + }, + "dependencies": { + "ethers": "^6.11.1" + } +} diff --git a/packages/4337-provider/src/index.ts b/packages/4337-provider/src/index.ts new file mode 100644 index 000000000..c17cea971 --- /dev/null +++ b/packages/4337-provider/src/index.ts @@ -0,0 +1,74 @@ +import { ethers, AddressLike, BigNumberish, BytesLike, Provider, JsonRpcProvider } from 'ethers' + +export interface RpcProvider extends Provider { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + send(method: string, params: unknown[]): Promise +} + +export type UserOperation = { + sender: string + nonce: BigNumberish + factory?: string + factoryData?: BytesLike + callData: BytesLike + callGasLimit: BigNumberish + verificationGasLimit: BigNumberish + preVerificationGas: BigNumberish + maxFeePerGas: BigNumberish + maxPriorityFeePerGas: BigNumberish + paymaster?: string + paymasterVerificationGasLimit?: BigNumberish + paymasterPostOpGasLimit?: BigNumberish + paymasterData?: BytesLike + signature: BytesLike +} + +export class MultiProvider4337 extends JsonRpcProvider { + generalProvider: RpcProvider + constructor(aaProviderUrl: string, generalProvider: RpcProvider) { + super(aaProviderUrl) + this.generalProvider = generalProvider + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + send(method: string, params: unknown[]): Promise { + if ( + [ + 'eth_supportedEntryPoints', + 'eth_estimateUserOperationGas', + 'eth_sendUserOperation', + 'eth_getUserOperationByHash', + 'eth_getUserOperationReceipt', + ].indexOf(method) >= 0 + ) { + return super.send(method, params) + } else { + return this.generalProvider.send(method, params) + } + } + + public async sendUserOperation(userOp: UserOperation, entryPoint: AddressLike): Promise { + const jsonUserOp = { + sender: ethers.getAddress(userOp.sender), + nonce: ethers.toBeHex(userOp.nonce), + callData: ethers.hexlify(userOp.callData), + callGasLimit: ethers.toBeHex(userOp.callGasLimit), + verificationGasLimit: ethers.toBeHex(userOp.verificationGasLimit), + preVerificationGas: ethers.toBeHex(userOp.preVerificationGas), + maxFeePerGas: ethers.toBeHex(userOp.maxFeePerGas), + maxPriorityFeePerGas: ethers.toBeHex(userOp.maxPriorityFeePerGas), + signature: ethers.hexlify(userOp.signature), + } as Record + if (userOp.factory) { + jsonUserOp.factory = ethers.getAddress(userOp.factory) + jsonUserOp.factoryData = ethers.hexlify(userOp.factoryData!) + } + if (userOp.paymaster) { + jsonUserOp.paymaster = ethers.getAddress(userOp.paymaster) + jsonUserOp.paymasterVerificationGasLimit = ethers.toBeHex(userOp.paymasterVerificationGasLimit!) + jsonUserOp.paymasterPostOpGasLimit = ethers.toBeHex(userOp.paymasterPostOpGasLimit!) + jsonUserOp.paymasterData = ethers.hexlify(userOp.paymasterData!) + } + return await super.send('eth_sendUserOperation', [jsonUserOp, await ethers.resolveAddress(entryPoint, this)]) + } +} diff --git a/packages/4337-provider/tsconfig.json b/packages/4337-provider/tsconfig.json new file mode 100644 index 000000000..0ae3997d0 --- /dev/null +++ b/packages/4337-provider/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "target": "es2020", + "module": "commonjs", + "declaration": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "outDir": "./dist", + "strict": true, + "skipLibCheck": true, + "resolveJsonModule": true + } +} From 4ad1f0c2f646cba3c44d2803123d85642164b25b Mon Sep 17 00:00:00 2001 From: Nicholas Rodrigues Lordello Date: Mon, 18 Mar 2024 15:34:43 +0100 Subject: [PATCH 03/12] Refactor Contract Layout (#319) This PR changes the contract layout in the `passkey` package, as well as some small renames. It also changes constants to be used as `library`-ies instead of `contract`s that are inherited (to be more consistent, as both were used previously). There are almost no logic changes, some notable examples that came with the refactor: 1. Since `SignatureData` needed to be shared by the `WebAuthnSigner` and `WebAuthnSignerFactory`, I created a `WebAuthnSignature` library that declares the stuck and includes the casting logic. This lead to some small changes in the `WebAuthnSignerFactory` notably to work around some "stack too deep" error that didn't happen before. 2. The `WebAuthnConstants` is now `WebAuthnFlags` and I **removed** the `AUTH_DATA_FLAGS_BE` and `AUTH_DATA_FLAGS_BS` because they aren't actual flags :shrug:. Don't know how they got there, but the bits in those flags are officially [reserved for future use](https://www.w3.org/TR/webauthn-2/#sctn-authenticator-data). I also didn't bother adding the `AT` and `ET` flags, since those can't really be verified on-chain anyway and not really relevant from a signature verification perspective (they indicate what additional data is available in the authenticator data blob, but we don't make use of it anyway). --- .../4337/Safe256BitECSignerLaunchpad.sol | 11 +- .../contracts/SignatureValidatorConstants.sol | 15 --- modules/passkey/contracts/WebAuthnSigner.sol | 126 ++---------------- .../contracts/WebAuthnSignerFactory.sol | 86 ++++++++++++ .../{ => base}/SignatureValidator.sol | 13 +- .../interfaces/ICustomSignerFactory.sol | 4 +- .../contracts/interfaces/IP256Verifier.sol | 34 +++++ .../passkey/contracts/interfaces/ISafe.sol | 2 +- .../interfaces/IWebAuthnVerifier.sol | 56 ++++++++ .../passkey/contracts/libraries/ERC1271.sol | 24 ++++ .../IP256Verifier.sol => libraries/P256.sol} | 41 +----- .../contracts/libraries/WebAuthnFlags.sol | 42 ++++++ .../contracts/libraries/WebAuthnSignature.sol | 44 ++++++ .../passkey/contracts/test/BadP256Verfier.sol | 2 +- ...estP256VerifierLib.sol => TestP256Lib.sol} | 7 +- .../test/TestWebAuthnSignerFactory.sol | 5 +- .../contracts/verifiers/FCLP256Verifier.sol | 6 +- .../contracts/verifiers/WebAuthnVerifier.sol | 109 +++------------ .../P256.spec.ts} | 28 ++-- 19 files changed, 362 insertions(+), 293 deletions(-) delete mode 100644 modules/passkey/contracts/SignatureValidatorConstants.sol create mode 100644 modules/passkey/contracts/WebAuthnSignerFactory.sol rename modules/passkey/contracts/{ => base}/SignatureValidator.sol (80%) create mode 100644 modules/passkey/contracts/interfaces/IP256Verifier.sol create mode 100644 modules/passkey/contracts/interfaces/IWebAuthnVerifier.sol create mode 100644 modules/passkey/contracts/libraries/ERC1271.sol rename modules/passkey/contracts/{verifiers/IP256Verifier.sol => libraries/P256.sol} (68%) create mode 100644 modules/passkey/contracts/libraries/WebAuthnFlags.sol create mode 100644 modules/passkey/contracts/libraries/WebAuthnSignature.sol rename modules/passkey/contracts/test/{TestP256VerifierLib.sol => TestP256Lib.sol} (80%) rename modules/passkey/test/{verifiers/P256VerfierLib.spec.ts => libraries/P256.spec.ts} (57%) diff --git a/modules/passkey/contracts/4337/Safe256BitECSignerLaunchpad.sol b/modules/passkey/contracts/4337/Safe256BitECSignerLaunchpad.sol index c9de10c94..5e286e496 100644 --- a/modules/passkey/contracts/4337/Safe256BitECSignerLaunchpad.sol +++ b/modules/passkey/contracts/4337/Safe256BitECSignerLaunchpad.sol @@ -5,15 +5,16 @@ import {IAccount} from "@account-abstraction/contracts/interfaces/IAccount.sol"; import {PackedUserOperation} from "@account-abstraction/contracts/interfaces/PackedUserOperation.sol"; import {_packValidationData} from "@account-abstraction/contracts/core/Helpers.sol"; import {SafeStorage} from "@safe-global/safe-contracts/contracts/libraries/SafeStorage.sol"; -import {SignatureValidatorConstants} from "../SignatureValidatorConstants.sol"; + import {ICustom256BitECSignerFactory} from "../interfaces/ICustomSignerFactory.sol"; -import {ISafeSetup} from "../interfaces/ISafe.sol"; +import {ISafe} from "../interfaces/ISafe.sol"; +import {ERC1271} from "../libraries/ERC1271.sol"; /** * @title SafeOpLaunchpad - A contract for Safe initialization with custom unique signers that would violate ERC-4337 factory rules. * @dev The is intended to be set as a Safe proxy's implementation for ERC-4337 user operation that deploys the account. */ -contract Safe256BitECSignerLaunchpad is IAccount, SafeStorage, SignatureValidatorConstants { +contract Safe256BitECSignerLaunchpad is IAccount, SafeStorage { bytes32 private constant DOMAIN_SEPARATOR_TYPEHASH = keccak256("EIP712Domain(uint256 chainId,address verifyingContract)"); // keccak256("SafeSignerLaunchpad.initHash") - 1 @@ -197,7 +198,7 @@ contract Safe256BitECSignerLaunchpad is IAccount, SafeStorage, SignatureValidato ) returns (bytes4 magicValue) { // The timestamps are validated by the entry point, therefore we will not check them again - validationData = _packValidationData(magicValue != EIP1271_MAGIC_VALUE, validUntil, validAfter); + validationData = _packValidationData(magicValue != ERC1271.MAGIC_VALUE, validUntil, validAfter); } catch { validationData = _packValidationData(true, validUntil, validAfter); } @@ -219,7 +220,7 @@ contract Safe256BitECSignerLaunchpad is IAccount, SafeStorage, SignatureValidato address[] memory owners = new address[](1); owners[0] = ICustom256BitECSignerFactory(signerFactory).createSigner(signerX, signerY, signerVerifier); - ISafeSetup(address(this)).setup(owners, 1, setupTo, setupData, fallbackHandler, address(0), 0, payable(address(0))); + ISafe(address(this)).setup(owners, 1, setupTo, setupData, fallbackHandler, address(0), 0, payable(address(0))); } (bool success, bytes memory returnData) = address(this).delegatecall(callData); diff --git a/modules/passkey/contracts/SignatureValidatorConstants.sol b/modules/passkey/contracts/SignatureValidatorConstants.sol deleted file mode 100644 index 06d5f1d25..000000000 --- a/modules/passkey/contracts/SignatureValidatorConstants.sol +++ /dev/null @@ -1,15 +0,0 @@ -// SPDX-License-Identifier: LGPL-3.0-only -/* solhint-disable one-contract-per-file */ -pragma solidity >=0.7.0 <0.9.0; - -/** - * @title SignatureValidatorConstants - * @dev This contract defines the constants used for EIP-1271 signature validation. - */ -contract SignatureValidatorConstants { - // bytes4(keccak256("isValidSignature(bytes32,bytes)") - bytes4 internal constant EIP1271_MAGIC_VALUE = 0x1626ba7e; - - // bytes4(keccak256("isValidSignature(bytes,bytes)") - bytes4 internal constant LEGACY_EIP1271_MAGIC_VALUE = 0x20c13b0b; -} diff --git a/modules/passkey/contracts/WebAuthnSigner.sol b/modules/passkey/contracts/WebAuthnSigner.sol index fba58f569..1ccfd5a63 100644 --- a/modules/passkey/contracts/WebAuthnSigner.sol +++ b/modules/passkey/contracts/WebAuthnSigner.sol @@ -1,21 +1,15 @@ // SPDX-License-Identifier: LGPL-3.0-only -/* solhint-disable one-contract-per-file */ pragma solidity >=0.8.0; -import {SignatureValidatorConstants} from "./SignatureValidatorConstants.sol"; -import {ICustom256BitECSignerFactory} from "./interfaces/ICustomSignerFactory.sol"; -import {SignatureValidator} from "./SignatureValidator.sol"; -import {IWebAuthnVerifier, WebAuthnConstants} from "./verifiers/WebAuthnVerifier.sol"; - -struct SignatureData { - bytes authenticatorData; - bytes clientDataFields; - uint256[2] rs; -} +import {SignatureValidator} from "./base/SignatureValidator.sol"; +import {IWebAuthnVerifier} from "./interfaces/IWebAuthnVerifier.sol"; +import {WebAuthnFlags} from "./libraries/WebAuthnFlags.sol"; +import {WebAuthnSignature} from "./libraries/WebAuthnSignature.sol"; /** - * @title WebAuthnSigner + * @title WebAuthn Safe Signature Validator * @dev A contract that represents a WebAuthn signer. + * @custom:security-contact bounty@safe.global */ contract WebAuthnSigner is SignatureValidator { uint256 public immutable X; @@ -38,114 +32,18 @@ contract WebAuthnSigner is SignatureValidator { * @inheritdoc SignatureValidator */ function _verifySignature(bytes32 message, bytes calldata signature) internal view virtual override returns (bool isValid) { - SignatureData calldata signaturePointer; - // solhint-disable-next-line no-inline-assembly - assembly ("memory-safe") { - signaturePointer := signature.offset - } + WebAuthnSignature.Data calldata data = WebAuthnSignature.cast(signature); return WEBAUTHN_SIG_VERIFIER.verifyWebAuthnSignatureAllowMalleability( - signaturePointer.authenticatorData, - WebAuthnConstants.AUTH_DATA_FLAGS_UV, + data.authenticatorData, + WebAuthnFlags.USER_VERIFICATION, message, - signaturePointer.clientDataFields, - signaturePointer.rs, + data.clientDataFields, + data.r, + data.s, X, Y ); } } - -/** - * @title WebAuthnSignerFactory - * @dev A factory contract for creating and managing WebAuthn signers. - */ -contract WebAuthnSignerFactory is ICustom256BitECSignerFactory, SignatureValidatorConstants { - // @inheritdoc ICustom256BitECSignerFactory - function getSigner(uint256 qx, uint256 qy, address verifier) public view override returns (address signer) { - bytes32 codeHash = keccak256(abi.encodePacked(type(WebAuthnSigner).creationCode, qx, qy, uint256(uint160(verifier)))); - signer = address(uint160(uint256(keccak256(abi.encodePacked(hex"ff", address(this), bytes32(0), codeHash))))); - } - - // @inheritdoc ICustom256BitECSignerFactory - function createSigner(uint256 qx, uint256 qy, address verifier) external returns (address signer) { - signer = getSigner(qx, qy, verifier); - - if (_hasNoCode(signer) && _validVerifier(verifier)) { - WebAuthnSigner created = new WebAuthnSigner{salt: bytes32(0)}(qx, qy, verifier); - require(address(created) == signer); - } - } - - /** - * @dev Checks if the given verifier address contains code. - * @param verifier The address of the verifier to check. - * @return A boolean indicating whether the verifier contains code or not. - */ - function _validVerifier(address verifier) internal view returns (bool) { - // The verifier should contain code (The only way to implement a webauthn verifier is with a smart contract) - return !_hasNoCode(verifier); - } - - // @inheritdoc ICustom256BitECSignerFactory - function isValidSignatureForSigner( - uint256 qx, - uint256 qy, - address verifier, - bytes32 message, - bytes calldata signature - ) external view override returns (bytes4 magicValue) { - if (checkSignature(verifier, message, signature, qx, qy)) { - magicValue = EIP1271_MAGIC_VALUE; - } - } - - /** - * @dev Checks if the provided account has no code. - * @param account The address of the account to check. - * @return True if the account has no code, false otherwise. - */ - function _hasNoCode(address account) internal view returns (bool) { - uint256 size; - // solhint-disable-next-line no-inline-assembly - assembly ("memory-safe") { - size := extcodesize(account) - } - return size == 0; - } - - /** - * @dev Checks the validity of a signature using WebAuthnVerifier. - * @param verifier The address of the WebAuthnVerifier contract. - * @param dataHash The hash of the data being signed. - * @param signature The signature to be verified. - * @param qx The x-coordinate of the public key. - * @param qy The y-coordinate of the public key. - * @return A boolean indicating whether the signature is valid or not. - */ - function checkSignature( - address verifier, - bytes32 dataHash, - bytes calldata signature, - uint256 qx, - uint256 qy - ) internal view returns (bool) { - SignatureData calldata signaturePointer; - // solhint-disable-next-line no-inline-assembly - assembly ("memory-safe") { - signaturePointer := signature.offset - } - - return - IWebAuthnVerifier(verifier).verifyWebAuthnSignatureAllowMalleability( - signaturePointer.authenticatorData, - WebAuthnConstants.AUTH_DATA_FLAGS_UV, - dataHash, - signaturePointer.clientDataFields, - signaturePointer.rs, - qx, - qy - ); - } -} diff --git a/modules/passkey/contracts/WebAuthnSignerFactory.sol b/modules/passkey/contracts/WebAuthnSignerFactory.sol new file mode 100644 index 000000000..a8ac73a7d --- /dev/null +++ b/modules/passkey/contracts/WebAuthnSignerFactory.sol @@ -0,0 +1,86 @@ +// SPDX-License-Identifier: LGPL-3.0-only +pragma solidity >=0.8.0; + +import {ICustom256BitECSignerFactory} from "./interfaces/ICustomSignerFactory.sol"; +import {IWebAuthnVerifier} from "./interfaces/IWebAuthnVerifier.sol"; +import {ERC1271} from "./libraries/ERC1271.sol"; +import {WebAuthnFlags} from "./libraries/WebAuthnFlags.sol"; +import {WebAuthnSignature} from "./libraries/WebAuthnSignature.sol"; +import {WebAuthnSigner} from "./WebAuthnSigner.sol"; + +/** + * @title WebAuthnSignerFactory + * @dev A factory contract for creating and managing WebAuthn signers. + */ +contract WebAuthnSignerFactory is ICustom256BitECSignerFactory { + // @inheritdoc ICustom256BitECSignerFactory + function getSigner(uint256 qx, uint256 qy, address verifier) public view override returns (address signer) { + bytes32 codeHash = keccak256(abi.encodePacked(type(WebAuthnSigner).creationCode, qx, qy, uint256(uint160(verifier)))); + signer = address(uint160(uint256(keccak256(abi.encodePacked(hex"ff", address(this), bytes32(0), codeHash))))); + } + + // @inheritdoc ICustom256BitECSignerFactory + function createSigner(uint256 qx, uint256 qy, address verifier) external returns (address signer) { + signer = getSigner(qx, qy, verifier); + + if (_hasNoCode(signer) && _validVerifier(verifier)) { + WebAuthnSigner created = new WebAuthnSigner{salt: bytes32(0)}(qx, qy, verifier); + require(address(created) == signer); + } + } + + // @inheritdoc ICustom256BitECSignerFactory + function isValidSignatureForSigner( + uint256 qx, + uint256 qy, + address verifier, + bytes32 message, + bytes calldata signature + ) external view override returns (bytes4 magicValue) { + WebAuthnSignature.Data calldata data = WebAuthnSignature.cast(signature); + + // Work around stack-too-deep issues by helping out the compiler figure out how to re-order + // the stack. + uint256 x = qx; + uint256 y = qy; + + if ( + IWebAuthnVerifier(verifier).verifyWebAuthnSignatureAllowMalleability( + data.authenticatorData, + WebAuthnFlags.USER_VERIFICATION, + message, + data.clientDataFields, + data.r, + data.s, + x, + y + ) + ) { + magicValue = ERC1271.MAGIC_VALUE; + } + } + + /** + * @dev Checks if the given verifier address contains code. + * @param verifier The address of the verifier to check. + * @return A boolean indicating whether the verifier contains code or not. + */ + function _validVerifier(address verifier) internal view returns (bool) { + // The verifier should contain code (The only way to implement a webauthn verifier is with a smart contract) + return !_hasNoCode(verifier); + } + + /** + * @dev Checks if the provided account has no code. + * @param account The address of the account to check. + * @return True if the account has no code, false otherwise. + */ + function _hasNoCode(address account) internal view returns (bool) { + uint256 size; + // solhint-disable-next-line no-inline-assembly + assembly ("memory-safe") { + size := extcodesize(account) + } + return size == 0; + } +} diff --git a/modules/passkey/contracts/SignatureValidator.sol b/modules/passkey/contracts/base/SignatureValidator.sol similarity index 80% rename from modules/passkey/contracts/SignatureValidator.sol rename to modules/passkey/contracts/base/SignatureValidator.sol index d6cf792ec..d2816abc8 100644 --- a/modules/passkey/contracts/SignatureValidator.sol +++ b/modules/passkey/contracts/base/SignatureValidator.sol @@ -1,13 +1,14 @@ // SPDX-License-Identifier: LGPL-3.0-only pragma solidity >=0.8.0; -import {SignatureValidatorConstants} from "./SignatureValidatorConstants.sol"; +import {ERC1271} from "../libraries/ERC1271.sol"; /** - * @title ISafeSigner - * @dev A interface for smart contract Safe owners that supports multiple `isValidSignature` versions. + * @title Signature Validator Base Contract + * @dev A interface for smart contract Safe owners that supports multiple ERC-1271 `isValidSignature` versions. + * @custom:security-contact bounty@safe.global */ -abstract contract SignatureValidator is SignatureValidatorConstants { +abstract contract SignatureValidator { /** * @dev Validates the signature for the given data. * @param data The signed data bytes. @@ -16,7 +17,7 @@ abstract contract SignatureValidator is SignatureValidatorConstants { */ function isValidSignature(bytes memory data, bytes calldata signature) external view returns (bytes4 magicValue) { if (_verifySignature(keccak256(data), signature)) { - magicValue = LEGACY_EIP1271_MAGIC_VALUE; + magicValue = ERC1271.LEGACY_MAGIC_VALUE; } } @@ -28,7 +29,7 @@ abstract contract SignatureValidator is SignatureValidatorConstants { */ function isValidSignature(bytes32 message, bytes calldata signature) external view returns (bytes4 magicValue) { if (_verifySignature(message, signature)) { - magicValue = EIP1271_MAGIC_VALUE; + magicValue = ERC1271.MAGIC_VALUE; } } diff --git a/modules/passkey/contracts/interfaces/ICustomSignerFactory.sol b/modules/passkey/contracts/interfaces/ICustomSignerFactory.sol index 0cbab63e4..b68f8c920 100644 --- a/modules/passkey/contracts/interfaces/ICustomSignerFactory.sol +++ b/modules/passkey/contracts/interfaces/ICustomSignerFactory.sol @@ -4,7 +4,8 @@ pragma solidity >=0.8.0 <0.9.0; /** * @title ICustomECSignerFactory * @dev Interface for creating and verifying ECDSA signers. This is a generalized interface that should be - * compatible with curves of any order size. Currently not used in the project and exists here for reference. + * compatible with curves of any order size. Currently not used in the project and exists here for reference. + * @custom:security-contact bounty@safe.global */ interface ICustomECSignerFactory { /** @@ -42,6 +43,7 @@ interface ICustomECSignerFactory { /** * @title ICustom256BitECSignerFactory * @dev Interface for creating and verifying ECDSA signers using 256-bit elliptic curves. + * @custom:security-contact bounty@safe.global */ interface ICustom256BitECSignerFactory { /** diff --git a/modules/passkey/contracts/interfaces/IP256Verifier.sol b/modules/passkey/contracts/interfaces/IP256Verifier.sol new file mode 100644 index 000000000..f233e40c9 --- /dev/null +++ b/modules/passkey/contracts/interfaces/IP256Verifier.sol @@ -0,0 +1,34 @@ +// SPDX-License-Identifier: LGPL-3.0-only +/* solhint-disable payable-fallback */ +pragma solidity ^0.8.0; + +/** + * @title P-256 Elliptic Curve Verifier. + * @dev P-256 verifier contract that follows the EIP-7212 EC verify precompile interface. For more + * details, refer to the EIP-7212 specification: + * @custom:security-contact bounty@safe.global + */ +interface IP256Verifier { + /** + * @notice A fallback function that takes the following input format and returns a result + * indicating whether the signature is valid or not: + * - `input[ 0: 32]`: message + * - `input[ 32: 64]`: signature r + * - `input[ 64: 96]`: signature s + * - `input[ 96:128]`: public key x + * - `input[128:160]`: public key y + * + * The output is a Solidity ABI encoded boolean value indicating whether or not the signature is + * valid. Specifically, it returns 32 bytes with a value of `0x00..00` or `0x00..01` for an + * invalid or valid signature respectively. + * + * Note that this function does not follow the Solidity ABI format (in particular, it does not + * have a 4-byte selector), which is why it requires a fallback function and not regular + * Solidity function. Additionally, it has `view` function semantics, and is expected to be + * called with `STATICCALL` opcode. + * + * @param input The encoded input parameters. + * @return output The encoded signature verification result. + */ + fallback(bytes calldata input) external returns (bytes memory output); +} diff --git a/modules/passkey/contracts/interfaces/ISafe.sol b/modules/passkey/contracts/interfaces/ISafe.sol index 7f2d89f7e..016a2ffca 100644 --- a/modules/passkey/contracts/interfaces/ISafe.sol +++ b/modules/passkey/contracts/interfaces/ISafe.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: LGPL-3.0-only pragma solidity >=0.8.0 <0.9.0; -interface ISafeSetup { +interface ISafe { function setup( address[] calldata _owners, uint256 _threshold, diff --git a/modules/passkey/contracts/interfaces/IWebAuthnVerifier.sol b/modules/passkey/contracts/interfaces/IWebAuthnVerifier.sol new file mode 100644 index 000000000..2ba86b4f6 --- /dev/null +++ b/modules/passkey/contracts/interfaces/IWebAuthnVerifier.sol @@ -0,0 +1,56 @@ +// SPDX-License-Identifier: LGPL-3.0-only +/* solhint-disable payable-fallback */ +pragma solidity ^0.8.0; + +/** + * @title WebAuthn Verifier Interface + * @dev Interface for verifying WebAuthn signatures. + * @custom:security-contact bounty@safe.global + */ +interface IWebAuthnVerifier { + /** + * @dev Verifies a WebAuthn signature. + * @param authenticatorData The authenticator data. + * @param authenticatorFlags The authenticator flags. + * @param challenge The challenge. + * @param clientDataFields The client data fields. + * @param r The ECDSA signature's R component. + * @param s The ECDSA signature's S component. + * @param qx The x-coordinate of the public key. + * @param qy The y-coordinate of the public key. + * @return success Whether the signature is valid. + */ + function verifyWebAuthnSignature( + bytes calldata authenticatorData, + bytes1 authenticatorFlags, + bytes32 challenge, + bytes calldata clientDataFields, + uint256 r, + uint256 s, + uint256 qx, + uint256 qy + ) external view returns (bool success); + + /** + * @dev Verifies a WebAuthn signature allowing malleability. + * @param authenticatorData The authenticator data. + * @param authenticatorFlags The authenticator flags. + * @param challenge The challenge. + * @param clientDataFields The client data fields. + * @param r The ECDSA signature's R component. + * @param s The ECDSA signature's S component. + * @param qx The x-coordinate of the public key. + * @param qy The y-coordinate of the public key. + * @return success Whether the signature is valid. + */ + function verifyWebAuthnSignatureAllowMalleability( + bytes calldata authenticatorData, + bytes1 authenticatorFlags, + bytes32 challenge, + bytes calldata clientDataFields, + uint256 r, + uint256 s, + uint256 qx, + uint256 qy + ) external view returns (bool success); +} diff --git a/modules/passkey/contracts/libraries/ERC1271.sol b/modules/passkey/contracts/libraries/ERC1271.sol new file mode 100644 index 000000000..25d7fb288 --- /dev/null +++ b/modules/passkey/contracts/libraries/ERC1271.sol @@ -0,0 +1,24 @@ +// SPDX-License-Identifier: LGPL-3.0-only +pragma solidity ^0.8.0; + +/** + * @title ERC-1271 Magic Values + * @dev Library that defines constants for ERC-1271 related magic values. + * @custom:security-contact bounty@safe.global + */ +library ERC1271 { + /** + * @notice ERC-1271 magic value returned on valid signatures. + * @dev Value is derived from `bytes4(keccak256("isValidSignature(bytes32,bytes)")`. + */ + bytes4 internal constant MAGIC_VALUE = 0x1626ba7e; + + /** + * @notice Legacy EIP-1271 magic value returned on valid signatures. + * @dev This value was used in previous drafts of the EIP-1271 standard, but replaced by + * {MAGIC_VALUE} in the final version. + * + * Value is derived from `bytes4(keccak256("isValidSignature(bytes,bytes)")`. + */ + bytes4 internal constant LEGACY_MAGIC_VALUE = 0x20c13b0b; +} diff --git a/modules/passkey/contracts/verifiers/IP256Verifier.sol b/modules/passkey/contracts/libraries/P256.sol similarity index 68% rename from modules/passkey/contracts/verifiers/IP256Verifier.sol rename to modules/passkey/contracts/libraries/P256.sol index 8850644da..2ba320a15 100644 --- a/modules/passkey/contracts/verifiers/IP256Verifier.sol +++ b/modules/passkey/contracts/libraries/P256.sol @@ -1,44 +1,15 @@ // SPDX-License-Identifier: LGPL-3.0-only -/* solhint-disable payable-fallback */ pragma solidity ^0.8.0; -/** - * @title P-256 Elliptic Curve Verifier. - * @dev P-256 verifier contract that follows the EIP-7212 EC verify precompile interface. For more - * details, refer to the EIP-7212 specification: - * @custom:security-contact bounty@safe.global - */ -interface IP256Verifier { - /** - * @notice A fallback function that takes the following input format and returns a result - * indicating whether the signature is valid or not: - * - `input[ 0: 32]`: message - * - `input[ 32: 64]`: signature r - * - `input[ 64: 96]`: signature s - * - `input[ 96:128]`: public key x - * - `input[128:160]`: public key y - * - * The output is a Solidity ABI encoded boolean value indicating whether or not the signature is - * valid. Specifically, it returns 32 bytes with a value of `0x00..00` or `0x00..01` for an - * invalid or valid signature respectively. - * - * Note that this function does not follow the Solidity ABI format (in particular, it does not - * have a 4-byte selector), which is why it requires a fallback function and not regular - * Solidity function. Additionally, it has `view` function semantics, and is expected to be - * called with `STATICCALL` opcode. - * - * @param input The encoded input parameters. - * @return output The encoded signature verification result. - */ - fallback(bytes calldata input) external returns (bytes memory output); -} +import {IP256Verifier} from "../interfaces/IP256Verifier.sol"; /** - * @title P-256 Elliptic Curve Verifier. - * @dev P-256 verifier contract that follows the EIP-7212 EC verify precompile interface. For more - * details, refer to the EIP-7212 specification: + * @title P-256 Elliptic Curve Verification Library. + * @dev Library P-256 verification with contracts that follows the EIP-7212 EC verify precompile + * interface. See + * @custom:security-contact bounty@safe.global */ -library P256VerifierLib { +library P256 { /** * @notice P-256 curve order n divided by 2 for the signature malleability check. * @dev By convention, non-malleable signatures must have an `s` value that is less than half of diff --git a/modules/passkey/contracts/libraries/WebAuthnFlags.sol b/modules/passkey/contracts/libraries/WebAuthnFlags.sol new file mode 100644 index 000000000..9564a79db --- /dev/null +++ b/modules/passkey/contracts/libraries/WebAuthnFlags.sol @@ -0,0 +1,42 @@ +// SPDX-License-Identifier: LGPL-3.0-only +pragma solidity ^0.8.0; + +/** + * @title WebAuthn Authentication Data Flags + * @dev Library that defines constants for WebAuthn verification of the authenticator data. In + * particular, it defines constants representing user flags that are included in an attestation's + * authenticator data. + * @custom:security-contact bounty@safe.global + */ +library WebAuthnFlags { + /** + * @notice Flag indicating user presence (UP). + * @dev A test of user presence is a simple form of authorization gesture and technical process + * where a user interacts with an authenticator by (typically) simply touching it (other + * modalities may also exist), yielding a Boolean result. Note that this does not constitute + * user verification because a user presence test, by definition, is not capable of biometric + * recognition, nor does it involve the presentation of a shared secret such as a password or + * PIN. + * + * See . + */ + bytes1 internal constant USER_PRESENCE = 0x01; + + /** + * @notice Flag indicating user verification (UV). + * @dev The technical process by which an authenticator locally authorizes the invocation of the + * authenticatorMakeCredential and authenticatorGetAssertion operations. User verification MAY + * be instigated through various authorization gesture modalities; for example, through a touch + * plus pin code, password entry, or biometric recognition (e.g., presenting a fingerprint). The + * intent is to distinguish individual users. + * + * Note that user verification does not give the Relying Party a concrete identification of the + * user, but when 2 or more ceremonies with user verification have been done with that + * credential it expresses that it was the same user that performed all of them. The same user + * might not always be the same natural person, however, if multiple natural persons share + * access to the same authenticator. + * + * See . + */ + bytes1 internal constant USER_VERIFICATION = 0x04; +} diff --git a/modules/passkey/contracts/libraries/WebAuthnSignature.sol b/modules/passkey/contracts/libraries/WebAuthnSignature.sol new file mode 100644 index 000000000..f5fce503f --- /dev/null +++ b/modules/passkey/contracts/libraries/WebAuthnSignature.sol @@ -0,0 +1,44 @@ +// SPDX-License-Identifier: LGPL-3.0-only +pragma solidity ^0.8.0; + +/** + * @title WebAuthn Signature Format + * @dev Library for reading the standard Safe WebAuthn signature format from calldata bytes. + * @custom:security-contact bounty@safe.global + */ +library WebAuthnSignature { + /** + * @notice The WebAuthn signature data format. + * @dev WebAuthn signatures are expected to be the ABI-encoded bytes of the following structure. + * @param authenticatorData The authenticator data from the WebAuthn credential assertion. + * @param clientDataFields The additional fields from the client data JSON. This is the comma + * separated fields as they appear in the client data JSON from the WebAuthn credential + * assertion after the leading {type} and {challenge} fields. + * @param r The ECDSA signature's R component. + * @param s The ECDSA signature's S component. + */ + struct Data { + bytes authenticatorData; + bytes clientDataFields; + uint256 r; + uint256 s; + } + + /** + * @notice Casts calldata bytes to a WebAuthn signature data structure. + * @param signature The calldata bytes of the WebAuthn signature. + * @return data A pointer to the signature data in calldata. + * @dev This method casts the dynamic bytes array to a signature calldata pointer without + * additional verification. This is not a security issue for the WebAuthn implementation, as any + * signature data that would be represented from an invalid `signature` value, could also be + * encoded by a valid one. It does, however, mean that callers into the WebAuthn signature + * verification implementation might not validate as much of the data that they pass in as they + * would expect, but we do not believe this to be an issue. + */ + function cast(bytes calldata signature) internal pure returns (Data calldata data) { + // solhint-disable-next-line no-inline-assembly + assembly ("memory-safe") { + data := signature.offset + } + } +} diff --git a/modules/passkey/contracts/test/BadP256Verfier.sol b/modules/passkey/contracts/test/BadP256Verfier.sol index 5c6ff4be7..0c304c2be 100644 --- a/modules/passkey/contracts/test/BadP256Verfier.sol +++ b/modules/passkey/contracts/test/BadP256Verfier.sol @@ -3,7 +3,7 @@ /* solhint-disable payable-fallback */ pragma solidity ^0.8.0; -import {IP256Verifier} from "../verifiers/IP256Verifier.sol"; +import {IP256Verifier} from "../interfaces/IP256Verifier.sol"; contract BadP256Verifier is IP256Verifier { enum Behaviour { diff --git a/modules/passkey/contracts/test/TestP256VerifierLib.sol b/modules/passkey/contracts/test/TestP256Lib.sol similarity index 80% rename from modules/passkey/contracts/test/TestP256VerifierLib.sol rename to modules/passkey/contracts/test/TestP256Lib.sol index 62b693bed..d1d5b5039 100644 --- a/modules/passkey/contracts/test/TestP256VerifierLib.sol +++ b/modules/passkey/contracts/test/TestP256Lib.sol @@ -1,10 +1,11 @@ // SPDX-License-Identifier: LGPL-3.0-only pragma solidity ^0.8.0; -import {IP256Verifier, P256VerifierLib} from "../verifiers/IP256Verifier.sol"; +import {IP256Verifier} from "../interfaces/IP256Verifier.sol"; +import {P256} from "../libraries/P256.sol"; -contract TestP256VerifierLib { - using P256VerifierLib for IP256Verifier; +contract TestP256Lib { + using P256 for IP256Verifier; function verifySignature( IP256Verifier verifier, diff --git a/modules/passkey/contracts/test/TestWebAuthnSignerFactory.sol b/modules/passkey/contracts/test/TestWebAuthnSignerFactory.sol index 6ef92be30..ab9895500 100644 --- a/modules/passkey/contracts/test/TestWebAuthnSignerFactory.sol +++ b/modules/passkey/contracts/test/TestWebAuthnSignerFactory.sol @@ -2,7 +2,8 @@ /* solhint-disable one-contract-per-file */ pragma solidity ^0.8.0; -import {IP256Verifier, P256VerifierLib} from "../verifiers/IP256Verifier.sol"; +import {IP256Verifier} from "../interfaces/IP256Verifier.sol"; +import {P256} from "../libraries/P256.sol"; contract TestWebAuthnSignerFactory { function createSigner(address verifier, uint256 x, uint256 y) external returns (TestWebAuthnSigner signer) { @@ -11,7 +12,7 @@ contract TestWebAuthnSignerFactory { } contract TestWebAuthnSigner { - using P256VerifierLib for IP256Verifier; + using P256 for IP256Verifier; struct SignatureData { bytes authenticatorData; diff --git a/modules/passkey/contracts/verifiers/FCLP256Verifier.sol b/modules/passkey/contracts/verifiers/FCLP256Verifier.sol index 95c33c46a..a8491300a 100644 --- a/modules/passkey/contracts/verifiers/FCLP256Verifier.sol +++ b/modules/passkey/contracts/verifiers/FCLP256Verifier.sol @@ -3,8 +3,8 @@ /* solhint-disable payable-fallback */ pragma solidity 0.8.24; +import {IP256Verifier} from "../interfaces/IP256Verifier.sol"; import {FCL_ecdsa} from "../vendor/FCL/FCL_ecdsa.sol"; -import {IP256Verifier} from "./IP256Verifier.sol"; /** * @title P-256 Elliptic Curve Verifier Based on The FreshCryptoLib P-256 Implementation. @@ -14,7 +14,7 @@ contract FCLP256Verifier is IP256Verifier { /** * @inheritdoc IP256Verifier */ - fallback(bytes calldata input) external returns (bytes memory) { + fallback(bytes calldata input) external returns (bytes memory output) { if (input.length != 160) { return abi.encodePacked(uint256(0)); } @@ -34,6 +34,6 @@ contract FCLP256Verifier is IP256Verifier { y := calldataload(128) } - return abi.encode(FCL_ecdsa.ecdsa_verify(message, r, s, x, y)); + output = abi.encode(FCL_ecdsa.ecdsa_verify(message, r, s, x, y)); } } diff --git a/modules/passkey/contracts/verifiers/WebAuthnVerifier.sol b/modules/passkey/contracts/verifiers/WebAuthnVerifier.sol index 1b3c7a512..be45c783c 100644 --- a/modules/passkey/contracts/verifiers/WebAuthnVerifier.sol +++ b/modules/passkey/contracts/verifiers/WebAuthnVerifier.sol @@ -1,77 +1,11 @@ // SPDX-License-Identifier: LGPL-3.0-only -/* solhint-disable one-contract-per-file */ pragma solidity >=0.8.0; -import {IP256Verifier, P256VerifierLib} from "./IP256Verifier.sol"; +import {IP256Verifier} from "../interfaces/IP256Verifier.sol"; +import {IWebAuthnVerifier} from "../interfaces/IWebAuthnVerifier.sol"; +import {P256} from "../libraries/P256.sol"; import {Base64Url} from "../vendor/FCL/utils/Base64Url.sol"; -/** - * @title WebAuthnConstants - * @dev Library that defines constants for WebAuthn verification. - */ -library WebAuthnConstants { - /** - * @dev Constants representing the flags in the authenticator data of a WebAuthn verification. - * - * - `AUTH_DATA_FLAGS_UP`: User Presence (UP) flag in the authenticator data. - * - `AUTH_DATA_FLAGS_UV`: User Verification (UV) flag in the authenticator data. - * - `AUTH_DATA_FLAGS_BE`: Attested Credential Data (BE) flag in the authenticator data. - * - `AUTH_DATA_FLAGS_BS`: Extension Data (BS) flag in the authenticator data. - */ - bytes1 internal constant AUTH_DATA_FLAGS_UP = 0x01; - bytes1 internal constant AUTH_DATA_FLAGS_UV = 0x04; - bytes1 internal constant AUTH_DATA_FLAGS_BE = 0x08; - bytes1 internal constant AUTH_DATA_FLAGS_BS = 0x10; -} - -/** - * @title IWebAuthnVerifier - * @dev Interface for verifying WebAuthn signatures. - */ -interface IWebAuthnVerifier { - /** - * @dev Verifies a WebAuthn signature allowing malleability. - * @param authenticatorData The authenticator data. - * @param authenticatorFlags The authenticator flags. - * @param challenge The challenge. - * @param clientDataFields The client data fields. - * @param rs The signature components. - * @param qx The x-coordinate of the public key. - * @param qy The y-coordinate of the public key. - * @return A boolean indicating whether the signature is valid. - */ - function verifyWebAuthnSignatureAllowMalleability( - bytes calldata authenticatorData, - bytes1 authenticatorFlags, - bytes32 challenge, - bytes calldata clientDataFields, - uint256[2] calldata rs, - uint256 qx, - uint256 qy - ) external view returns (bool); - - /** - * @dev Verifies a WebAuthn signature. - * @param authenticatorData The authenticator data. - * @param authenticatorFlags The authenticator flags. - * @param challenge The challenge. - * @param clientDataFields The client data fields. - * @param rs The signature components. - * @param qx The x-coordinate of the public key. - * @param qy The y-coordinate of the public key. - * @return A boolean indicating whether the signature is valid. - */ - function verifyWebAuthnSignature( - bytes calldata authenticatorData, - bytes1 authenticatorFlags, - bytes32 challenge, - bytes calldata clientDataFields, - uint256[2] calldata rs, - uint256 qx, - uint256 qy - ) external view returns (bool); -} - /** * @title WebAuthnVerifier * @dev A contract that implements a WebAuthn signature verification following the precompile's interface. @@ -86,8 +20,11 @@ interface IWebAuthnVerifier { * * Both functions take the authenticator data, authenticator flags, challenge, client data fields, r and s components of the signature, and x and y coordinates of the public key as input. * The `verifyWebAuthnSignature` function also checks for signature malleability by ensuring that the s component is less than the curve order n/2. + * @custom:security-contact bounty@safe.global */ contract WebAuthnVerifier is IWebAuthnVerifier { + using P256 for IP256Verifier; + IP256Verifier internal immutable P256_VERIFIER; constructor(IP256Verifier verifier) { @@ -120,25 +57,18 @@ contract WebAuthnVerifier is IWebAuthnVerifier { } /** - * @dev Verifies the signature of a WebAuthn message using P256 elliptic curve, allowing for signature malleability. - * @param authenticatorData Authenticator data. - * @param authenticatorFlags Authenticator flags. - * @param challenge Challenge. - * @param clientDataFields Client data fields. - * @param rs R and S components of the signature. - * @param qx X coordinate of the public key. - * @param qy Y coordinate of the public key. - * @return result Whether the signature is valid. + * @inheritdoc IWebAuthnVerifier */ function verifyWebAuthnSignatureAllowMalleability( bytes calldata authenticatorData, bytes1 authenticatorFlags, bytes32 challenge, bytes calldata clientDataFields, - uint256[2] calldata rs, + uint256 r, + uint256 s, uint256 qx, uint256 qy - ) public view returns (bool result) { + ) public view returns (bool success) { // check authenticator flags, e.g. for User Presence (0x01) and/or User Verification (0x04) if ((authenticatorData[32] & authenticatorFlags) != authenticatorFlags) { return false; @@ -146,29 +76,22 @@ contract WebAuthnVerifier is IWebAuthnVerifier { bytes32 message = signingMessage(authenticatorData, challenge, clientDataFields); - result = P256VerifierLib.verifySignatureAllowMalleability(P256_VERIFIER, message, rs[0], rs[1], qx, qy); + success = P256_VERIFIER.verifySignatureAllowMalleability(message, r, s, qx, qy); } /** - * @dev Verifies the signature of a WebAuthn message using the P256 elliptic curve, checking for signature malleability. - * @param authenticatorData Authenticator data. - * @param authenticatorFlags Authenticator flags. - * @param challenge Challenge. - * @param clientDataFields Client data fields. - * @param rs R and S components of the signature. - * @param qx X coordinate of the public key. - * @param qy Y coordinate of the public key. - * @return result Whether the signature is valid. + * @inheritdoc IWebAuthnVerifier */ function verifyWebAuthnSignature( bytes calldata authenticatorData, bytes1 authenticatorFlags, bytes32 challenge, bytes calldata clientDataFields, - uint256[2] calldata rs, + uint256 r, + uint256 s, uint256 qx, uint256 qy - ) public view returns (bool result) { + ) public view returns (bool success) { // check authenticator flags, e.g. for User Presence (0x01) and/or User Verification (0x04) if ((authenticatorData[32] & authenticatorFlags) != authenticatorFlags) { return false; @@ -176,6 +99,6 @@ contract WebAuthnVerifier is IWebAuthnVerifier { bytes32 message = signingMessage(authenticatorData, challenge, clientDataFields); - result = P256VerifierLib.verifySignature(P256_VERIFIER, message, rs[0], rs[1], qx, qy); + success = P256_VERIFIER.verifySignature(message, r, s, qx, qy); } } diff --git a/modules/passkey/test/verifiers/P256VerfierLib.spec.ts b/modules/passkey/test/libraries/P256.spec.ts similarity index 57% rename from modules/passkey/test/verifiers/P256VerfierLib.spec.ts rename to modules/passkey/test/libraries/P256.spec.ts index eee79b16b..f98868197 100644 --- a/modules/passkey/test/verifiers/P256VerfierLib.spec.ts +++ b/modules/passkey/test/libraries/P256.spec.ts @@ -3,49 +3,49 @@ import { deployments, ethers } from 'hardhat' import { Account } from '../utils/p256' -describe('P256VerifierLib', function () { +describe('P256', function () { const setupTests = deployments.createFixture(async ({ deployments }) => { const { FCLP256Verifier } = await deployments.fixture() const verifier = await ethers.getContractAt('FCLP256Verifier', FCLP256Verifier.address) - const P256VerifierLib = await ethers.getContractFactory('TestP256VerifierLib') - const verifierLib = await P256VerifierLib.deploy() + const P256Lib = await ethers.getContractFactory('TestP256Lib') + const p256Lib = await P256Lib.deploy() const account = new Account() - return { verifier, verifierLib, account } + return { verifier, p256Lib, account } }) it('Should return true on valid signature', async function () { - const { verifier, verifierLib, account } = await setupTests() + const { verifier, p256Lib, account } = await setupTests() const message = ethers.id('hello world') const { r, s } = account.sign(message) const { x, y } = account.publicKey - expect(await verifierLib.verifySignature(verifier, message, r, s, x, y)).to.be.true + expect(await p256Lib.verifySignature(verifier, message, r, s, x, y)).to.be.true }) it('Should return false on invalid signature', async function () { - const { verifier, verifierLib } = await setupTests() + const { verifier, p256Lib } = await setupTests() - expect(await verifierLib.verifySignature(verifier, ethers.ZeroHash, 1, 2, 3, 4)).to.be.false + expect(await p256Lib.verifySignature(verifier, ethers.ZeroHash, 1, 2, 3, 4)).to.be.false }) it('Should check for signature signature malleability', async function () { - const { verifier, verifierLib, account } = await setupTests() + const { verifier, p256Lib, account } = await setupTests() const message = ethers.id('hello world') const { r, highS } = account.sign(message) const { x, y } = account.publicKey - expect(await verifierLib.verifySignature(verifier, message, r, highS, x, y)).to.be.false - expect(await verifierLib.verifySignatureAllowMalleability(verifier, message, r, highS, x, y)).to.be.true + expect(await p256Lib.verifySignature(verifier, message, r, highS, x, y)).to.be.false + expect(await p256Lib.verifySignatureAllowMalleability(verifier, message, r, highS, x, y)).to.be.true }) it('Should return false for misbehaving verifiers', async function () { - const { verifierLib, account } = await setupTests() + const { p256Lib, account } = await setupTests() const message = ethers.id('hello world') const { r, s } = account.sign(message) @@ -58,8 +58,8 @@ describe('P256VerifierLib', function () { for (const behaviour of [WRONG_RETURNDATA_LENGTH, INVALID_BOOLEAN_VALUE, REVERT]) { const verifier = await BadP256Verifier.deploy(behaviour) - expect(await verifierLib.verifySignature(verifier, message, r, s, x, y)).to.be.false - expect(await verifierLib.verifySignatureAllowMalleability(verifier, message, r, s, x, y)).to.be.false + expect(await p256Lib.verifySignature(verifier, message, r, s, x, y)).to.be.false + expect(await p256Lib.verifySignatureAllowMalleability(verifier, message, r, s, x, y)).to.be.false } }) }) From 7468b32eb55a193516957aa20e2053156f96d1f5 Mon Sep 17 00:00:00 2001 From: Nicholas Rodrigues Lordello Date: Mon, 18 Mar 2024 15:53:21 +0100 Subject: [PATCH 04/12] Refactor WebAuthn Implementation (#320) This PR refactors the WebAuthn implementation into a library instead of split into multiple contracts. This removes the amount of `CALL`s required for verifying a signature. I did some analysis on the deployment vs. signature verification costs comparing this code, `main` and this change incorporating optimizations from #289 and found this: | setup | deployment | verification (dummy) | break even | | ------------------------------------ | ---------- | -------------------- | ---------- | | main (viaIR = false) | 373543 | 17789 | 0 | | main (viaIR = true) | 393494 | 16443 | 15 | | this branch (viaIR = false) | 612123 | 13835 | 61 | | this branch (viaIR = true) | 594058 | 12551 | 43 | | base64 optimizations (viaIR = false) | 442545 | 12965 | 15 | | base64 optimizations (viaIR = true) | 414941 | 11102 | 7 | Meaning that after 7 signatures, even with the slightly larger deployment costs, we would break even by avoiding the extra `CALL` (noting that ABI-encoding the call to the `WebAuthnVerifier` is not particularly efficient in the first place). --- ...chpad.sol => SafeECDSASignerLaunchpad.sol} | 20 +- modules/passkey/contracts/WebAuthnSigner.sol | 38 ++-- .../contracts/WebAuthnSignerFactory.sol | 59 +++--- .../contracts/base/SignatureValidator.sol | 4 +- .../interfaces/ICustomECDSASignerFactory.sol | 53 ++++++ .../interfaces/ICustomSignerFactory.sol | 87 --------- .../interfaces/IWebAuthnVerifier.sol | 56 ------ .../passkey/contracts/libraries/WebAuthn.sol | 178 ++++++++++++++++++ .../contracts/libraries/WebAuthnFlags.sol | 42 ----- .../contracts/libraries/WebAuthnSignature.sol | 44 ----- ...tractsImports.sol => 4337Dependencies.sol} | 0 .../passkey/contracts/test/TestP256Lib.sol | 3 +- .../test/TestWebAuthnSignerFactory.sol | 3 +- .../contracts/verifiers/WebAuthnVerifier.sol | 104 ---------- modules/passkey/src/deploy/launchpad.ts | 2 +- modules/passkey/src/deploy/verifiers.ts | 9 +- .../passkey/test/4337/WebAuthnSigner.spec.ts | 16 +- 17 files changed, 289 insertions(+), 429 deletions(-) rename modules/passkey/contracts/4337/{Safe256BitECSignerLaunchpad.sol => SafeECDSASignerLaunchpad.sol} (93%) create mode 100644 modules/passkey/contracts/interfaces/ICustomECDSASignerFactory.sol delete mode 100644 modules/passkey/contracts/interfaces/ICustomSignerFactory.sol delete mode 100644 modules/passkey/contracts/interfaces/IWebAuthnVerifier.sol create mode 100644 modules/passkey/contracts/libraries/WebAuthn.sol delete mode 100644 modules/passkey/contracts/libraries/WebAuthnFlags.sol delete mode 100644 modules/passkey/contracts/libraries/WebAuthnSignature.sol rename modules/passkey/contracts/test/{4337ContractsImports.sol => 4337Dependencies.sol} (100%) delete mode 100644 modules/passkey/contracts/verifiers/WebAuthnVerifier.sol diff --git a/modules/passkey/contracts/4337/Safe256BitECSignerLaunchpad.sol b/modules/passkey/contracts/4337/SafeECDSASignerLaunchpad.sol similarity index 93% rename from modules/passkey/contracts/4337/Safe256BitECSignerLaunchpad.sol rename to modules/passkey/contracts/4337/SafeECDSASignerLaunchpad.sol index 5e286e496..064991b70 100644 --- a/modules/passkey/contracts/4337/Safe256BitECSignerLaunchpad.sol +++ b/modules/passkey/contracts/4337/SafeECDSASignerLaunchpad.sol @@ -6,15 +6,17 @@ import {PackedUserOperation} from "@account-abstraction/contracts/interfaces/Pac import {_packValidationData} from "@account-abstraction/contracts/core/Helpers.sol"; import {SafeStorage} from "@safe-global/safe-contracts/contracts/libraries/SafeStorage.sol"; -import {ICustom256BitECSignerFactory} from "../interfaces/ICustomSignerFactory.sol"; +import {ICustomECDSASignerFactory} from "../interfaces/ICustomECDSASignerFactory.sol"; import {ISafe} from "../interfaces/ISafe.sol"; import {ERC1271} from "../libraries/ERC1271.sol"; /** - * @title SafeOpLaunchpad - A contract for Safe initialization with custom unique signers that would violate ERC-4337 factory rules. - * @dev The is intended to be set as a Safe proxy's implementation for ERC-4337 user operation that deploys the account. + * @title Safe Launchpad for Custom ECDSA Signing Schemes. + * @dev A launchpad account implementation that enables the creation of Safes that use custom ECDSA + * signing schemes that require additional contract deployments over ERC-4337. + * @custom:security-contact bounty@safe.global */ -contract Safe256BitECSignerLaunchpad is IAccount, SafeStorage { +contract SafeECDSASignerLaunchpad is IAccount, SafeStorage { bytes32 private constant DOMAIN_SEPARATOR_TYPEHASH = keccak256("EIP712Domain(uint256 chainId,address verifyingContract)"); // keccak256("SafeSignerLaunchpad.initHash") - 1 @@ -189,13 +191,7 @@ contract Safe256BitECSignerLaunchpad is IAccount, SafeStorage { bytes memory operationData = _getOperationData(userOpHash, validAfter, validUntil); bytes32 operationHash = keccak256(operationData); try - ICustom256BitECSignerFactory(signerFactory).isValidSignatureForSigner( - signerX, - signerY, - signerVerifier, - operationHash, - signature - ) + ICustomECDSASignerFactory(signerFactory).isValidSignatureForSigner(operationHash, signature, signerX, signerY, signerVerifier) returns (bytes4 magicValue) { // The timestamps are validated by the entry point, therefore we will not check them again validationData = _packValidationData(magicValue != ERC1271.MAGIC_VALUE, validUntil, validAfter); @@ -218,7 +214,7 @@ contract Safe256BitECSignerLaunchpad is IAccount, SafeStorage { SafeStorage.singleton = singleton; { address[] memory owners = new address[](1); - owners[0] = ICustom256BitECSignerFactory(signerFactory).createSigner(signerX, signerY, signerVerifier); + owners[0] = ICustomECDSASignerFactory(signerFactory).createSigner(signerX, signerY, signerVerifier); ISafe(address(this)).setup(owners, 1, setupTo, setupData, fallbackHandler, address(0), 0, payable(address(0))); } diff --git a/modules/passkey/contracts/WebAuthnSigner.sol b/modules/passkey/contracts/WebAuthnSigner.sol index 1ccfd5a63..661f7cccc 100644 --- a/modules/passkey/contracts/WebAuthnSigner.sol +++ b/modules/passkey/contracts/WebAuthnSigner.sol @@ -2,9 +2,8 @@ pragma solidity >=0.8.0; import {SignatureValidator} from "./base/SignatureValidator.sol"; -import {IWebAuthnVerifier} from "./interfaces/IWebAuthnVerifier.sol"; -import {WebAuthnFlags} from "./libraries/WebAuthnFlags.sol"; -import {WebAuthnSignature} from "./libraries/WebAuthnSignature.sol"; +import {IP256Verifier} from "./interfaces/IP256Verifier.sol"; +import {WebAuthn} from "./libraries/WebAuthn.sol"; /** * @title WebAuthn Safe Signature Validator @@ -14,36 +13,25 @@ import {WebAuthnSignature} from "./libraries/WebAuthnSignature.sol"; contract WebAuthnSigner is SignatureValidator { uint256 public immutable X; uint256 public immutable Y; - IWebAuthnVerifier public immutable WEBAUTHN_SIG_VERIFIER; + IP256Verifier public immutable VERIFIER; /** * @dev Constructor function. - * @param qx The X coordinate of the signer's public key. - * @param qy The Y coordinate of the signer's public key. - * @param webAuthnVerifier The address of the P256Verifier contract. + * @param x The X coordinate of the signer's public key. + * @param y The Y coordinate of the signer's public key. + * @param verifier The P-256 verifier to use for signature validation. It MUST implement the + * same interface as the EIP-7212 precompile. */ - constructor(uint256 qx, uint256 qy, address webAuthnVerifier) { - X = qx; - Y = qy; - WEBAUTHN_SIG_VERIFIER = IWebAuthnVerifier(webAuthnVerifier); + constructor(uint256 x, uint256 y, address verifier) { + X = x; + Y = y; + VERIFIER = IP256Verifier(verifier); } /** * @inheritdoc SignatureValidator */ - function _verifySignature(bytes32 message, bytes calldata signature) internal view virtual override returns (bool isValid) { - WebAuthnSignature.Data calldata data = WebAuthnSignature.cast(signature); - - return - WEBAUTHN_SIG_VERIFIER.verifyWebAuthnSignatureAllowMalleability( - data.authenticatorData, - WebAuthnFlags.USER_VERIFICATION, - message, - data.clientDataFields, - data.r, - data.s, - X, - Y - ); + function _verifySignature(bytes32 message, bytes calldata signature) internal view virtual override returns (bool success) { + success = WebAuthn.verifySignature(message, signature, WebAuthn.USER_VERIFICATION, X, Y, VERIFIER); } } diff --git a/modules/passkey/contracts/WebAuthnSignerFactory.sol b/modules/passkey/contracts/WebAuthnSignerFactory.sol index a8ac73a7d..0f2c72911 100644 --- a/modules/passkey/contracts/WebAuthnSignerFactory.sol +++ b/modules/passkey/contracts/WebAuthnSignerFactory.sol @@ -1,61 +1,48 @@ // SPDX-License-Identifier: LGPL-3.0-only pragma solidity >=0.8.0; -import {ICustom256BitECSignerFactory} from "./interfaces/ICustomSignerFactory.sol"; -import {IWebAuthnVerifier} from "./interfaces/IWebAuthnVerifier.sol"; +import {ICustomECDSASignerFactory} from "./interfaces/ICustomECDSASignerFactory.sol"; +import {IP256Verifier} from "./interfaces/IP256Verifier.sol"; import {ERC1271} from "./libraries/ERC1271.sol"; -import {WebAuthnFlags} from "./libraries/WebAuthnFlags.sol"; -import {WebAuthnSignature} from "./libraries/WebAuthnSignature.sol"; +import {WebAuthn} from "./libraries/WebAuthn.sol"; import {WebAuthnSigner} from "./WebAuthnSigner.sol"; /** * @title WebAuthnSignerFactory * @dev A factory contract for creating and managing WebAuthn signers. */ -contract WebAuthnSignerFactory is ICustom256BitECSignerFactory { - // @inheritdoc ICustom256BitECSignerFactory - function getSigner(uint256 qx, uint256 qy, address verifier) public view override returns (address signer) { - bytes32 codeHash = keccak256(abi.encodePacked(type(WebAuthnSigner).creationCode, qx, qy, uint256(uint160(verifier)))); +contract WebAuthnSignerFactory is ICustomECDSASignerFactory { + /** + * @inheritdoc ICustomECDSASignerFactory + */ + function getSigner(uint256 x, uint256 y, address verifier) public view override returns (address signer) { + bytes32 codeHash = keccak256(abi.encodePacked(type(WebAuthnSigner).creationCode, x, y, uint256(uint160(verifier)))); signer = address(uint160(uint256(keccak256(abi.encodePacked(hex"ff", address(this), bytes32(0), codeHash))))); } - // @inheritdoc ICustom256BitECSignerFactory - function createSigner(uint256 qx, uint256 qy, address verifier) external returns (address signer) { - signer = getSigner(qx, qy, verifier); + /** + * @inheritdoc ICustomECDSASignerFactory + */ + function createSigner(uint256 x, uint256 y, address verifier) external returns (address signer) { + signer = getSigner(x, y, verifier); if (_hasNoCode(signer) && _validVerifier(verifier)) { - WebAuthnSigner created = new WebAuthnSigner{salt: bytes32(0)}(qx, qy, verifier); + WebAuthnSigner created = new WebAuthnSigner{salt: bytes32(0)}(x, y, verifier); require(address(created) == signer); } } - // @inheritdoc ICustom256BitECSignerFactory + /** + * @inheritdoc ICustomECDSASignerFactory + */ function isValidSignatureForSigner( - uint256 qx, - uint256 qy, - address verifier, bytes32 message, - bytes calldata signature + bytes calldata signature, + uint256 x, + uint256 y, + address verifier ) external view override returns (bytes4 magicValue) { - WebAuthnSignature.Data calldata data = WebAuthnSignature.cast(signature); - - // Work around stack-too-deep issues by helping out the compiler figure out how to re-order - // the stack. - uint256 x = qx; - uint256 y = qy; - - if ( - IWebAuthnVerifier(verifier).verifyWebAuthnSignatureAllowMalleability( - data.authenticatorData, - WebAuthnFlags.USER_VERIFICATION, - message, - data.clientDataFields, - data.r, - data.s, - x, - y - ) - ) { + if (WebAuthn.verifySignature(message, signature, WebAuthn.USER_VERIFICATION, x, y, IP256Verifier(verifier))) { magicValue = ERC1271.MAGIC_VALUE; } } diff --git a/modules/passkey/contracts/base/SignatureValidator.sol b/modules/passkey/contracts/base/SignatureValidator.sol index d2816abc8..800282b2d 100644 --- a/modules/passkey/contracts/base/SignatureValidator.sol +++ b/modules/passkey/contracts/base/SignatureValidator.sol @@ -37,7 +37,7 @@ abstract contract SignatureValidator { * @dev Verifies a signature. * @param message The signed message. * @param signature The signature to be validated. - * @return isValid Whether or not the signature is valid. + * @return success Whether the signature is valid. */ - function _verifySignature(bytes32 message, bytes calldata signature) internal view virtual returns (bool isValid); + function _verifySignature(bytes32 message, bytes calldata signature) internal view virtual returns (bool success); } diff --git a/modules/passkey/contracts/interfaces/ICustomECDSASignerFactory.sol b/modules/passkey/contracts/interfaces/ICustomECDSASignerFactory.sol new file mode 100644 index 000000000..0df5acab1 --- /dev/null +++ b/modules/passkey/contracts/interfaces/ICustomECDSASignerFactory.sol @@ -0,0 +1,53 @@ +// SPDX-License-Identifier: LGPL-3.0-only +pragma solidity >=0.8.0 <0.9.0; + +/** + * @title Custom ECDSA Signer Factory + * @dev Interface for a factory contract that can create ERC-1271 compatible signers, and verify + * signatures for custom ECDSA schemes. + * @custom:security-contact bounty@safe.global + */ +interface ICustomECDSASignerFactory { + /** + * @notice Gets the unique signer address for the specified data. + * @dev The unique signer address must be unique for some given data. The signer is not + * guaranteed to be created yet. + * @param x The x-coordinate of the public key. + * @param y The y-coordinate of the public key. + * @param verifier The address of the verifier. + * @return signer The signer address. + */ + function getSigner(uint256 x, uint256 y, address verifier) external view returns (address signer); + + /** + * @notice Create a new unique signer for the specified data. + * @dev The unique signer address must be unique for some given data. This must not revert if + * the unique owner already exists. + * @param x The x-coordinate of the public key. + * @param y The y-coordinate of the public key. + * @param verifier The address of the verifier. + * @return signer The signer address. + */ + function createSigner(uint256 x, uint256 y, address verifier) external returns (address signer); + + /** + * @notice Verifies a signature for the specified address without deploying it. + * @dev This must be equivalent to first deploying the signer with the factory, and then + * verifying the signature with it directly: + * `factory.createSigner(signerData).isValidSignature(message, signature)` + * @param message The signed message. + * @param signature The signature bytes. + * @param x The x-coordinate of the public key. + * @param y The y-coordinate of the public key. + * @param verifier The address of the verifier. + * @return magicValue Returns the ERC-1271 magic value when the signature is valid. Reverting or + * returning any other value implies an invalid signature. + */ + function isValidSignatureForSigner( + bytes32 message, + bytes calldata signature, + uint256 x, + uint256 y, + address verifier + ) external view returns (bytes4 magicValue); +} diff --git a/modules/passkey/contracts/interfaces/ICustomSignerFactory.sol b/modules/passkey/contracts/interfaces/ICustomSignerFactory.sol deleted file mode 100644 index b68f8c920..000000000 --- a/modules/passkey/contracts/interfaces/ICustomSignerFactory.sol +++ /dev/null @@ -1,87 +0,0 @@ -// SPDX-License-Identifier: LGPL-3.0-only -pragma solidity >=0.8.0 <0.9.0; - -/** - * @title ICustomECSignerFactory - * @dev Interface for creating and verifying ECDSA signers. This is a generalized interface that should be - * compatible with curves of any order size. Currently not used in the project and exists here for reference. - * @custom:security-contact bounty@safe.global - */ -interface ICustomECSignerFactory { - /** - * @notice Gets the unique signer address for the specified data. - * @dev The signer address should be unique for the given data. The signer does not need to be created yet. - * @param data The signer-specific data. - * @return signer The signer address. - */ - function getSigner(bytes memory data) external view returns (address signer); - - /** - * @notice Creates a new unique signer for the specified data. - * @dev The signer address must be unique for the given data. This should not revert if the signer already exists. - * @param data The signer-specific data. - * @return signer The signer address. - */ - function createSigner(bytes memory data) external returns (address signer); - - /** - * @notice Verifies a signature for the specified address without deploying it. - * @dev This should be equivalent to first deploying the signer with the factory, and then verifying the signature - * with it directly: `factory.createSigner(signerData).isValidSignature(message, signature)` - * @param message The signed message. - * @param signature The signature bytes. - * @param signerData The signer data to verify the signature for. - * @return magicValue Returns the legacy EIP-1271 magic value (`bytes4(keccak256("isValidSignature(bytes,bytes)")`) when the signature is valid. Reverting or returning any other value implies an invalid signature. - */ - function isValidSignatureForSigner( - bytes32 message, - bytes calldata signature, - bytes calldata signerData - ) external view returns (bytes4 magicValue); -} - -/** - * @title ICustom256BitECSignerFactory - * @dev Interface for creating and verifying ECDSA signers using 256-bit elliptic curves. - * @custom:security-contact bounty@safe.global - */ -interface ICustom256BitECSignerFactory { - /** - * @notice Gets the unique signer address for the specified data. - * @dev The unique signer address must be unique for some given data. The signer is not guaranteed to be created yet. - * @param qx The x-coordinate of the public key. - * @param qy The y-coordinate of the public key. - * @param verifier The address of the verifier. - * @return signer The signer address. - */ - function getSigner(uint256 qx, uint256 qy, address verifier) external view returns (address signer); - - /** - * @notice Create a new unique signer for the specified data. - * @dev The unique signer address must be unique for some given data. This must not revert if the unique owner already exists. - * @param qx The x-coordinate of the public key. - * @param qy The y-coordinate of the public key. - * @param verifier The address of the verifier. - * @return signer The signer address. - */ - function createSigner(uint256 qx, uint256 qy, address verifier) external returns (address signer); - - /** - * @notice Verifies a signature for the specified address without deploying it. - * @dev This must be equivalent to first deploying the signer with the factory, and then verifying the signature - * with it directly: `factory.createSigner(signerData).isValidSignature(message, signature)` - * @param qx The x-coordinate of the public key. - * @param qy The y-coordinate of the public key. - * @param verifier The address of the verifier. - * @param message The signed message. - * @param signature The signature bytes. - * @return magicValue Returns a legacy EIP-1271 magic value (`bytes4(keccak256(isValidSignature(bytes,bytes))`) when the signature is valid. Reverting or returning any other value implies an invalid signature. - */ - function isValidSignatureForSigner( - uint256 qx, - uint256 qy, - address verifier, - bytes32 message, - bytes calldata signature - ) external view returns (bytes4 magicValue); -} diff --git a/modules/passkey/contracts/interfaces/IWebAuthnVerifier.sol b/modules/passkey/contracts/interfaces/IWebAuthnVerifier.sol deleted file mode 100644 index 2ba86b4f6..000000000 --- a/modules/passkey/contracts/interfaces/IWebAuthnVerifier.sol +++ /dev/null @@ -1,56 +0,0 @@ -// SPDX-License-Identifier: LGPL-3.0-only -/* solhint-disable payable-fallback */ -pragma solidity ^0.8.0; - -/** - * @title WebAuthn Verifier Interface - * @dev Interface for verifying WebAuthn signatures. - * @custom:security-contact bounty@safe.global - */ -interface IWebAuthnVerifier { - /** - * @dev Verifies a WebAuthn signature. - * @param authenticatorData The authenticator data. - * @param authenticatorFlags The authenticator flags. - * @param challenge The challenge. - * @param clientDataFields The client data fields. - * @param r The ECDSA signature's R component. - * @param s The ECDSA signature's S component. - * @param qx The x-coordinate of the public key. - * @param qy The y-coordinate of the public key. - * @return success Whether the signature is valid. - */ - function verifyWebAuthnSignature( - bytes calldata authenticatorData, - bytes1 authenticatorFlags, - bytes32 challenge, - bytes calldata clientDataFields, - uint256 r, - uint256 s, - uint256 qx, - uint256 qy - ) external view returns (bool success); - - /** - * @dev Verifies a WebAuthn signature allowing malleability. - * @param authenticatorData The authenticator data. - * @param authenticatorFlags The authenticator flags. - * @param challenge The challenge. - * @param clientDataFields The client data fields. - * @param r The ECDSA signature's R component. - * @param s The ECDSA signature's S component. - * @param qx The x-coordinate of the public key. - * @param qy The y-coordinate of the public key. - * @return success Whether the signature is valid. - */ - function verifyWebAuthnSignatureAllowMalleability( - bytes calldata authenticatorData, - bytes1 authenticatorFlags, - bytes32 challenge, - bytes calldata clientDataFields, - uint256 r, - uint256 s, - uint256 qx, - uint256 qy - ) external view returns (bool success); -} diff --git a/modules/passkey/contracts/libraries/WebAuthn.sol b/modules/passkey/contracts/libraries/WebAuthn.sol new file mode 100644 index 000000000..687618f0f --- /dev/null +++ b/modules/passkey/contracts/libraries/WebAuthn.sol @@ -0,0 +1,178 @@ +// SPDX-License-Identifier: LGPL-3.0-only +pragma solidity ^0.8.0; + +import {Base64Url} from "../vendor/FCL/utils/Base64Url.sol"; +import {IP256Verifier, P256} from "./P256.sol"; + +/** + * @title WebAuthn Signature Verification + * @dev Library for verifying WebAuthn signatures for public key credentials using the ES256 + * algorithm. + * @custom:security-contact bounty@safe.global + */ +library WebAuthn { + using P256 for IP256Verifier; + + /** + * @notice The WebAuthn signature data format. + * @dev WebAuthn signatures are expected to be the ABI-encoded bytes of the following structure. + * @param authenticatorData The authenticator data from the WebAuthn credential assertion. + * @param clientDataFields The additional fields from the client data JSON. This is the comma + * separated fields as they appear in the client data JSON from the WebAuthn credential + * assertion after the leading {type} and {challenge} fields. + * @param r The ECDSA signature's R component. + * @param s The ECDSA signature's S component. + */ + struct Signature { + bytes authenticatorData; + string clientDataFields; + uint256 r; + uint256 s; + } + + /** + * @notice A WebAuthn authenticator bit-flags + * @dev Represents flags that are included in a WebAuthn assertion's authenticator data and can + * be used to check on-chain how the user was authorized by the device when signing. + */ + type AuthenticatorFlags is bytes1; + + /** + * @notice Authenticator data flag indicating user presence (UP). + * @dev A test of user presence is a simple form of authorization gesture and technical process + * where a user interacts with an authenticator by (typically) simply touching it (other + * modalities may also exist), yielding a Boolean result. Note that this does not constitute + * user verification because a user presence test, by definition, is not capable of biometric + * recognition, nor does it involve the presentation of a shared secret such as a password or + * PIN. + * + * See . + */ + AuthenticatorFlags internal constant USER_PRESENCE = AuthenticatorFlags.wrap(0x01); + + /** + * @notice Authenticator data flag indicating user verification (UV). + * @dev The technical process by which an authenticator locally authorizes the invocation of the + * authenticatorMakeCredential and authenticatorGetAssertion operations. User verification MAY + * be instigated through various authorization gesture modalities; for example, through a touch + * plus pin code, password entry, or biometric recognition (e.g., presenting a fingerprint). The + * intent is to distinguish individual users. + * + * Note that user verification does not give the Relying Party a concrete identification of the + * user, but when 2 or more ceremonies with user verification have been done with that + * credential it expresses that it was the same user that performed all of them. The same user + * might not always be the same natural person, however, if multiple natural persons share + * access to the same authenticator. + * + * See . + */ + AuthenticatorFlags internal constant USER_VERIFICATION = AuthenticatorFlags.wrap(0x04); + + /** + * @notice Casts calldata bytes to a WebAuthn signature data structure. + * @param signature The calldata bytes of the WebAuthn signature. + * @return data A pointer to the signature data in calldata. + * @dev This method casts the dynamic bytes array to a signature calldata pointer without + * additional verification. This is not a security issue for the WebAuthn implementation, as any + * signature data that would be represented from an invalid `signature` value, could also be + * encoded by a valid one. It does, however, mean that callers into the WebAuthn signature + * verification implementation might not validate as much of the data that they pass in as they + * would expect. With that in mind, callers should not rely on the encoding being verified. + */ + function castSignature(bytes calldata signature) internal pure returns (Signature calldata data) { + // solhint-disable-next-line no-inline-assembly + assembly ("memory-safe") { + data := signature.offset + } + } + + /** + * @notice Generate a signing message based on the authenticator data, challenge, and client + * data fields. + * @dev The signing message are the 32-bytes that are actually signed by the P-256 private key + * when doing a WebAuthn credential assertion. Note that we verify that the challenge is indeed + * signed by using its value to compute the signing message on-chain. + * @param challenge The WebAuthn challenge used for the credential assertion. + * @param authenticatorData Authenticator data. + * @param clientDataFields Client data fields. + * @return message Signing message. + */ + function signingMessage( + bytes32 challenge, + bytes calldata authenticatorData, + string calldata clientDataFields + ) internal pure returns (bytes32 message) { + string memory encodedChallenge = Base64Url.encode(abi.encodePacked(challenge)); + /* solhint-disable quotes */ + bytes memory clientDataJson = abi.encodePacked( + '{"type":"webauthn.get","challenge":"', + encodedChallenge, + '",', + clientDataFields, + "}" + ); + /* solhint-enable quotes */ + + message = sha256(abi.encodePacked(authenticatorData, sha256(clientDataJson))); + } + + /** + * @notice Checks that the required authenticator data flags are set. + * @param authenticatorData The authenticator data. + * @param authenticatorFlags The authenticator flags to check for. + * @return success Whether the authenticator data flags are set. + */ + function checkAuthenticatorFlags( + bytes calldata authenticatorData, + AuthenticatorFlags authenticatorFlags + ) internal pure returns (bool success) { + success = authenticatorData[32] & AuthenticatorFlags.unwrap(authenticatorFlags) == AuthenticatorFlags.unwrap(authenticatorFlags); + } + + /** + * @notice Verifies a WebAuthn signature. + * @param challenge The WebAuthn challenge used in the credential assertion. + * @param signature The encoded WebAuthn signature bytes. + * @param authenticatorFlags The authenticator data flags that must be set. + * @param x The x-coordinate of the credential's public key. + * @param y The y-coordinate of the credential's public key. + * @param verifier The P-256 verifier implementation to use. + * @return success Whether the signature is valid. + */ + function verifySignature( + bytes32 challenge, + bytes calldata signature, + AuthenticatorFlags authenticatorFlags, + uint256 x, + uint256 y, + IP256Verifier verifier + ) internal view returns (bool success) { + success = verifySignature(challenge, castSignature(signature), authenticatorFlags, x, y, verifier); + } + + /** + * @notice Verifies a WebAuthn signature. + * @param challenge The WebAuthn challenge used in the credential assertion. + * @param signature The WebAuthn signature data. + * @param authenticatorFlags The authenticator data flags that must be set. + * @param x The x-coordinate of the credential's public key. + * @param y The y-coordinate of the credential's public key. + * @param verifier The P-256 verifier implementation to use. + * @return success Whether the signature is valid. + */ + function verifySignature( + bytes32 challenge, + Signature calldata signature, + AuthenticatorFlags authenticatorFlags, + uint256 x, + uint256 y, + IP256Verifier verifier + ) internal view returns (bool success) { + if (!checkAuthenticatorFlags(signature.authenticatorData, authenticatorFlags)) { + return false; + } + + bytes32 message = signingMessage(challenge, signature.authenticatorData, signature.clientDataFields); + success = verifier.verifySignatureAllowMalleability(message, signature.r, signature.s, x, y); + } +} diff --git a/modules/passkey/contracts/libraries/WebAuthnFlags.sol b/modules/passkey/contracts/libraries/WebAuthnFlags.sol deleted file mode 100644 index 9564a79db..000000000 --- a/modules/passkey/contracts/libraries/WebAuthnFlags.sol +++ /dev/null @@ -1,42 +0,0 @@ -// SPDX-License-Identifier: LGPL-3.0-only -pragma solidity ^0.8.0; - -/** - * @title WebAuthn Authentication Data Flags - * @dev Library that defines constants for WebAuthn verification of the authenticator data. In - * particular, it defines constants representing user flags that are included in an attestation's - * authenticator data. - * @custom:security-contact bounty@safe.global - */ -library WebAuthnFlags { - /** - * @notice Flag indicating user presence (UP). - * @dev A test of user presence is a simple form of authorization gesture and technical process - * where a user interacts with an authenticator by (typically) simply touching it (other - * modalities may also exist), yielding a Boolean result. Note that this does not constitute - * user verification because a user presence test, by definition, is not capable of biometric - * recognition, nor does it involve the presentation of a shared secret such as a password or - * PIN. - * - * See . - */ - bytes1 internal constant USER_PRESENCE = 0x01; - - /** - * @notice Flag indicating user verification (UV). - * @dev The technical process by which an authenticator locally authorizes the invocation of the - * authenticatorMakeCredential and authenticatorGetAssertion operations. User verification MAY - * be instigated through various authorization gesture modalities; for example, through a touch - * plus pin code, password entry, or biometric recognition (e.g., presenting a fingerprint). The - * intent is to distinguish individual users. - * - * Note that user verification does not give the Relying Party a concrete identification of the - * user, but when 2 or more ceremonies with user verification have been done with that - * credential it expresses that it was the same user that performed all of them. The same user - * might not always be the same natural person, however, if multiple natural persons share - * access to the same authenticator. - * - * See . - */ - bytes1 internal constant USER_VERIFICATION = 0x04; -} diff --git a/modules/passkey/contracts/libraries/WebAuthnSignature.sol b/modules/passkey/contracts/libraries/WebAuthnSignature.sol deleted file mode 100644 index f5fce503f..000000000 --- a/modules/passkey/contracts/libraries/WebAuthnSignature.sol +++ /dev/null @@ -1,44 +0,0 @@ -// SPDX-License-Identifier: LGPL-3.0-only -pragma solidity ^0.8.0; - -/** - * @title WebAuthn Signature Format - * @dev Library for reading the standard Safe WebAuthn signature format from calldata bytes. - * @custom:security-contact bounty@safe.global - */ -library WebAuthnSignature { - /** - * @notice The WebAuthn signature data format. - * @dev WebAuthn signatures are expected to be the ABI-encoded bytes of the following structure. - * @param authenticatorData The authenticator data from the WebAuthn credential assertion. - * @param clientDataFields The additional fields from the client data JSON. This is the comma - * separated fields as they appear in the client data JSON from the WebAuthn credential - * assertion after the leading {type} and {challenge} fields. - * @param r The ECDSA signature's R component. - * @param s The ECDSA signature's S component. - */ - struct Data { - bytes authenticatorData; - bytes clientDataFields; - uint256 r; - uint256 s; - } - - /** - * @notice Casts calldata bytes to a WebAuthn signature data structure. - * @param signature The calldata bytes of the WebAuthn signature. - * @return data A pointer to the signature data in calldata. - * @dev This method casts the dynamic bytes array to a signature calldata pointer without - * additional verification. This is not a security issue for the WebAuthn implementation, as any - * signature data that would be represented from an invalid `signature` value, could also be - * encoded by a valid one. It does, however, mean that callers into the WebAuthn signature - * verification implementation might not validate as much of the data that they pass in as they - * would expect, but we do not believe this to be an issue. - */ - function cast(bytes calldata signature) internal pure returns (Data calldata data) { - // solhint-disable-next-line no-inline-assembly - assembly ("memory-safe") { - data := signature.offset - } - } -} diff --git a/modules/passkey/contracts/test/4337ContractsImports.sol b/modules/passkey/contracts/test/4337Dependencies.sol similarity index 100% rename from modules/passkey/contracts/test/4337ContractsImports.sol rename to modules/passkey/contracts/test/4337Dependencies.sol diff --git a/modules/passkey/contracts/test/TestP256Lib.sol b/modules/passkey/contracts/test/TestP256Lib.sol index d1d5b5039..ac0b40ade 100644 --- a/modules/passkey/contracts/test/TestP256Lib.sol +++ b/modules/passkey/contracts/test/TestP256Lib.sol @@ -1,8 +1,7 @@ // SPDX-License-Identifier: LGPL-3.0-only pragma solidity ^0.8.0; -import {IP256Verifier} from "../interfaces/IP256Verifier.sol"; -import {P256} from "../libraries/P256.sol"; +import {IP256Verifier, P256} from "../libraries/P256.sol"; contract TestP256Lib { using P256 for IP256Verifier; diff --git a/modules/passkey/contracts/test/TestWebAuthnSignerFactory.sol b/modules/passkey/contracts/test/TestWebAuthnSignerFactory.sol index ab9895500..373f76caa 100644 --- a/modules/passkey/contracts/test/TestWebAuthnSignerFactory.sol +++ b/modules/passkey/contracts/test/TestWebAuthnSignerFactory.sol @@ -2,8 +2,7 @@ /* solhint-disable one-contract-per-file */ pragma solidity ^0.8.0; -import {IP256Verifier} from "../interfaces/IP256Verifier.sol"; -import {P256} from "../libraries/P256.sol"; +import {IP256Verifier, P256} from "../libraries/P256.sol"; contract TestWebAuthnSignerFactory { function createSigner(address verifier, uint256 x, uint256 y) external returns (TestWebAuthnSigner signer) { diff --git a/modules/passkey/contracts/verifiers/WebAuthnVerifier.sol b/modules/passkey/contracts/verifiers/WebAuthnVerifier.sol deleted file mode 100644 index be45c783c..000000000 --- a/modules/passkey/contracts/verifiers/WebAuthnVerifier.sol +++ /dev/null @@ -1,104 +0,0 @@ -// SPDX-License-Identifier: LGPL-3.0-only -pragma solidity >=0.8.0; - -import {IP256Verifier} from "../interfaces/IP256Verifier.sol"; -import {IWebAuthnVerifier} from "../interfaces/IWebAuthnVerifier.sol"; -import {P256} from "../libraries/P256.sol"; -import {Base64Url} from "../vendor/FCL/utils/Base64Url.sol"; - -/** - * @title WebAuthnVerifier - * @dev A contract that implements a WebAuthn signature verification following the precompile's interface. - * The contract inherits from `P256VerifierWithWrapperFunctions` and provides wrapper functions for WebAuthn signatures. - * - * This contract is designed to allow verifying signatures from WebAuthn-compatible devices, such as biometric authenticators. - * It works by generating a signing message based on the authenticator data, challenge, and client data fields, and then verifying the signature using the P256 elliptic curve. - * - * The contract provides two main functions: - * - `verifyWebAuthnSignatureAllowMalleability`: Verifies the signature of a WebAuthn message using P256 elliptic curve, allowing for signature malleability. - * - `verifyWebAuthnSignature`: Verifies the signature of a WebAuthn message using the P256 elliptic curve, checking for signature malleability. - * - * Both functions take the authenticator data, authenticator flags, challenge, client data fields, r and s components of the signature, and x and y coordinates of the public key as input. - * The `verifyWebAuthnSignature` function also checks for signature malleability by ensuring that the s component is less than the curve order n/2. - * @custom:security-contact bounty@safe.global - */ -contract WebAuthnVerifier is IWebAuthnVerifier { - using P256 for IP256Verifier; - - IP256Verifier internal immutable P256_VERIFIER; - - constructor(IP256Verifier verifier) { - P256_VERIFIER = verifier; - } - - /** - * @dev Generates a signing message based on the authenticator data, challenge, and client data fields. - * @param authenticatorData Authenticator data. - * @param challenge Challenge. - * @param clientDataFields Client data fields. - * @return message Signing message. - */ - function signingMessage( - bytes calldata authenticatorData, - bytes32 challenge, - bytes calldata clientDataFields - ) internal pure returns (bytes32 message) { - string memory encodedChallenge = Base64Url.encode(abi.encodePacked(challenge)); - /* solhint-disable quotes */ - bytes memory clientDataJson = abi.encodePacked( - '{"type":"webauthn.get","challenge":"', - encodedChallenge, - '",', - clientDataFields, - "}" - ); - /* solhint-enable quotes */ - message = sha256(abi.encodePacked(authenticatorData, sha256(clientDataJson))); - } - - /** - * @inheritdoc IWebAuthnVerifier - */ - function verifyWebAuthnSignatureAllowMalleability( - bytes calldata authenticatorData, - bytes1 authenticatorFlags, - bytes32 challenge, - bytes calldata clientDataFields, - uint256 r, - uint256 s, - uint256 qx, - uint256 qy - ) public view returns (bool success) { - // check authenticator flags, e.g. for User Presence (0x01) and/or User Verification (0x04) - if ((authenticatorData[32] & authenticatorFlags) != authenticatorFlags) { - return false; - } - - bytes32 message = signingMessage(authenticatorData, challenge, clientDataFields); - - success = P256_VERIFIER.verifySignatureAllowMalleability(message, r, s, qx, qy); - } - - /** - * @inheritdoc IWebAuthnVerifier - */ - function verifyWebAuthnSignature( - bytes calldata authenticatorData, - bytes1 authenticatorFlags, - bytes32 challenge, - bytes calldata clientDataFields, - uint256 r, - uint256 s, - uint256 qx, - uint256 qy - ) public view returns (bool success) { - // check authenticator flags, e.g. for User Presence (0x01) and/or User Verification (0x04) - if ((authenticatorData[32] & authenticatorFlags) != authenticatorFlags) { - return false; - } - - bytes32 message = signingMessage(authenticatorData, challenge, clientDataFields); - - success = P256_VERIFIER.verifySignature(message, r, s, qx, qy); - } -} diff --git a/modules/passkey/src/deploy/launchpad.ts b/modules/passkey/src/deploy/launchpad.ts index 437965b1d..f693e3861 100644 --- a/modules/passkey/src/deploy/launchpad.ts +++ b/modules/passkey/src/deploy/launchpad.ts @@ -6,7 +6,7 @@ const deploy: DeployFunction = async ({ deployments, getNamedAccounts }) => { const entryPoint = await deployments.get('EntryPoint') - await deploy('Safe256BitECSignerLaunchpad', { + await deploy('SafeECDSASignerLaunchpad', { from: deployer, args: [entryPoint.address], log: true, diff --git a/modules/passkey/src/deploy/verifiers.ts b/modules/passkey/src/deploy/verifiers.ts index 0120fad94..ec377d776 100644 --- a/modules/passkey/src/deploy/verifiers.ts +++ b/modules/passkey/src/deploy/verifiers.ts @@ -14,19 +14,12 @@ const deploy: DeployFunction = async ({ deployments, getNamedAccounts }) => { log: true, }) - const FCLP256Verifier = await deploy('FCLP256Verifier', { + await deploy('FCLP256Verifier', { from: deployer, args: [], deterministicDeployment: true, log: true, }) - - await deploy('WebAuthnVerifier', { - from: deployer, - args: [FCLP256Verifier.address], - log: true, - deterministicDeployment: true, - }) } export default deploy diff --git a/modules/passkey/test/4337/WebAuthnSigner.spec.ts b/modules/passkey/test/4337/WebAuthnSigner.spec.ts index a236fc79c..dcc42df6b 100644 --- a/modules/passkey/test/4337/WebAuthnSigner.spec.ts +++ b/modules/passkey/test/4337/WebAuthnSigner.spec.ts @@ -12,7 +12,7 @@ describe('WebAuthn Signers [@4337]', () => { }) const setupTests = deployments.createFixture(async ({ deployments }) => { - const { EntryPoint, Safe4337Module, Safe256BitECSignerLaunchpad, SafeProxyFactory, SafeModuleSetup, SafeL2, WebAuthnVerifier } = + const { EntryPoint, Safe4337Module, SafeECDSASignerLaunchpad, SafeProxyFactory, SafeModuleSetup, SafeL2, FCLP256Verifier } = await deployments.run() const [user] = await prepareAccounts() const bundler = bundlerRpc() @@ -21,9 +21,9 @@ describe('WebAuthn Signers [@4337]', () => { const module = await ethers.getContractAt(Safe4337Module.abi, Safe4337Module.address) const proxyFactory = await ethers.getContractAt(SafeProxyFactory.abi, SafeProxyFactory.address) const safeModuleSetup = await ethers.getContractAt(SafeModuleSetup.abi, SafeModuleSetup.address) - const signerLaunchpad = await ethers.getContractAt('Safe256BitECSignerLaunchpad', Safe256BitECSignerLaunchpad.address) + const signerLaunchpad = await ethers.getContractAt('SafeECDSASignerLaunchpad', SafeECDSASignerLaunchpad.address) const singleton = await ethers.getContractAt(SafeL2.abi, SafeL2.address) - const webAuthnVerifier = await ethers.getContractAt('WebAuthnVerifier', WebAuthnVerifier.address) + const verifier = await ethers.getContractAt('IP256Verifier', FCLP256Verifier.address) const WebAuthnSignerFactory = await ethers.getContractFactory('WebAuthnSignerFactory') const signerFactory = await WebAuthnSignerFactory.deploy() @@ -43,7 +43,7 @@ describe('WebAuthn Signers [@4337]', () => { singleton, signerFactory, navigator, - webAuthnVerifier, + verifier, SafeL2, } }) @@ -60,12 +60,12 @@ describe('WebAuthn Signers [@4337]', () => { singleton, signerFactory, navigator, - webAuthnVerifier, + verifier, SafeL2, } = await setupTests() const { chainId } = await ethers.provider.getNetwork() - const webAuthnVerifierAddress = await webAuthnVerifier.getAddress() + const verifierAddress = await verifier.getAddress() const credential = navigator.credentials.create({ publicKey: { @@ -83,14 +83,14 @@ describe('WebAuthn Signers [@4337]', () => { }, }) const publicKey = decodePublicKey(credential.response) - const signerAddress = await signerFactory.getSigner(publicKey.x, publicKey.y, webAuthnVerifierAddress) + const signerAddress = await signerFactory.getSigner(publicKey.x, publicKey.y, verifierAddress) const safeInit = { singleton: singleton.target, signerFactory: signerFactory.target, signerX: publicKey.x, signerY: publicKey.y, - signerVerifier: webAuthnVerifierAddress, + signerVerifier: verifierAddress, setupTo: safeModuleSetup.target, setupData: safeModuleSetup.interface.encodeFunctionData('enableModules', [[module.target]]), fallbackHandler: module.target, From 1e96cdc693a8448103c0c1d62c1fc4324dd5b3b5 Mon Sep 17 00:00:00 2001 From: Nicholas Rodrigues Lordello Date: Tue, 19 Mar 2024 08:24:27 +0100 Subject: [PATCH 05/12] Add Gas Benchmarking Tests for WebAuthn Signer (#324) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR adds gas benchmarking tests for the WebAuthn signer. Note that we got rid of the `MultipleVerifiers.spec.ts` file, as it is essentially the new gas benchmarking tests, and there was no need to duplicate the work. The benchmarks look like this: ``` Gas Benchmarking WebAuthnSigner ⛽ deployment: 612123 ✔ Benchmark signer deployment cost (694ms) ⛽ verification (FreshCryptoLib): 219365 ✔ Benchmark signer verification cost with FreshCryptoLib verifier (172ms) ⛽ verification (daimo-eth): 351273 ✔ Benchmark signer verification cost with daimo-eth verifier (201ms) ⛽ verification (Dummy): 13835 ✔ Benchmark signer verification cost with Dummy verifier ``` Note that we include a "dummy" benchmark, this is because gas consumption of P-256 signature verification is unstable, and this allows us to better compare gas characteristics of the `WebAuthn` signing message computation overhead. Furthermore, we remove the check on whether or not the P-256 verifier has code. This is important as precompiles have no code, so our WebAuthn stuff wouldn't work with precompiles without this change. --- .../contracts/WebAuthnSignerFactory.sol | 12 +-- .../passkey/contracts/test/Benchmarker.sol | 19 ++++ .../contracts/test/DummyP256Verifier.sol | 12 +++ modules/passkey/test/GasBenchmarking.spec.ts | 94 +++++++++++++++++++ .../passkey/test/MultipleVerifiers.spec.ts | 69 -------------- .../test/webauthn/WebAuthnShim.spec.ts | 4 +- 6 files changed, 128 insertions(+), 82 deletions(-) create mode 100644 modules/passkey/contracts/test/Benchmarker.sol create mode 100644 modules/passkey/contracts/test/DummyP256Verifier.sol create mode 100644 modules/passkey/test/GasBenchmarking.spec.ts delete mode 100644 modules/passkey/test/MultipleVerifiers.spec.ts diff --git a/modules/passkey/contracts/WebAuthnSignerFactory.sol b/modules/passkey/contracts/WebAuthnSignerFactory.sol index 0f2c72911..c74a77081 100644 --- a/modules/passkey/contracts/WebAuthnSignerFactory.sol +++ b/modules/passkey/contracts/WebAuthnSignerFactory.sol @@ -26,7 +26,7 @@ contract WebAuthnSignerFactory is ICustomECDSASignerFactory { function createSigner(uint256 x, uint256 y, address verifier) external returns (address signer) { signer = getSigner(x, y, verifier); - if (_hasNoCode(signer) && _validVerifier(verifier)) { + if (_hasNoCode(signer)) { WebAuthnSigner created = new WebAuthnSigner{salt: bytes32(0)}(x, y, verifier); require(address(created) == signer); } @@ -47,16 +47,6 @@ contract WebAuthnSignerFactory is ICustomECDSASignerFactory { } } - /** - * @dev Checks if the given verifier address contains code. - * @param verifier The address of the verifier to check. - * @return A boolean indicating whether the verifier contains code or not. - */ - function _validVerifier(address verifier) internal view returns (bool) { - // The verifier should contain code (The only way to implement a webauthn verifier is with a smart contract) - return !_hasNoCode(verifier); - } - /** * @dev Checks if the provided account has no code. * @param account The address of the account to check. diff --git a/modules/passkey/contracts/test/Benchmarker.sol b/modules/passkey/contracts/test/Benchmarker.sol new file mode 100644 index 000000000..15c504547 --- /dev/null +++ b/modules/passkey/contracts/test/Benchmarker.sol @@ -0,0 +1,19 @@ +// SPDX-License-Identifier: LGPL-3.0-only +pragma solidity ^0.8.0; + +contract Benchmarker { + function call(address to, bytes memory data) external returns (uint256 gas, bytes memory returnData) { + gas = gasleft(); + + bool success; + (success, returnData) = to.call(data); + if (!success) { + // solhint-disable-next-line no-inline-assembly + assembly ("memory-safe") { + revert(add(returnData, 32), mload(returnData)) + } + } + + gas = gas - gasleft(); + } +} diff --git a/modules/passkey/contracts/test/DummyP256Verifier.sol b/modules/passkey/contracts/test/DummyP256Verifier.sol new file mode 100644 index 000000000..ef66fae13 --- /dev/null +++ b/modules/passkey/contracts/test/DummyP256Verifier.sol @@ -0,0 +1,12 @@ +// SPDX-License-Identifier: LGPL-3.0-only +/* solhint-disable no-complex-fallback */ +/* solhint-disable payable-fallback */ +pragma solidity ^0.8.0; + +import {IP256Verifier} from "../interfaces/IP256Verifier.sol"; + +contract DummyP256Verifier is IP256Verifier { + fallback(bytes calldata) external returns (bytes memory output) { + output = abi.encode(true); + } +} diff --git a/modules/passkey/test/GasBenchmarking.spec.ts b/modules/passkey/test/GasBenchmarking.spec.ts new file mode 100644 index 000000000..009c913c8 --- /dev/null +++ b/modules/passkey/test/GasBenchmarking.spec.ts @@ -0,0 +1,94 @@ +import { expect } from 'chai' +import { deployments, ethers } from 'hardhat' + +import { WebAuthnCredentials, decodePublicKey, encodeWebAuthnSignature } from './utils/webauthn' +import { IP256Verifier } from '../typechain-types' + +describe('Gas Benchmarking', function () { + const navigator = { + credentials: new WebAuthnCredentials(), + } + const credential = navigator.credentials.create({ + publicKey: { + rp: { + name: 'Safe', + id: 'safe.global', + }, + user: { + id: ethers.getBytes(ethers.id('chucknorris')), + name: 'chucknorris', + displayName: 'Chuck Norris', + }, + challenge: ethers.toBeArray(Date.now()), + pubKeyCredParams: [{ type: 'public-key', alg: -7 }], + }, + }) + + const setupTests = deployments.createFixture(async ({ deployments }) => { + const { DaimoP256Verifier, FCLP256Verifier, WebAuthnSignerFactory } = await deployments.fixture() + + const Benchmarker = await ethers.getContractFactory('Benchmarker') + const benchmarker = await Benchmarker.deploy() + + const factory = await ethers.getContractAt('WebAuthnSignerFactory', WebAuthnSignerFactory.address) + + const DummyP256Verifier = await ethers.getContractFactory('DummyP256Verifier') + const verifiers = { + fcl: await ethers.getContractAt('IP256Verifier', FCLP256Verifier.address), + daimo: await ethers.getContractAt('IP256Verifier', DaimoP256Verifier.address), + dummy: await DummyP256Verifier.deploy(), + } as Record + + return { benchmarker, factory, verifiers } + }) + + describe('WebAuthnSigner', () => { + it(`Benchmark signer deployment cost`, async function () { + const { benchmarker, factory } = await setupTests() + + const { x, y } = decodePublicKey(credential.response) + const verifier = `0x${'ee'.repeat(20)}` + + const [gas] = await benchmarker.call.staticCall(factory, factory.interface.encodeFunctionData('createSigner', [x, y, verifier])) + + console.log(` ⛽ deployment: ${gas}`) + }) + + for (const [name, key] of [ + ['FreshCryptoLib', 'fcl'], + ['daimo-eth', 'daimo'], + ['Dummy', 'dummy'], + ]) { + it(`Benchmark signer verification cost with ${name} verifier`, async function () { + const { benchmarker, verifiers, factory } = await setupTests() + + const challenge = ethers.id('hello world') + const assertion = navigator.credentials.get({ + publicKey: { + challenge: ethers.getBytes(challenge), + rpId: 'safe.global', + allowCredentials: [{ type: 'public-key', id: new Uint8Array(credential.rawId) }], + userVerification: 'required', + }, + }) + + const { x, y } = decodePublicKey(credential.response) + const verifier = verifiers[key] + + await factory.createSigner(x, y, verifier) + const signer = await ethers.getContractAt('WebAuthnSigner', await factory.getSigner(x, y, verifier)) + const signature = encodeWebAuthnSignature(assertion.response) + + const [gas, returnData] = await benchmarker.call.staticCall( + signer, + signer.interface.encodeFunctionData('isValidSignature(bytes32,bytes)', [challenge, signature]), + ) + + const [magicValue] = ethers.AbiCoder.defaultAbiCoder().decode(['bytes4'], returnData) + expect(magicValue).to.equal('0x1626ba7e') + + console.log(` ⛽ verification (${name}): ${gas}`) + }) + } + }) +}) diff --git a/modules/passkey/test/MultipleVerifiers.spec.ts b/modules/passkey/test/MultipleVerifiers.spec.ts deleted file mode 100644 index 6d0c0e7ff..000000000 --- a/modules/passkey/test/MultipleVerifiers.spec.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { expect } from 'chai' -import { deployments, ethers } from 'hardhat' - -import { WebAuthnCredentials, decodePublicKey, encodeWebAuthnSignature } from './utils/webauthn' -import { IP256Verifier } from '../typechain-types' - -describe('Multiple Verifiers', function () { - const navigator = { - credentials: new WebAuthnCredentials(), - } - const credential = navigator.credentials.create({ - publicKey: { - rp: { - name: 'Safe', - id: 'safe.global', - }, - user: { - id: ethers.getBytes(ethers.id('chucknorris')), - name: 'chucknorris', - displayName: 'Chuck Norris', - }, - challenge: ethers.toBeArray(Date.now()), - pubKeyCredParams: [{ type: 'public-key', alg: -7 }], - }, - }) - - const setupTests = deployments.createFixture(async ({ deployments }) => { - const { DaimoP256Verifier, FCLP256Verifier } = await deployments.fixture() - - const verifiers = { - fcl: await ethers.getContractAt('IP256Verifier', FCLP256Verifier.address), - daimo: await ethers.getContractAt('IP256Verifier', DaimoP256Verifier.address), - } as Record - - // TODO: Right now, we are using a test factory. However, once the canonical factory is - // introduced, we should port this test to use it instead. - const TestWebAuthnSignerFactory = await ethers.getContractFactory('TestWebAuthnSignerFactory') - const factory = await TestWebAuthnSignerFactory.deploy() - - return { verifiers, credential, factory } - }) - - for (const [name, key] of [ - ['FreshCryptoLib', 'fcl'], - ['daimo-eth', 'daimo'], - ]) { - it(`Should support the ${name} P-256 Verifier`, async function () { - const { verifiers, credential, factory } = await setupTests() - - const challenge = ethers.id('hello world') - const assertion = navigator.credentials.get({ - publicKey: { - challenge: ethers.getBytes(challenge), - rpId: 'safe.global', - allowCredentials: [{ type: 'public-key', id: new Uint8Array(credential.rawId) }], - }, - }) - - const verifier = verifiers[key] - const { x, y } = decodePublicKey(credential.response) - - const signer = await ethers.getContractAt('TestWebAuthnSigner', await factory.createSigner.staticCall(verifier, x, y)) - const signature = encodeWebAuthnSignature(assertion.response) - - await factory.createSigner(verifier, x, y) - expect(await signer.isValidSignature(challenge, signature)).to.be.equal('0x1626ba7e') - }) - } -}) diff --git a/modules/passkey/test/webauthn/WebAuthnShim.spec.ts b/modules/passkey/test/webauthn/WebAuthnShim.spec.ts index 1ac405dd2..d5f5ebfc9 100644 --- a/modules/passkey/test/webauthn/WebAuthnShim.spec.ts +++ b/modules/passkey/test/webauthn/WebAuthnShim.spec.ts @@ -31,7 +31,7 @@ describe('WebAuthn Shim', () => { } describe('navigator.credentials.create()', () => { - it('creates and verifies a new credential', async () => { + it('Should create and verify a new credential', async () => { const options = await generateRegistrationOptions({ rpName: rp.name, rpID: rp.id, @@ -79,7 +79,7 @@ describe('WebAuthn Shim', () => { }) describe('navigator.credentials.get()', () => { - it('authorises and verifies an existing credential', async () => { + it('Should authorise and verify an existing credential', async () => { const credential = navigator.credentials.create({ publicKey: { rp, From 16755237fa02340ec64ff3fc7049f95753be05bb Mon Sep 17 00:00:00 2001 From: Shebin John Date: Tue, 19 Mar 2024 13:57:42 +0530 Subject: [PATCH 06/12] Gelato using `execTransaction` for gas metering (#326) This PR converts the gas metering check from using 4337 `EntryPoint v0.6` to using `execTransaction` directly in Safe. Package Lock has been updated due to the addition of the Gelato relay kit package. Changes: - Allow execution of Gelato-based transactions in `base-sepolia` as well. - Updating gas metering in README's from Gelato based on `execTransaction`. - Introduction of abi, address and types files into its location. - Changing from `userOp` of 4337 to `execTransaction` of Safe for Gelato-based transactions. - Installation of Gelato Relay Kit. (Earlier RPC calls were used directly for `userOps`). - Additional functions for Gelato-based operations in `safe.ts` (Creating calldata, init code, etc.). - Removal of `userOp` related functions of Gelato. Closes #296 --- examples/4337-gas-metering/.env.example | 16 +- examples/4337-gas-metering/README.md | 28 +- examples/4337-gas-metering/alchemy/alchemy.ts | 5 +- examples/4337-gas-metering/gelato/README.md | 217 +- examples/4337-gas-metering/gelato/gelato.ts | 184 +- examples/4337-gas-metering/package.json | 4 +- examples/4337-gas-metering/pimlico/pimlico.ts | 9 +- examples/4337-gas-metering/utils/abi.ts | 259 + examples/4337-gas-metering/utils/address.ts | 28 + examples/4337-gas-metering/utils/erc20.ts | 121 +- examples/4337-gas-metering/utils/erc721.ts | 12 +- examples/4337-gas-metering/utils/multisend.ts | 15 +- .../4337-gas-metering/utils/nativeTransfer.ts | 14 +- examples/4337-gas-metering/utils/safe.ts | 509 +- examples/4337-gas-metering/utils/type.ts | 33 + examples/4337-gas-metering/utils/userOps.ts | 137 +- package-lock.json | 13190 ++++++++++++++++ 17 files changed, 14093 insertions(+), 688 deletions(-) create mode 100644 examples/4337-gas-metering/utils/abi.ts create mode 100644 examples/4337-gas-metering/utils/address.ts create mode 100644 examples/4337-gas-metering/utils/type.ts diff --git a/examples/4337-gas-metering/.env.example b/examples/4337-gas-metering/.env.example index 5d4a35fc4..b8f3b1b60 100644 --- a/examples/4337-gas-metering/.env.example +++ b/examples/4337-gas-metering/.env.example @@ -32,18 +32,16 @@ ALCHEMY_ERC20_TOKEN_CONTRACT = "0x255de08fb52fde17a3aab145de8e2ffb7fd0310f" ALCHEMY_ERC721_TOKEN_CONTRACT = "0x16bc5fba06f3f5875e915c0ba6963377eb6651e1" # Gelato Values -GELATO_CHAIN = "sepolia" -GELATO_CHAIN_ID = "11155111" -GELATO_RPC_URL = "https://rpc.ankr.com/eth_sepolia" -GELATO_API_KEY = "" # Sponsor API Key -GELATO_GAS_POLICY = "" -GELATO_ENTRYPOINT_ADDRESS = "0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789" +GELATO_CHAIN = "base-sepolia" # "base-sepolia" or "sepolia" +GELATO_CHAIN_ID = "84532" # "84532" or "11155111" +GELATO_RPC_URL = "https://rpc.ankr.com/base_sepolia" # "https://rpc.ankr.com/base_sepolia" or "https://rpc.ankr.com/eth_sepolia" +GELATO_API_KEY = "" # Sponsor API Key: https://app.gelato.network/relay?networkGroup=testnets GELATO_MULTISEND_ADDRESS = "0x38869bf66a61cF6bDB996A6aE40D5853Fd43B526" # https://github.com/safe-global/safe-deployments/blob/main/src/assets/v1.4.1/multi_send.json # Make sure all nonce are unique for it to deploy account when run initially. GELATO_NONCE = "3" # Gelato Token Operation Values (Based on the chain selected, these values should also change accordingly.) -GELATO_ERC20_TOKEN_CONTRACT = "0x255de08fb52fde17a3aab145de8e2ffb7fd0310f" -GELATO_ERC721_TOKEN_CONTRACT = "0x16bc5fba06f3f5875e915c0ba6963377eb6651e1" +GELATO_ERC20_TOKEN_CONTRACT = "0x0b3ff6382bd1a8a74f23d39b4d131a08cea2502a" +GELATO_ERC721_TOKEN_CONTRACT = "0xf13eca34092D27cbF91cD377eFB261704C687a05" # Safe Values SAFE_VERSION = "1.4.1" @@ -55,3 +53,5 @@ SAFE_VERSION = "1.4.1" # ERC721 Token Sepolia: https://sepolia.etherscan.io/token/0x16bc5fba06f3f5875e915c0ba6963377eb6651e1 # ERC20 Token Mumbai: https://mumbai.polygonscan.com/address/0x255de08fb52fde17a3aab145de8e2ffb7fd0310f # ERC721 Token Mumbai: https://mumbai.polygonscan.com/address/0x16bc5fba06f3f5875e915c0ba6963377eb6651e1 +# ERC20 Token Base Sepolia: https://sepolia.basescan.org/address/0x0b3ff6382bd1a8a74f23d39b4d131a08cea2502a +# ERC721 Token Base Sepolia: https://sepolia.basescan.org/address/0xf13eca34092D27cbF91cD377eFB261704C687a05 diff --git a/examples/4337-gas-metering/README.md b/examples/4337-gas-metering/README.md index f1e72ce14..64acb0406 100644 --- a/examples/4337-gas-metering/README.md +++ b/examples/4337-gas-metering/README.md @@ -10,29 +10,17 @@ NOTE: If you run a paymaster analysis twice or more without changing the salt fo ## Gas Usage Results -| | **With 4337?** | **Account Creation** | **Account Creation + Native Transfer** | **Native Transfer** | **Account Creation + ERC20 Transfer** | **ERC20 Transfer** | **Account Creation + ERC721 Minting** | **ERC721 Minting** | -| :---------------------------------------------------: | :------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| **[Without Paymaster](../4337/test/gas/Gas.spec.ts)** | Yes | 415213 | 447632 | 182081 | 426139 | 160575 | 467926 | 202374 | -| **Gelato (4337 Compatible - 1Balance)** | Yes | 397421 ([TX](https://sepolia.etherscan.io/tx/0x21205216b55d0f48aa09ff4289ae982c3b16e7a9905494815cabd1fb01a0d505)) ([Gas](https://dashboard.tenderly.co/tx/sepolia/0x21205216b55d0f48aa09ff4289ae982c3b16e7a9905494815cabd1fb01a0d505/gas-usage)) | 404828 ([TX](https://sepolia.etherscan.io/tx/0x7bb36c93d21c911a2c1bdc7e50f55030cc7f006a1f7e2e651251dca9651383e0)) ([Gas](https://dashboard.tenderly.co/tx/sepolia/0x7bb36c93d21c911a2c1bdc7e50f55030cc7f006a1f7e2e651251dca9651383e0/gas-usage)) | 114692 ([TX](https://sepolia.etherscan.io/tx/0xefa122224466e9f1d09d42683aaec2b37f9871f7f5569099f0cc066961b39f15)) ([Gas](https://dashboard.tenderly.co/tx/sepolia/0xefa122224466e9f1d09d42683aaec2b37f9871f7f5569099f0cc066961b39f15/gas-usage)) | 408160 ([TX](https://sepolia.etherscan.io/tx/0x4f55488ecc542be4effc2d7a4743345db6790ef80e7ca94f3e939a290738fa2d)) ([Gas](https://dashboard.tenderly.co/tx/sepolia/0x4f55488ecc542be4effc2d7a4743345db6790ef80e7ca94f3e939a290738fa2d/gas-usage)) | 118033 ([TX](https://sepolia.etherscan.io/tx/0x152c78871b6940215ba37cac5f5231fa2bd4bcf40742ebcf741903ce64adc405)) ([Gas](https://dashboard.tenderly.co/tx/sepolia/0x152c78871b6940215ba37cac5f5231fa2bd4bcf40742ebcf741903ce64adc405/gas-usage)) | 437372 ([TX](https://sepolia.etherscan.io/tx/0x4aa37845d5c9fc0ad0713caefbbc9931263040d1502f076a98c993282257e51d)) ([Gas](https://dashboard.tenderly.co/tx/sepolia/0x4aa37845d5c9fc0ad0713caefbbc9931263040d1502f076a98c993282257e51d/gas-usage)) | 147232 ([TX](https://sepolia.etherscan.io/tx/0xfac73b16d0932ba97a93f12ddc230024b102e581a37a53625dfe8108ca581bb5)) ([Gas](https://dashboard.tenderly.co/tx/sepolia/0xfac73b16d0932ba97a93f12ddc230024b102e581a37a53625dfe8108ca581bb5/gas-usage)) | -| **Pimlico (USDC Paymaster)** | Yes | 506573 ([TX](https://mumbai.polygonscan.com/tx/0x3c6284e4df1686d699d2bc4cca04a25ecc76d68a73665ca53d466e6bd6bedf28)) ([Gas](https://dashboard.tenderly.co/tx/mumbai/0x3c6284e4df1686d699d2bc4cca04a25ecc76d68a73665ca53d466e6bd6bedf28/gas-usage)) | 511055 ([TX](https://mumbai.polygonscan.com/tx/0x8bc4e42b076d22e0fc3418eba40c65caab6e3a10c1fbb10cbeee4a7fbfa8b4b3)) ([Gas](https://dashboard.tenderly.co/tx/mumbai/0x8bc4e42b076d22e0fc3418eba40c65caab6e3a10c1fbb10cbeee4a7fbfa8b4b3/gas-usage)) | 199262 ([TX](https://mumbai.polygonscan.com/tx/0x46cdfc14649087609f69411fc41f5feb4dc23a6ea9255928b932841858e5f186)) ([Gas](https://dashboard.tenderly.co/tx/mumbai/0x46cdfc14649087609f69411fc41f5feb4dc23a6ea9255928b932841858e5f186/gas-usage)) | 514156 ([TX](https://mumbai.polygonscan.com/tx/0xa5cf461800341c2e9934608ff55aeda26d1a3e7da4f5bc9f3cce3fd185409623)) ([Gas](https://dashboard.tenderly.co/tx/mumbai/0xa5cf461800341c2e9934608ff55aeda26d1a3e7da4f5bc9f3cce3fd185409623/gas-usage)) | 202387 ([TX](https://mumbai.polygonscan.com/tx/0xdc21ae13dc92eb48851fa62f57c74f3a0085acf81343d9aaaa14fcc3c6911f91)) ([Gas](https://dashboard.tenderly.co/tx/mumbai/0xdc21ae13dc92eb48851fa62f57c74f3a0085acf81343d9aaaa14fcc3c6911f91/gas-usage)) | 543411 ([TX](https://mumbai.polygonscan.com/tx/0xcd6c137474be4f002822498e032ad9b78b0505bd4db495ee65fc602ec1a7f006)) ([Gas](https://dashboard.tenderly.co/tx/mumbai/0xcd6c137474be4f002822498e032ad9b78b0505bd4db495ee65fc602ec1a7f006/gas-usage)) | 231619 ([TX](https://mumbai.polygonscan.com/tx/0x31732175d3f3b35c9c2a38e841bcd485085edf79e7f3c532ec7997c4993c0192)) ([Gas](https://dashboard.tenderly.co/tx/mumbai/0x31732175d3f3b35c9c2a38e841bcd485085edf79e7f3c532ec7997c4993c0192/gas-usage)) | -| **Pimlico (MATIC - Gas Policy)** | Yes | 448172 ([TX](https://mumbai.polygonscan.com/tx/0xd51d026ecfa6dbafa8aac8a138badc6e3b397683117878e360bae9051a3b733a)) ([Gas](https://dashboard.tenderly.co/tx/mumbai/0xd51d026ecfa6dbafa8aac8a138badc6e3b397683117878e360bae9051a3b733a/gas-usage)) | 455615 ([TX](https://mumbai.polygonscan.com/tx/0xdd966b95b6625be33ae37f6c5bb1ad33798afbbd899089acad1180005d0637c4)) ([Gas](https://dashboard.tenderly.co/tx/mumbai/0xdd966b95b6625be33ae37f6c5bb1ad33798afbbd899089acad1180005d0637c4/gas-usage)) | 123064 ([TX](https://mumbai.polygonscan.com/tx/0xca2e41e24c6206011fe0d932f27a2786c7d9486c93f63d96c131c5007e2b275e)) ([Gas](https://dashboard.tenderly.co/tx/mumbai/0xca2e41e24c6206011fe0d932f27a2786c7d9486c93f63d96c131c5007e2b275e/gas-usage)) | 459014 ([TX](https://mumbai.polygonscan.com/tx/0xbd4c79d876ae928bbc721501029b01dbc5fc94d91d6299f548f19289f7c1c271)) ([Gas](https://dashboard.tenderly.co/tx/mumbai/0xbd4c79d876ae928bbc721501029b01dbc5fc94d91d6299f548f19289f7c1c271/gas-usage)) | 126461 ([TX](https://mumbai.polygonscan.com/tx/0xd2b130bc2f26cfe43041f7102601425674e2cd22a6b74672b907b28e70686496)) ([Gas](https://dashboard.tenderly.co/tx/mumbai/0xd2b130bc2f26cfe43041f7102601425674e2cd22a6b74672b907b28e70686496/gas-usage)) | 488186 ([TX](https://mumbai.polygonscan.com/tx/0x454a3a5a39432f7b01a70fcddfef948d20c70d2d719aea30d402d693447fa535)) ([Gas](https://dashboard.tenderly.co/tx/mumbai/0x454a3a5a39432f7b01a70fcddfef948d20c70d2d719aea30d402d693447fa535/gas-usage)) | 155645 ([TX](https://mumbai.polygonscan.com/tx/0xa148a4938de9883b2fbcd512e3c7161e78ca695843b6e535fdb5054b88872652)) ([Gas](https://dashboard.tenderly.co/tx/mumbai/0xa148a4938de9883b2fbcd512e3c7161e78ca695843b6e535fdb5054b88872652/gas-usage)) | -| **Alchemy (ETH from Safe)** | Yes | 417074 ([TX](https://sepolia.etherscan.io/tx/0x03c507f5dc14c6b6af04c5ad722f0650d86925837d9889e4972cb087e34d7b88)) ([Gas](https://dashboard.tenderly.co/tx/sepolia/0x03c507f5dc14c6b6af04c5ad722f0650d86925837d9889e4972cb087e34d7b88/gas-usage)) | 424505 ([TX](https://sepolia.etherscan.io/tx/0x0263331d8d4568c08d4a700385c08062ee0342fe6f65b2c7eb1a194ddec23ec2)) ([Gas](https://dashboard.tenderly.co/tx/sepolia/0x0263331d8d4568c08d4a700385c08062ee0342fe6f65b2c7eb1a194ddec23ec2/gas-usage)) | 107057 ([TX](https://sepolia.etherscan.io/tx/0xf4e38d9f3535dcb9519ca3527734a5ea611a0d1bafb632051736537853eb502b)) ([Gas](https://dashboard.tenderly.co/tx/sepolia/0xf4e38d9f3535dcb9519ca3527734a5ea611a0d1bafb632051736537853eb502b/gas-usage)) | 427599 ([TX](https://sepolia.etherscan.io/tx/0x794b02531f14b6c432c0dcf08d1cb76a8693dd75b35c5dde0d4547754d208143)) ([Gas](https://dashboard.tenderly.co/tx/sepolia/0x794b02531f14b6c432c0dcf08d1cb76a8693dd75b35c5dde0d4547754d208143/gas-usage)) | 110174 ([TX](https://sepolia.etherscan.io/tx/0xb56985ee07b1e7931aedc387698620d890c99992c4c688b8b3a150f355089e5d)) ([Gas](https://dashboard.tenderly.co/tx/sepolia/0xb56985ee07b1e7931aedc387698620d890c99992c4c688b8b3a150f355089e5d/gas-usage)) | 456870 ([TX](https://sepolia.etherscan.io/tx/0x2d2a0c8215821f0aa9cf8f88175aa8256cdca1a2928f2aa667916e5127f5dcb6)) ([Gas](https://dashboard.tenderly.co/tx/sepolia/0x2d2a0c8215821f0aa9cf8f88175aa8256cdca1a2928f2aa667916e5127f5dcb6/gas-usage)) | 139420 ([TX](https://sepolia.etherscan.io/tx/0x178d2c16a261dcb49e810bf39ce35cf96cbab8c7d3235709c7164ba6193c716e)) ([Gas](https://dashboard.tenderly.co/tx/sepolia/0x178d2c16a261dcb49e810bf39ce35cf96cbab8c7d3235709c7164ba6193c716e/gas-usage)) | -| **Alchemy (ETH - Gas Policy)** | Yes | 411372 ([TX](https://sepolia.etherscan.io/tx/0xcbb2c3c49b9d72d9ecf692308d69a8ad797ab5b1c6603f4fad989f966d692af1)) ([Gas](https://dashboard.tenderly.co/tx/sepolia/0xcbb2c3c49b9d72d9ecf692308d69a8ad797ab5b1c6603f4fad989f966d692af1/gas-usage)) | 418779 ([TX](https://sepolia.etherscan.io/tx/0x49fbedf833cfecf9db7de56c61d4227292723115520600dbc3711da5e6a85672)) ([Gas](https://dashboard.tenderly.co/tx/sepolia/0x49fbedf833cfecf9db7de56c61d4227292723115520600dbc3711da5e6a85672/gas-usage)) | 130202 ([TX](https://sepolia.etherscan.io/tx/0x35f1e5b04d988e4614a17609190b3e21b0a9892f78da9f400248cfb3b5afde9a)) ([Gas](https://dashboard.tenderly.co/tx/sepolia/0x35f1e5b04d988e4614a17609190b3e21b0a9892f78da9f400248cfb3b5afde9a/gas-usage)) | 421926 ([TX](https://sepolia.etherscan.io/tx/0x7dda913ae986d49c4322f414102ae374441a40adb4b33727e568ba140904d52a)) ([Gas](https://dashboard.tenderly.co/tx/sepolia/0x7dda913ae986d49c4322f414102ae374441a40adb4b33727e568ba140904d52a/gas-usage)) | 133394 ([TX](https://sepolia.etherscan.io/tx/0xe34902ebd5377cac04c47d142f6ca2de558df63a7e0c6541f704df651b7cfcb1)) ([Gas](https://dashboard.tenderly.co/tx/sepolia/0xe34902ebd5377cac04c47d142f6ca2de558df63a7e0c6541f704df651b7cfcb1/gas-usage)) | 451200 ([TX](https://sepolia.etherscan.io/tx/0xb1253508bc4ca5ce41222b15b0e7bf03b2273bcb09d93e1d6d6a5ea39b43ee84)) ([Gas](https://dashboard.tenderly.co/tx/sepolia/0xb1253508bc4ca5ce41222b15b0e7bf03b2273bcb09d93e1d6d6a5ea39b43ee84/gas-usage)) | 162654 ([TX](https://sepolia.etherscan.io/tx/0xd13fb70626a26aaa02e0389cd9347c1c0d8d8ed9ee794a61c5d3eea4b36e239a)) ([Gas](https://dashboard.tenderly.co/tx/sepolia/0xd13fb70626a26aaa02e0389cd9347c1c0d8d8ed9ee794a61c5d3eea4b36e239a/gas-usage)) | +| | **With 4337?** | **Account Creation** | **Account Creation + Native Transfer** | **Native Transfer** | **Account Creation + ERC20 Transfer** | **ERC20 Transfer** | **Account Creation + ERC721 Minting** | **ERC721 Minting** | +| :--------------------------------------------------------------: | :------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | +| **[Without Paymaster](../../modules/4337/test/gas/Gas.spec.ts)** | Yes | 415213 | 447632 | 182081 | 426139 | 160575 | 467926 | 202374 | +| **Gelato (4337 Compatible - 1Balance)** | No | 302679 ([TX](https://sepolia.basescan.org/tx/0x1b2f743dff63dfc6e01e18623cb8d692d4a1cf206008358fac3eaf8fd5957c91)) ([Gas](https://dashboard.tenderly.co/tx/base-sepolia/0x1b2f743dff63dfc6e01e18623cb8d692d4a1cf206008358fac3eaf8fd5957c91/gas-usage)) | 313228 ([TX](https://sepolia.basescan.org/tx/0xddbd655b8a11cf043c535c2d6dbe14aa82925d444a0d4bb5378670993ad1862c)) ([Gas](https://dashboard.tenderly.co/tx/base-sepolia/0xddbd655b8a11cf043c535c2d6dbe14aa82925d444a0d4bb5378670993ad1862c/gas-usage)) | 83930 ([TX](https://sepolia.basescan.org/tx/0x162b8817fe9cbbccb905c4b51cc25cbf2625afa1e5341087a4e79b9bb6834fc6)) ([Gas](https://dashboard.tenderly.co/tx/base-sepolia/0x162b8817fe9cbbccb905c4b51cc25cbf2625afa1e5341087a4e79b9bb6834fc6/gas-usage)) | 315961 ([TX](https://sepolia.basescan.org/tx/0x1043acb58c89667d26360f23532d6eee4ab927b20ba37035fb3ffb8cc71c224b)) ([Gas](https://dashboard.tenderly.co/tx/base-sepolia/0x1043acb58c89667d26360f23532d6eee4ab927b20ba37035fb3ffb8cc71c224b/gas-usage)) | 86852 ([TX](https://sepolia.basescan.org/tx/0x6c6ccadea5e54aa47b36c603132b315f1cf15e75e96c0376a7c76ae48f69a006)) ([Gas](https://dashboard.tenderly.co/tx/base-sepolia/0x6c6ccadea5e54aa47b36c603132b315f1cf15e75e96c0376a7c76ae48f69a006/gas-usage)) | 345284 ([TX](https://sepolia.basescan.org/tx/0xd49b482ff37f07f12fc1688a2af33b4451d63409fe547f9cf2e660422866da3e)) ([Gas](https://dashboard.tenderly.co/tx/base-sepolia/0xd49b482ff37f07f12fc1688a2af33b4451d63409fe547f9cf2e660422866da3e/gas-usage)) | 116159 ([TX](https://sepolia.basescan.org/tx/0x5814be99c937b6e7386f3526fe9f11fc1bf7a21180daf66ee2e44cc1e4d0da3d)) ([Gas](https://dashboard.tenderly.co/tx/base-sepolia/0x5814be99c937b6e7386f3526fe9f11fc1bf7a21180daf66ee2e44cc1e4d0da3d/gas-usage)) | +| **Pimlico (USDC Paymaster)** | Yes | 506573 ([TX](https://mumbai.polygonscan.com/tx/0x3c6284e4df1686d699d2bc4cca04a25ecc76d68a73665ca53d466e6bd6bedf28)) ([Gas](https://dashboard.tenderly.co/tx/mumbai/0x3c6284e4df1686d699d2bc4cca04a25ecc76d68a73665ca53d466e6bd6bedf28/gas-usage)) | 511055 ([TX](https://mumbai.polygonscan.com/tx/0x8bc4e42b076d22e0fc3418eba40c65caab6e3a10c1fbb10cbeee4a7fbfa8b4b3)) ([Gas](https://dashboard.tenderly.co/tx/mumbai/0x8bc4e42b076d22e0fc3418eba40c65caab6e3a10c1fbb10cbeee4a7fbfa8b4b3/gas-usage)) | 199262 ([TX](https://mumbai.polygonscan.com/tx/0x46cdfc14649087609f69411fc41f5feb4dc23a6ea9255928b932841858e5f186)) ([Gas](https://dashboard.tenderly.co/tx/mumbai/0x46cdfc14649087609f69411fc41f5feb4dc23a6ea9255928b932841858e5f186/gas-usage)) | 514156 ([TX](https://mumbai.polygonscan.com/tx/0xa5cf461800341c2e9934608ff55aeda26d1a3e7da4f5bc9f3cce3fd185409623)) ([Gas](https://dashboard.tenderly.co/tx/mumbai/0xa5cf461800341c2e9934608ff55aeda26d1a3e7da4f5bc9f3cce3fd185409623/gas-usage)) | 202387 ([TX](https://mumbai.polygonscan.com/tx/0xdc21ae13dc92eb48851fa62f57c74f3a0085acf81343d9aaaa14fcc3c6911f91)) ([Gas](https://dashboard.tenderly.co/tx/mumbai/0xdc21ae13dc92eb48851fa62f57c74f3a0085acf81343d9aaaa14fcc3c6911f91/gas-usage)) | 543411 ([TX](https://mumbai.polygonscan.com/tx/0xcd6c137474be4f002822498e032ad9b78b0505bd4db495ee65fc602ec1a7f006)) ([Gas](https://dashboard.tenderly.co/tx/mumbai/0xcd6c137474be4f002822498e032ad9b78b0505bd4db495ee65fc602ec1a7f006/gas-usage)) | 231619 ([TX](https://mumbai.polygonscan.com/tx/0x31732175d3f3b35c9c2a38e841bcd485085edf79e7f3c532ec7997c4993c0192)) ([Gas](https://dashboard.tenderly.co/tx/mumbai/0x31732175d3f3b35c9c2a38e841bcd485085edf79e7f3c532ec7997c4993c0192/gas-usage)) | +| **Pimlico (MATIC - Gas Policy)** | Yes | 448172 ([TX](https://mumbai.polygonscan.com/tx/0xd51d026ecfa6dbafa8aac8a138badc6e3b397683117878e360bae9051a3b733a)) ([Gas](https://dashboard.tenderly.co/tx/mumbai/0xd51d026ecfa6dbafa8aac8a138badc6e3b397683117878e360bae9051a3b733a/gas-usage)) | 455615 ([TX](https://mumbai.polygonscan.com/tx/0xdd966b95b6625be33ae37f6c5bb1ad33798afbbd899089acad1180005d0637c4)) ([Gas](https://dashboard.tenderly.co/tx/mumbai/0xdd966b95b6625be33ae37f6c5bb1ad33798afbbd899089acad1180005d0637c4/gas-usage)) | 123064 ([TX](https://mumbai.polygonscan.com/tx/0xca2e41e24c6206011fe0d932f27a2786c7d9486c93f63d96c131c5007e2b275e)) ([Gas](https://dashboard.tenderly.co/tx/mumbai/0xca2e41e24c6206011fe0d932f27a2786c7d9486c93f63d96c131c5007e2b275e/gas-usage)) | 459014 ([TX](https://mumbai.polygonscan.com/tx/0xbd4c79d876ae928bbc721501029b01dbc5fc94d91d6299f548f19289f7c1c271)) ([Gas](https://dashboard.tenderly.co/tx/mumbai/0xbd4c79d876ae928bbc721501029b01dbc5fc94d91d6299f548f19289f7c1c271/gas-usage)) | 126461 ([TX](https://mumbai.polygonscan.com/tx/0xd2b130bc2f26cfe43041f7102601425674e2cd22a6b74672b907b28e70686496)) ([Gas](https://dashboard.tenderly.co/tx/mumbai/0xd2b130bc2f26cfe43041f7102601425674e2cd22a6b74672b907b28e70686496/gas-usage)) | 488186 ([TX](https://mumbai.polygonscan.com/tx/0x454a3a5a39432f7b01a70fcddfef948d20c70d2d719aea30d402d693447fa535)) ([Gas](https://dashboard.tenderly.co/tx/mumbai/0x454a3a5a39432f7b01a70fcddfef948d20c70d2d719aea30d402d693447fa535/gas-usage)) | 155645 ([TX](https://mumbai.polygonscan.com/tx/0xa148a4938de9883b2fbcd512e3c7161e78ca695843b6e535fdb5054b88872652)) ([Gas](https://dashboard.tenderly.co/tx/mumbai/0xa148a4938de9883b2fbcd512e3c7161e78ca695843b6e535fdb5054b88872652/gas-usage)) | +| **Alchemy (ETH from Safe)** | Yes | 417074 ([TX](https://sepolia.etherscan.io/tx/0x03c507f5dc14c6b6af04c5ad722f0650d86925837d9889e4972cb087e34d7b88)) ([Gas](https://dashboard.tenderly.co/tx/sepolia/0x03c507f5dc14c6b6af04c5ad722f0650d86925837d9889e4972cb087e34d7b88/gas-usage)) | 424505 ([TX](https://sepolia.etherscan.io/tx/0x0263331d8d4568c08d4a700385c08062ee0342fe6f65b2c7eb1a194ddec23ec2)) ([Gas](https://dashboard.tenderly.co/tx/sepolia/0x0263331d8d4568c08d4a700385c08062ee0342fe6f65b2c7eb1a194ddec23ec2/gas-usage)) | 107057 ([TX](https://sepolia.etherscan.io/tx/0xf4e38d9f3535dcb9519ca3527734a5ea611a0d1bafb632051736537853eb502b)) ([Gas](https://dashboard.tenderly.co/tx/sepolia/0xf4e38d9f3535dcb9519ca3527734a5ea611a0d1bafb632051736537853eb502b/gas-usage)) | 427599 ([TX](https://sepolia.etherscan.io/tx/0x794b02531f14b6c432c0dcf08d1cb76a8693dd75b35c5dde0d4547754d208143)) ([Gas](https://dashboard.tenderly.co/tx/sepolia/0x794b02531f14b6c432c0dcf08d1cb76a8693dd75b35c5dde0d4547754d208143/gas-usage)) | 110174 ([TX](https://sepolia.etherscan.io/tx/0xb56985ee07b1e7931aedc387698620d890c99992c4c688b8b3a150f355089e5d)) ([Gas](https://dashboard.tenderly.co/tx/sepolia/0xb56985ee07b1e7931aedc387698620d890c99992c4c688b8b3a150f355089e5d/gas-usage)) | 456870 ([TX](https://sepolia.etherscan.io/tx/0x2d2a0c8215821f0aa9cf8f88175aa8256cdca1a2928f2aa667916e5127f5dcb6)) ([Gas](https://dashboard.tenderly.co/tx/sepolia/0x2d2a0c8215821f0aa9cf8f88175aa8256cdca1a2928f2aa667916e5127f5dcb6/gas-usage)) | 139420 ([TX](https://sepolia.etherscan.io/tx/0x178d2c16a261dcb49e810bf39ce35cf96cbab8c7d3235709c7164ba6193c716e)) ([Gas](https://dashboard.tenderly.co/tx/sepolia/0x178d2c16a261dcb49e810bf39ce35cf96cbab8c7d3235709c7164ba6193c716e/gas-usage)) | +| **Alchemy (ETH - Gas Policy)** | Yes | 411372 ([TX](https://sepolia.etherscan.io/tx/0xcbb2c3c49b9d72d9ecf692308d69a8ad797ab5b1c6603f4fad989f966d692af1)) ([Gas](https://dashboard.tenderly.co/tx/sepolia/0xcbb2c3c49b9d72d9ecf692308d69a8ad797ab5b1c6603f4fad989f966d692af1/gas-usage)) | 418779 ([TX](https://sepolia.etherscan.io/tx/0x49fbedf833cfecf9db7de56c61d4227292723115520600dbc3711da5e6a85672)) ([Gas](https://dashboard.tenderly.co/tx/sepolia/0x49fbedf833cfecf9db7de56c61d4227292723115520600dbc3711da5e6a85672/gas-usage)) | 130202 ([TX](https://sepolia.etherscan.io/tx/0x35f1e5b04d988e4614a17609190b3e21b0a9892f78da9f400248cfb3b5afde9a)) ([Gas](https://dashboard.tenderly.co/tx/sepolia/0x35f1e5b04d988e4614a17609190b3e21b0a9892f78da9f400248cfb3b5afde9a/gas-usage)) | 421926 ([TX](https://sepolia.etherscan.io/tx/0x7dda913ae986d49c4322f414102ae374441a40adb4b33727e568ba140904d52a)) ([Gas](https://dashboard.tenderly.co/tx/sepolia/0x7dda913ae986d49c4322f414102ae374441a40adb4b33727e568ba140904d52a/gas-usage)) | 133394 ([TX](https://sepolia.etherscan.io/tx/0xe34902ebd5377cac04c47d142f6ca2de558df63a7e0c6541f704df651b7cfcb1)) ([Gas](https://dashboard.tenderly.co/tx/sepolia/0xe34902ebd5377cac04c47d142f6ca2de558df63a7e0c6541f704df651b7cfcb1/gas-usage)) | 451200 ([TX](https://sepolia.etherscan.io/tx/0xb1253508bc4ca5ce41222b15b0e7bf03b2273bcb09d93e1d6d6a5ea39b43ee84)) ([Gas](https://dashboard.tenderly.co/tx/sepolia/0xb1253508bc4ca5ce41222b15b0e7bf03b2273bcb09d93e1d6d6a5ea39b43ee84/gas-usage)) | 162654 ([TX](https://sepolia.etherscan.io/tx/0xd13fb70626a26aaa02e0389cd9347c1c0d8d8ed9ee794a61c5d3eea4b36e239a)) ([Gas](https://dashboard.tenderly.co/tx/sepolia/0xd13fb70626a26aaa02e0389cd9347c1c0d8d8ed9ee794a61c5d3eea4b36e239a/gas-usage)) | ## Detailed Individual Gas Usage Results -### Gelato (4337 Compatible - 1Balance) - -| Type | Actual Gas | SponsoredCall | handleOps | \_createSenderIfNeeded | Safe Proxy Factory | ValidateUserOp (Safe) | \_executeUserOp | executeUserOp (Safe) | execTransactionFromModule | -| ---------------------------------- | ---------- | ------------- | --------- | ---------------------- | ------------------ | --------------------- | --------------- | -------------------- | ------------------------- | -| Account Creation | 397421 | 365997 | 351544 | 283735 | 267761 | 14931 | 14893 | 7015 | 4411 | -| Account Creation + Native Transfer | 404828 | 373368 | 358915 | 283735 | 267761 | 14931 | 22264 | 14386 | 11782 | -| Native Transfer | 114692 | 88636 | 76339 | NA | NA | 20512 | 24264 | 15795 | 13782 | -| Account Creation + ERC20 Transfer | 408160 | 380804 | 366101 | 283754 | 267761 | 14977 | 29339 | 21415 | 18550 | -| ERC20 Transfer | 118033 | 96069 | 83524 | NA | NA | 20558 | 31339 | 23415 | 20550 | -| Account Creation + ERC721 Minting | 437372 | 405404 | 390784 | 283748 | 267761 | 14962 | 54058 | 46150 | 43373 | -| ERC721 Minting | 147232 | 120668 | 108206 | NA | NA | 20542 | 56058 | 48150 | 45373 | - ### Pimlico (USDC Paymaster) | Type | Actual Gas | handleOps | \_createSenderIfNeeded | Safe Proxy Factory | ValidateUserOp (Safe) | \_executeUserOp | executeUserOp (Safe) | execTransactionFromModule | diff --git a/examples/4337-gas-metering/alchemy/alchemy.ts b/examples/4337-gas-metering/alchemy/alchemy.ts index 33eaa78d9..4e76ffd8a 100644 --- a/examples/4337-gas-metering/alchemy/alchemy.ts +++ b/examples/4337-gas-metering/alchemy/alchemy.ts @@ -5,7 +5,8 @@ import { setTimeout } from 'timers/promises' import { PublicClient, Hash, Transport, createPublicClient, formatEther, http, parseEther, zeroAddress } from 'viem' import { privateKeyToAccount } from 'viem/accounts' import { goerli, sepolia } from 'viem/chains' -import { SAFE_ADDRESSES_MAP, getAccountAddress, getAccountInitCode } from '../utils/safe' +import { getAccountAddress, getAccountInitCode } from '../utils/safe' +import { SAFE_ADDRESSES_MAP } from '../utils/address' import { UserOperation, signUserOperation, @@ -115,7 +116,7 @@ const initCode = await getAccountInitCode({ console.log('\nInit Code Created.') const senderAddress = await getAccountAddress({ - client: publicClient, + publicClient: publicClient, owner: signer.address, addModuleLibAddress: chainAddresses.ADD_MODULES_LIB_ADDRESS, safe4337ModuleAddress: chainAddresses.SAFE_4337_MODULE_ADDRESS, diff --git a/examples/4337-gas-metering/gelato/README.md b/examples/4337-gas-metering/gelato/README.md index 3d4517f36..e00c8ce79 100644 --- a/examples/4337-gas-metering/gelato/README.md +++ b/examples/4337-gas-metering/gelato/README.md @@ -10,35 +10,26 @@ npm run gelato:account:1balance Signer Extracted from Private Key. -Init Code Created. - -Counterfactual Sender Address Created: 0x8Af37a939fBEd9ac9AdB04270EF28DC844256CB3 -Address Link: https://sepolia.etherscan.io/address/0x8Af37a939fBEd9ac9AdB04270EF28DC844256CB3 - -Deploying a new Safe and executing calldata passed with it (if any). +Appropriate calldata created. -Nonce for the sender received from EntryPoint. +Init Code Created. Appropriate calldata created. -Signed Dummy Data for Gelato. +Counterfactual Sender Address Created: 0x22e75eC3A05a8e3e1aD2307eb4422247C538ff06 +Address Link: https://base-sepolia.etherscan.io/address/0x22e75eC3A05a8e3e1aD2307eb4422247C538ff06 -Received Gas Data from Gelato. +Appropriate preparation done for transaction. -Signed Real Data for Gelato. - -UserOperation submitted. +Deploying a new Safe and executing calldata passed with it (if any). -Gelato Relay Task ID: 0x55def6ec01815152dfbf4f943f21e164559d79a974789e1a647aa7394fa80984 -Gelato Relay Task Link: https://api.gelato.digital/tasks/status/0x55def6ec01815152dfbf4f943f21e164559d79a974789e1a647aa7394fa80984 +Gelato Relay Task Link: https://api.gelato.digital/tasks/status/0x464e255d4b46e628c61af8bf82c12f6364b3bfe72d2566c9e8939503c9b2fd88 -User OP Hash: 0xf46f8a12a949bf36e9584c8e40772162c3530ce4f72542e9da3b672ccce9019a -UserOp Link: https://jiffyscan.xyz/userOpHash/0xf46f8a12a949bf36e9584c8e40772162c3530ce4f72542e9da3b672ccce9019a?network=sepolia +Transaction Link: https://sepolia.basescan.org/tx/0x1b2f743dff63dfc6e01e18623cb8d692d4a1cf206008358fac3eaf8fd5957c91 -Transaction Link: https://sepolia.etherscan.io/tx/0x21205216b55d0f48aa09ff4289ae982c3b16e7a9905494815cabd1fb01a0d505 +Gas Used: https://dashboard.tenderly.co/tx/base-sepolia/0x1b2f743dff63dfc6e01e18623cb8d692d4a1cf206008358fac3eaf8fd5957c91/gas-usage -Gas Used (Account or Paymaster): 397421 -Gas Used (Transaction): 397421 +Gas Used: 302679 ``` ## Safe Deployment + Native Transfer with Gelato @@ -51,39 +42,30 @@ npm run gelato:native-transfer:1balance Signer Extracted from Private Key. -Init Code Created. +Appropriate calldata created. -Counterfactual Sender Address Created: 0x8652734F7404E97FEe69cf617286C5423593Bad0 -Address Link: https://sepolia.etherscan.io/address/0x8652734F7404E97FEe69cf617286C5423593Bad0 +Init Code Created. -Deploying a new Safe and executing calldata passed with it (if any). +Appropriate calldata created. -Nonce for the sender received from EntryPoint. +Counterfactual Sender Address Created: 0x7e10D140a779c67B3d92F7b29B83e97C29f26C2a +Address Link: https://base-sepolia.etherscan.io/address/0x7e10D140a779c67B3d92F7b29B83e97C29f26C2a Transferring 0.000001 ETH to Safe for native transfer. Transferred required ETH for the native transfer. -Appropriate calldata created. - -Signed Dummy Data for Gelato. - -Received Gas Data from Gelato. +Appropriate preparation done for transaction. -Signed Real Data for Gelato. - -UserOperation submitted. +Deploying a new Safe and executing calldata passed with it (if any). -Gelato Relay Task ID: 0x64080f3741400714cc10a6ca486e22467a2a879935c19268d6f1fe709e7f6ad8 -Gelato Relay Task Link: https://api.gelato.digital/tasks/status/0x64080f3741400714cc10a6ca486e22467a2a879935c19268d6f1fe709e7f6ad8 +Gelato Relay Task Link: https://api.gelato.digital/tasks/status/0xd025a1a9ec04268ac6ba5aace0eac78f003523b5f9481513042b09ed7cc06b94 -User OP Hash: 0x2126e36afaeae4190df1e540613aa972f8d73b37d9268ee089f4440db23ae74b -UserOp Link: https://jiffyscan.xyz/userOpHash/0x2126e36afaeae4190df1e540613aa972f8d73b37d9268ee089f4440db23ae74b?network=sepolia +Transaction Link: https://sepolia.basescan.org/tx/0xddbd655b8a11cf043c535c2d6dbe14aa82925d444a0d4bb5378670993ad1862c -Transaction Link: https://sepolia.etherscan.io/tx/0x7bb36c93d21c911a2c1bdc7e50f55030cc7f006a1f7e2e651251dca9651383e0 +Gas Used: https://dashboard.tenderly.co/tx/base-sepolia/0xddbd655b8a11cf043c535c2d6dbe14aa82925d444a0d4bb5378670993ad1862c/gas-usage -Gas Used (Account or Paymaster): 404828 -Gas Used (Transaction): 404828 +Gas Used: 313228 ``` ## Native Transfer with Gelato @@ -96,39 +78,38 @@ npm run gelato:native-transfer:1balance Signer Extracted from Private Key. -Init Code Created. +Appropriate calldata created. -Counterfactual Sender Address Created: 0x8652734F7404E97FEe69cf617286C5423593Bad0 -Address Link: https://sepolia.etherscan.io/address/0x8652734F7404E97FEe69cf617286C5423593Bad0 +Init Code Created. -The Safe is already deployed. +Appropriate calldata created. -Nonce for the sender received from EntryPoint. +Counterfactual Sender Address Created: 0x7e10D140a779c67B3d92F7b29B83e97C29f26C2a +Address Link: https://base-sepolia.etherscan.io/address/0x7e10D140a779c67B3d92F7b29B83e97C29f26C2a Transferring 0.000001 ETH to Safe for native transfer. Transferred required ETH for the native transfer. -Appropriate calldata created. +Appropriate preparation done for transaction. -Signed Dummy Data for Gelato. +The Safe is already deployed. + +Executing calldata passed with the Safe. -Received Gas Data from Gelato. +Appropriate calldata created. -Signed Real Data for Gelato. +Signature for Call Data created. -UserOperation submitted. +Signed Calldata Created. -Gelato Relay Task ID: 0xa2d246b5deabbcc4378f3fd3f1fe9bf1ddae3a6b4e286d7f759c27e558562754 -Gelato Relay Task Link: https://api.gelato.digital/tasks/status/0xa2d246b5deabbcc4378f3fd3f1fe9bf1ddae3a6b4e286d7f759c27e558562754 +Gelato Relay Task Link: https://api.gelato.digital/tasks/status/0x1d15b1b4effcd5960ad5e2f2ebec03e906f150fbc0b01491d12e8871dcf1134b -User OP Hash: 0xc9c86bcbe24adf9e67fbe199dd2cb9abe7cff12634f76df68aa98ee28193ac48 -UserOp Link: https://jiffyscan.xyz/userOpHash/0xc9c86bcbe24adf9e67fbe199dd2cb9abe7cff12634f76df68aa98ee28193ac48?network=sepolia +Transaction Link: https://sepolia.basescan.org/tx/0x162b8817fe9cbbccb905c4b51cc25cbf2625afa1e5341087a4e79b9bb6834fc6 -Transaction Link: https://sepolia.etherscan.io/tx/0xefa122224466e9f1d09d42683aaec2b37f9871f7f5569099f0cc066961b39f15 +Gas Used: https://dashboard.tenderly.co/tx/base-sepolia/0x162b8817fe9cbbccb905c4b51cc25cbf2625afa1e5341087a4e79b9bb6834fc6/gas-usage -Gas Used (Account or Paymaster): 114692 -Gas Used (Transaction): 114692 +Gas Used: 83930 ``` ## Safe Deployment + ERC20 Transaction with Gelato @@ -141,14 +122,14 @@ npm run gelato:erc20:1balance Signer Extracted from Private Key. -Init Code Created. +Appropriate calldata created. -Counterfactual Sender Address Created: 0xe86D78002637143c34d0687890c1b102D054a614 -Address Link: https://sepolia.etherscan.io/address/0xe86D78002637143c34d0687890c1b102D054a614 +Init Code Created. -Deploying a new Safe and executing calldata passed with it (if any). +Appropriate calldata created. -Nonce for the sender received from EntryPoint. +Counterfactual Sender Address Created: 0x3515D6c410dB9b457f52535D7364828b944d3307 +Address Link: https://base-sepolia.etherscan.io/address/0x3515D6c410dB9b457f52535D7364828b944d3307 Safe Wallet ERC20 Balance: 0 @@ -156,26 +137,17 @@ Minting ERC20 Tokens to Safe Wallet. Updated Safe Wallet ERC20 Balance: 1 -Appropriate calldata created. - -Signed Dummy Data for Gelato. - -Received Gas Data from Gelato. +Appropriate preparation done for transaction. -Signed Real Data for Gelato. - -UserOperation submitted. +Deploying a new Safe and executing calldata passed with it (if any). -Gelato Relay Task ID: 0x02da9332b8528ce750fe2db6f245c90854fa5daa339911bc3b12691728bafb1b -Gelato Relay Task Link: https://api.gelato.digital/tasks/status/0x02da9332b8528ce750fe2db6f245c90854fa5daa339911bc3b12691728bafb1b +Gelato Relay Task Link: https://api.gelato.digital/tasks/status/0xd13ca2a2d98685e8762a4d836b066acb5e80c35d5aeb392dd9db739e546a27eb -User OP Hash: 0xf6d06a5723198af02f26a2daa0a6eec019ab539cfb97277a6aa5251e40863aa2 -UserOp Link: https://jiffyscan.xyz/userOpHash/0xf6d06a5723198af02f26a2daa0a6eec019ab539cfb97277a6aa5251e40863aa2?network=sepolia +Transaction Link: https://sepolia.basescan.org/tx/0x1043acb58c89667d26360f23532d6eee4ab927b20ba37035fb3ffb8cc71c224b -Transaction Link: https://sepolia.etherscan.io/tx/0x4f55488ecc542be4effc2d7a4743345db6790ef80e7ca94f3e939a290738fa2d +Gas Used: https://dashboard.tenderly.co/tx/base-sepolia/0x1043acb58c89667d26360f23532d6eee4ab927b20ba37035fb3ffb8cc71c224b/gas-usage -Gas Used (Account or Paymaster): 408160 -Gas Used (Transaction): 408160 +Gas Used: 315961 ``` ## ERC20 Transaction with Gelato @@ -188,14 +160,14 @@ npm run gelato:erc20:1balance Signer Extracted from Private Key. -Init Code Created. +Appropriate calldata created. -Counterfactual Sender Address Created: 0xe86D78002637143c34d0687890c1b102D054a614 -Address Link: https://sepolia.etherscan.io/address/0xe86D78002637143c34d0687890c1b102D054a614 +Init Code Created. -The Safe is already deployed. +Appropriate calldata created. -Nonce for the sender received from EntryPoint. +Counterfactual Sender Address Created: 0x3515D6c410dB9b457f52535D7364828b944d3307 +Address Link: https://base-sepolia.etherscan.io/address/0x3515D6c410dB9b457f52535D7364828b944d3307 Safe Wallet ERC20 Balance: 0 @@ -203,26 +175,25 @@ Minting ERC20 Tokens to Safe Wallet. Updated Safe Wallet ERC20 Balance: 1 -Appropriate calldata created. +Appropriate preparation done for transaction. -Signed Dummy Data for Gelato. +The Safe is already deployed. + +Executing calldata passed with the Safe. -Received Gas Data from Gelato. +Appropriate calldata created. -Signed Real Data for Gelato. +Signature for Call Data created. -UserOperation submitted. +Signed Calldata Created. -Gelato Relay Task ID: 0x5f2e04dae7ec76037e22d250bcca19600b7c0cad4dcddc8015e629c69c22c2b3 -Gelato Relay Task Link: https://api.gelato.digital/tasks/status/0x5f2e04dae7ec76037e22d250bcca19600b7c0cad4dcddc8015e629c69c22c2b3 +Gelato Relay Task Link: https://api.gelato.digital/tasks/status/0x94b1fcd1a5e6effeaf3e4f89cf09462ea3dff41d02fbc381b2185a32db957f16 -User OP Hash: 0x129341b16c3d7ffdafe17eb3bcae112eebc087ca4fef61ba503b7e460f3f12c4 -UserOp Link: https://jiffyscan.xyz/userOpHash/0x129341b16c3d7ffdafe17eb3bcae112eebc087ca4fef61ba503b7e460f3f12c4?network=sepolia +Transaction Link: https://sepolia.basescan.org/tx/0x6c6ccadea5e54aa47b36c603132b315f1cf15e75e96c0376a7c76ae48f69a006 -Transaction Link: https://sepolia.etherscan.io/tx/0x152c78871b6940215ba37cac5f5231fa2bd4bcf40742ebcf741903ce64adc405 +Gas Used: https://dashboard.tenderly.co/tx/base-sepolia/0x6c6ccadea5e54aa47b36c603132b315f1cf15e75e96c0376a7c76ae48f69a006/gas-usage -Gas Used (Account or Paymaster): 118033 -Gas Used (Transaction): 118033 +Gas Used: 86852 ``` ## Safe Deployment + ERC721 Transaction with Gelato @@ -235,35 +206,26 @@ npm run gelato:erc721:1balance Signer Extracted from Private Key. -Init Code Created. - -Counterfactual Sender Address Created: 0xC8D65452DC04F13E2915916699f5B61fF647C163 -Address Link: https://sepolia.etherscan.io/address/0xC8D65452DC04F13E2915916699f5B61fF647C163 - -Deploying a new Safe and executing calldata passed with it (if any). +Appropriate calldata created. -Nonce for the sender received from EntryPoint. +Init Code Created. Appropriate calldata created. -Signed Dummy Data for Gelato. +Counterfactual Sender Address Created: 0xD22Dc144F6fB5c827AFb4f07C44AaA332a95dB58 +Address Link: https://base-sepolia.etherscan.io/address/0xD22Dc144F6fB5c827AFb4f07C44AaA332a95dB58 -Received Gas Data from Gelato. +Appropriate preparation done for transaction. -Signed Real Data for Gelato. - -UserOperation submitted. +Deploying a new Safe and executing calldata passed with it (if any). -Gelato Relay Task ID: 0xe06c299ab9deac8ee76e40960af3b56b219dabd97488a67093a752376271fe3a -Gelato Relay Task Link: https://api.gelato.digital/tasks/status/0xe06c299ab9deac8ee76e40960af3b56b219dabd97488a67093a752376271fe3a +Gelato Relay Task Link: https://api.gelato.digital/tasks/status/0xde7362ff56afdeeefffbb8797b3f8701ff91b6d8ff08cfb4d46d1565a1cee7cf -User OP Hash: 0xae2b1d74f3e3e921f47db23c28f7c3f100bcaf8fe164d16ddd6b562b22519afb -UserOp Link: https://jiffyscan.xyz/userOpHash/0xae2b1d74f3e3e921f47db23c28f7c3f100bcaf8fe164d16ddd6b562b22519afb?network=sepolia +Transaction Link: https://sepolia.basescan.org/tx/0xd49b482ff37f07f12fc1688a2af33b4451d63409fe547f9cf2e660422866da3e -Transaction Link: https://sepolia.etherscan.io/tx/0x4aa37845d5c9fc0ad0713caefbbc9931263040d1502f076a98c993282257e51d +Gas Used: https://dashboard.tenderly.co/tx/base-sepolia/0xd49b482ff37f07f12fc1688a2af33b4451d63409fe547f9cf2e660422866da3e/gas-usage -Gas Used (Account or Paymaster): 437372 -Gas Used (Transaction): 437372 +Gas Used: 345284 ``` ## ERC721 Transaction with Gelato @@ -276,33 +238,32 @@ npm run gelato:erc721:1balance Signer Extracted from Private Key. +Appropriate calldata created. + Init Code Created. -Counterfactual Sender Address Created: 0xC8D65452DC04F13E2915916699f5B61fF647C163 -Address Link: https://sepolia.etherscan.io/address/0xC8D65452DC04F13E2915916699f5B61fF647C163 +Appropriate calldata created. -The Safe is already deployed. +Counterfactual Sender Address Created: 0xD22Dc144F6fB5c827AFb4f07C44AaA332a95dB58 +Address Link: https://base-sepolia.etherscan.io/address/0xD22Dc144F6fB5c827AFb4f07C44AaA332a95dB58 -Nonce for the sender received from EntryPoint. +Appropriate preparation done for transaction. -Appropriate calldata created. +The Safe is already deployed. -Signed Dummy Data for Gelato. +Executing calldata passed with the Safe. -Received Gas Data from Gelato. +Appropriate calldata created. -Signed Real Data for Gelato. +Signature for Call Data created. -UserOperation submitted. +Signed Calldata Created. -Gelato Relay Task ID: 0xe201bbab015baeeaeab68f2e3a2c6e1cfe7af6704df0106b9fd3c9587c6ef61e -Gelato Relay Task Link: https://api.gelato.digital/tasks/status/0xe201bbab015baeeaeab68f2e3a2c6e1cfe7af6704df0106b9fd3c9587c6ef61e +Gelato Relay Task Link: https://api.gelato.digital/tasks/status/0x00d92c5c933044fc50de6e89842241d830f2297a912753fc43803028f539d392 -User OP Hash: 0x00d0e383c622a7e3b5c010ce915b300bf182988c6914a10b06efa1b933fd7d21 -UserOp Link: https://jiffyscan.xyz/userOpHash/0x00d0e383c622a7e3b5c010ce915b300bf182988c6914a10b06efa1b933fd7d21?network=sepolia +Transaction Link: https://sepolia.basescan.org/tx/0x5814be99c937b6e7386f3526fe9f11fc1bf7a21180daf66ee2e44cc1e4d0da3d -Transaction Link: https://sepolia.etherscan.io/tx/0xfac73b16d0932ba97a93f12ddc230024b102e581a37a53625dfe8108ca581bb5 +Gas Used: https://dashboard.tenderly.co/tx/base-sepolia/0x5814be99c937b6e7386f3526fe9f11fc1bf7a21180daf66ee2e44cc1e4d0da3d/gas-usage -Gas Used (Account or Paymaster): 147232 -Gas Used (Transaction): 147232 +Gas Used: 116159 ``` diff --git a/examples/4337-gas-metering/gelato/gelato.ts b/examples/4337-gas-metering/gelato/gelato.ts index f7c691b0c..b8348a9ce 100644 --- a/examples/4337-gas-metering/gelato/gelato.ts +++ b/examples/4337-gas-metering/gelato/gelato.ts @@ -1,24 +1,17 @@ import dotenv from 'dotenv' -import { getAccountNonce } from 'permissionless' -import { Client, Hash, createPublicClient, http, zeroAddress } from 'viem' +import { Address, Hash, PublicClient, createPublicClient, http, zeroAddress } from 'viem' import { privateKeyToAccount } from 'viem/accounts' -import { sepolia } from 'viem/chains' -import { SAFE_ADDRESSES_MAP, getAccountAddress, getAccountInitCode } from '../utils/safe' -import { - UserOperation, - signUserOperation, - txTypes, - getGasValuesFromGelato, - submitUserOperationGelato, - createCallData, -} from '../utils/userOps' +import { baseSepolia, sepolia } from 'viem/chains' +import { getAccountAddress, getGelatoAccountInitCode, getGelatoCallData, prepareForGelatoTx } from '../utils/safe' +import { SAFE_ADDRESSES_MAP } from '../utils/address' +import { txTypes } from '../utils/userOps' +import { GelatoRelay } from '@gelatonetwork/relay-sdk' +import { setTimeout } from 'timers/promises' dotenv.config() -const paymaster = 'gelato' const privateKey = process.env.PRIVATE_KEY -const entryPointAddress = process.env.GELATO_ENTRYPOINT_ADDRESS as `0x${string}` const multiSendAddress = process.env.GELATO_MULTISEND_ADDRESS as `0x${string}` const saltNonce = BigInt(process.env.GELATO_NONCE as string) @@ -29,22 +22,14 @@ const chainID = Number(process.env.GELATO_CHAIN_ID) const safeVersion = process.env.SAFE_VERSION as string const rpcURL = process.env.GELATO_RPC_URL -const policyID = process.env.GELATO_GAS_POLICY const apiKey = process.env.GELATO_API_KEY -const erc20TokenAddress = process.env.GELATO_ERC20_TOKEN_CONTRACT as `0x${string}` -const erc721TokenAddress = process.env.GELATO_ERC721_TOKEN_CONTRACT as `0x${string}` +const erc20TokenAddress = process.env.GELATO_ERC20_TOKEN_CONTRACT as Address +const erc721TokenAddress = process.env.GELATO_ERC721_TOKEN_CONTRACT as Address const argv = process.argv.slice(2) -let usePaymaster!: boolean -if (argv.length < 1 || argv.length > 2) { +if (argv.length != 1) { throw new Error('TX Type Argument not passed.') -} else if (argv.length == 2 && argv[1] == 'paymaster=true') { - if (policyID) { - usePaymaster = true - } else { - throw new Error('Paymaster requires policyID to be set.') - } } const txType: string = argv[0] @@ -75,110 +60,127 @@ if (chain == 'sepolia') { transport: http(rpcURL), chain: sepolia, }) +} else if (chain == 'base-sepolia') { + publicClient = createPublicClient({ + transport: http(rpcURL), + chain: baseSepolia, + }) as PublicClient } else { throw new Error('Current code only support limited networks. Please make required changes if you want to use custom network.') } -const initCode = await getAccountInitCode({ +// Creating the Account Init Code. +let requestData = await getGelatoAccountInitCode({ owner: signer.address, + publicClient: publicClient, + txType: txType, addModuleLibAddress: chainAddresses.ADD_MODULES_LIB_ADDRESS, safe4337ModuleAddress: chainAddresses.SAFE_4337_MODULE_ADDRESS, - safeProxyFactoryAddress: chainAddresses.SAFE_PROXY_FACTORY_ADDRESS, safeSingletonAddress: chainAddresses.SAFE_SINGLETON_ADDRESS, saltNonce: saltNonce, multiSendAddress: multiSendAddress, - erc20TokenAddress: zeroAddress, - paymasterAddress: zeroAddress, + erc20TokenAddress: erc20TokenAddress, + erc721TokenAddress: erc721TokenAddress, }) console.log('\nInit Code Created.') +// Creating the Counterfactual Safe Address. const senderAddress = await getAccountAddress({ - client: publicClient, owner: signer.address, + publicClient: publicClient, + txType: txType, addModuleLibAddress: chainAddresses.ADD_MODULES_LIB_ADDRESS, safe4337ModuleAddress: chainAddresses.SAFE_4337_MODULE_ADDRESS, safeProxyFactoryAddress: chainAddresses.SAFE_PROXY_FACTORY_ADDRESS, safeSingletonAddress: chainAddresses.SAFE_SINGLETON_ADDRESS, saltNonce: saltNonce, multiSendAddress: multiSendAddress, - erc20TokenAddress: zeroAddress, + erc20TokenAddress: erc20TokenAddress, + erc721TokenAddress: erc721TokenAddress, paymasterAddress: zeroAddress, + isGelato: true, }) console.log('\nCounterfactual Sender Address Created:', senderAddress) -console.log('Address Link: https://' + chain + '.etherscan.io/address/' + senderAddress) +if (chain == 'base-sepolia') { + console.log('Address Link: https://sepolia.basescan.org/address/' + senderAddress) +} else { + console.log('Address Link: https://' + chain + '.etherscan.io/address/' + senderAddress) +} -const contractCode = await publicClient.getBytecode({ address: senderAddress }) +// Preparing the Safe Account based on the Transaction. +await prepareForGelatoTx({ + signer, + chain, + publicClient, + txType, + senderAddress, + erc20TokenAddress, +}) +// Creating the request object for the Gelato Task. +let request + +const contractCode = await publicClient.getBytecode({ address: senderAddress }) +// Checking if the Safe is already deployed. if (contractCode) { console.log('\nThe Safe is already deployed.') if (txType == 'account') { process.exit(0) } + + // Creating the Call Data if account is already created. + console.log('\nExecuting calldata passed with the Safe.') + requestData = await getGelatoCallData({ + safe: senderAddress, + owner: signer, + publicClient: publicClient, + txType: txType, + erc20TokenAddress: erc20TokenAddress, + erc721TokenAddress: erc721TokenAddress, + }) + console.log('\nSigned Calldata Created.') + + // Creating the Gelato Task Request Object. + request = { + chainId: BigInt(chainID), + target: senderAddress, + data: requestData, + } } else { console.log('\nDeploying a new Safe and executing calldata passed with it (if any).') -} - -const newNonce = await getAccountNonce(publicClient as Client, { - entryPoint: entryPointAddress, - sender: senderAddress, -}) -console.log('\nNonce for the sender received from EntryPoint.') -const txCallData: `0x${string}` = await createCallData( - chain, - publicClient, - signer, - txType, - senderAddress, - erc20TokenAddress, - erc721TokenAddress, - paymaster, -) - -const sponsoredUserOperation: UserOperation = { - sender: senderAddress, - nonce: newNonce, - initCode: contractCode ? '0x' : initCode, - callData: txCallData, - callGasLimit: 1n, // All Gas Values will be filled by Estimation Response Data. - verificationGasLimit: 1n, - preVerificationGas: 1n, - maxFeePerGas: 1n, - maxPriorityFeePerGas: 1n, - paymasterAndData: '0x', - signature: '0x', + // Creating the Gelato Task Request Object. + request = { + chainId: BigInt(chainID), + target: chainAddresses.SAFE_PROXY_FACTORY_ADDRESS, + data: requestData, + } } -sponsoredUserOperation.signature = await signUserOperation( - sponsoredUserOperation, - signer, - chainID, - entryPointAddress, - chainAddresses.SAFE_4337_MODULE_ADDRESS, -) -console.log('\nSigned Dummy Data for Gelato.') - -if (usePaymaster) { - throw new Error('Currently paymaster is not supported for Gelato.') -} else { - sponsoredUserOperation.maxPriorityFeePerGas = 0n // Gelato prefers to keep it to zero. - sponsoredUserOperation.maxFeePerGas = 0n +// Creating the Gelato Relay Object. +const relay = new GelatoRelay() - const rvGas = await getGasValuesFromGelato(entryPointAddress, sponsoredUserOperation, chainID, apiKey) +// Executing the Gelato Task. +const relayResponse = await relay.sponsoredCall(request, apiKey) - sponsoredUserOperation.preVerificationGas = rvGas?.preVerificationGas - sponsoredUserOperation.callGasLimit = rvGas?.callGasLimit - // sponsoredUserOperation.callGasLimit = "0x186a0" as any; - sponsoredUserOperation.verificationGasLimit = rvGas?.verificationGasLimit +// Logging the Gelato Task ID Link. +console.log('\nGelato Relay Task Link: https://api.gelato.digital/tasks/status/' + relayResponse['taskId']) + +let taskStatus = await relay.getTaskStatus(relayResponse.taskId) +// Checking the Gelato Task Status. +while (taskStatus?.taskState !== 'ExecSuccess') { + await setTimeout(25000) + taskStatus = await relay.getTaskStatus(relayResponse.taskId) } -sponsoredUserOperation.signature = await signUserOperation( - sponsoredUserOperation, - signer, - chainID, - entryPointAddress, - chainAddresses.SAFE_4337_MODULE_ADDRESS, -) -console.log('\nSigned Real Data for Gelato.') +// Based on the chain, logging the transaction link and tenderly gas detail. +if (chain == 'base-sepolia') { + console.log('\nTransaction Link: https://sepolia.basescan.org/tx/' + (taskStatus.transactionHash ?? '')) + console.log('\nGas Used: https://dashboard.tenderly.co/tx/' + chain + '/' + (taskStatus.transactionHash ?? '') + '/gas-usage') +} else { + console.log('\nTransaction Link: https://' + chain + '.etherscan.io/tx/' + (taskStatus.transactionHash ?? '')) + console.log('\nGas Used: https://dashboard.tenderly.co/tx/' + chain + '/' + (taskStatus.transactionHash ?? '') + '/gas-usage') +} -await submitUserOperationGelato(entryPointAddress, sponsoredUserOperation, chain, chainID, apiKey) +// Logging the Gas Used. +console.log('\nGas Used:', taskStatus.gasUsed) diff --git a/examples/4337-gas-metering/package.json b/examples/4337-gas-metering/package.json index 927337374..61d85bac8 100644 --- a/examples/4337-gas-metering/package.json +++ b/examples/4337-gas-metering/package.json @@ -17,14 +17,13 @@ "alchemy:erc721:paymaster": "tsx ./alchemy/alchemy.ts erc721 paymaster=true", "alchemy": "tsx ./alchemy/alchemy.ts", "build": "rimraf dist && tsc", - "fmt": "prettier --ignore-path .gitignore --write .", + "fmt": "prettier --write .", "fmt:check": "prettier --check .", "lint": "eslint ./alchemy && eslint ./gelato && eslint ./pimlico && eslint ./utils", "gelato:account:1balance": "tsx ./gelato/gelato.ts account", "gelato:native-transfer:1balance": "tsx ./gelato/gelato.ts native-transfer", "gelato:erc20:1balance": "tsx ./gelato/gelato.ts erc20", "gelato:erc721:1balance": "tsx ./gelato/gelato.ts erc721", - "gelato": "tsx ./gelato/gelato.ts", "pimlico:account": "tsx ./pimlico/pimlico.ts account", "pimlico:account:paymaster": "tsx ./pimlico/pimlico.ts account paymaster=true", "pimlico:native-transfer": "tsx ./pimlico/pimlico.ts native-transfer", @@ -59,6 +58,7 @@ "viem": "2.7.9" }, "devDependencies": { + "@gelatonetwork/relay-sdk": "^5.5.6", "@types/node": "20.11.18", "tsx": "4.7.1", "typescript": "^5.3.3" diff --git a/examples/4337-gas-metering/pimlico/pimlico.ts b/examples/4337-gas-metering/pimlico/pimlico.ts index cb4ea4798..c0d20496c 100644 --- a/examples/4337-gas-metering/pimlico/pimlico.ts +++ b/examples/4337-gas-metering/pimlico/pimlico.ts @@ -5,7 +5,8 @@ import { setTimeout } from 'timers/promises' import { Client, Hash, createClient, createPublicClient, http } from 'viem' import { privateKeyToAccount } from 'viem/accounts' import { goerli, polygonMumbai } from 'viem/chains' -import { SAFE_ADDRESSES_MAP, getAccountAddress, getAccountInitCode } from '../utils/safe' +import { getAccountAddress, getAccountInitCode } from '../utils/safe' +import { SAFE_ADDRESSES_MAP } from '../utils/address' import { UserOperation, submitUserOperationPimlico, signUserOperation, txTypes, createCallData } from '../utils/userOps' import { getERC20Decimals, getERC20Balance, transferERC20Token } from '../utils/erc20' @@ -122,7 +123,7 @@ const initCode = await getAccountInitCode({ console.log('\nInit Code Created.') const senderAddress = await getAccountAddress({ - client: publicClient, + publicClient: publicClient, owner: signer.address, addModuleLibAddress: chainAddresses.ADD_MODULES_LIB_ADDRESS, safe4337ModuleAddress: chainAddresses.SAFE_4337_MODULE_ADDRESS, @@ -207,8 +208,8 @@ if (usePaymaster) { sponsoredUserOperation.paymasterAndData = sponsorResult.paymasterAndData } else { // Fetch USDC balance of sender - const usdcDecimals = await getERC20Decimals(usdcTokenAddress, publicClient) - const usdcAmount = BigInt(10 ** usdcDecimals) + const usdcDecimals = BigInt(await getERC20Decimals(usdcTokenAddress, publicClient)) + const usdcAmount = 10n ** usdcDecimals let senderUSDCBalance = await getERC20Balance(usdcTokenAddress, publicClient, senderAddress) console.log('\nSafe Wallet USDC Balance:', Number(senderUSDCBalance / usdcAmount)) diff --git a/examples/4337-gas-metering/utils/abi.ts b/examples/4337-gas-metering/utils/abi.ts new file mode 100644 index 000000000..8b183c506 --- /dev/null +++ b/examples/4337-gas-metering/utils/abi.ts @@ -0,0 +1,259 @@ +export const ERC20_TOKEN_APPROVE_ABI = [ + { + inputs: [ + { name: '_spender', type: 'address' }, + { name: '_value', type: 'uint256' }, + ], + name: 'approve', + outputs: [{ name: '', type: 'bool' }], + payable: false, + stateMutability: 'nonpayable', + type: 'function', + }, +] + +export const ERC20_TOKEN_TRANSFER_ABI = [ + { + inputs: [ + { name: '_to', type: 'address' }, + { name: '_value', type: 'uint256' }, + ], + name: 'transfer', + outputs: [{ name: '', type: 'bool' }], + payable: false, + stateMutability: 'nonpayable', + type: 'function', + }, +] + +export const ERC20_TOKEN_DECIMALS_ABI = [ + { + inputs: [], + name: 'decimals', + outputs: [{ type: 'uint8' }], + type: 'function', + stateMutability: 'view', + }, +] + +export const ERC20_TOKEN_BALANCE_OF_ABI = [ + { + inputs: [{ name: '_owner', type: 'address' }], + name: 'balanceOf', + outputs: [{ name: 'balance', type: 'uint256' }], + type: 'function', + stateMutability: 'view', + }, +] + +export const ERC20_TOKEN_MINT_ABI = [ + { + inputs: [ + { name: 'to', type: 'address' }, + { name: 'amount', type: 'uint256' }, + ], + name: 'mint', + outputs: [], + type: 'function', + stateMutability: 'public', + }, +] + +export const ERC721_TOKEN_SAFEMINT_ABI = [ + { + inputs: [{ name: '_to', type: 'address' }], + name: 'safeMint', + outputs: [], + payable: false, + stateMutability: 'nonpayable', + type: 'function', + }, +] + +export const MULTISEND_ABI = [ + { + inputs: [{ internalType: 'bytes', name: 'transactions', type: 'bytes' }], + name: 'multiSend', + outputs: [], + stateMutability: 'payable', + type: 'function', + }, +] + +export const SAFE_NONCE_ABI = [ + { + inputs: [], + name: 'nonce', + outputs: [{ type: 'uint256' }], + type: 'function', + stateMutability: 'view', + }, +] + +export const SAFE_EXECTRANSACTION_ABI = [ + { + inputs: [ + { internalType: 'address', name: 'to', type: 'address' }, + { internalType: 'uint256', name: 'value', type: 'uint256' }, + { internalType: 'bytes', name: 'data', type: 'bytes' }, + { internalType: 'uint8', name: 'operation', type: 'uint8' }, + { internalType: 'uint256', name: 'safeTxGas', type: 'uint256' }, + { internalType: 'uint256', name: 'baseGas', type: 'uint256' }, + { internalType: 'uint256', name: 'gasPrice', type: 'uint256' }, + { internalType: 'address', name: 'gasToken', type: 'address' }, + { internalType: 'address', name: 'refundReceiver', type: 'address' }, + { internalType: 'bytes', name: 'signatures', type: 'bytes' }, + ], + name: 'execTransaction', + outputs: [{ name: 'success', type: 'bool' }], + payable: true, + stateMutability: 'external', + type: 'function', + }, +] + +export const SAFE_SETUP_ABI = [ + { + inputs: [ + { + internalType: 'address[]', + name: '_owners', + type: 'address[]', + }, + { + internalType: 'uint256', + name: '_threshold', + type: 'uint256', + }, + { + internalType: 'address', + name: 'to', + type: 'address', + }, + { + internalType: 'bytes', + name: 'data', + type: 'bytes', + }, + { + internalType: 'address', + name: 'fallbackHandler', + type: 'address', + }, + { + internalType: 'address', + name: 'paymentToken', + type: 'address', + }, + { + internalType: 'uint256', + name: 'payment', + type: 'uint256', + }, + { + internalType: 'address payable', + name: 'paymentReceiver', + type: 'address', + }, + ], + name: 'setup', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, +] + +export const SAFE_ENABLE_MODULES_ABI = [ + { + inputs: [ + { + internalType: 'address[]', + name: 'modules', + type: 'address[]', + }, + ], + name: 'enableModules', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, +] + +export const SAFE_FACTORY_CREATE_PROXY_WITH_NONCE_ABI = [ + { + inputs: [ + { + internalType: 'address', + name: '_singleton', + type: 'address', + }, + { + internalType: 'bytes', + name: 'initializer', + type: 'bytes', + }, + { + internalType: 'uint256', + name: 'saltNonce', + type: 'uint256', + }, + ], + name: 'createProxyWithNonce', + outputs: [ + { + internalType: 'contract SafeProxy', + name: 'proxy', + type: 'address', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, +] + +export const SAFE_4337_EXECUTE_USEROP_ABI = [ + { + inputs: [ + { + internalType: 'address', + name: 'to', + type: 'address', + }, + { + internalType: 'uint256', + name: 'value', + type: 'uint256', + }, + { + internalType: 'bytes', + name: 'data', + type: 'bytes', + }, + { + internalType: 'uint8', + name: 'operation', + type: 'uint8', + }, + ], + name: 'executeUserOp', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, +] + +export const SAFE_FACTORY_PROXY_CREATION_CODE_ABI = [ + { + inputs: [], + name: 'proxyCreationCode', + outputs: [ + { + internalType: 'bytes', + name: '', + type: 'bytes', + }, + ], + stateMutability: 'pure', + type: 'function', + }, +] diff --git a/examples/4337-gas-metering/utils/address.ts b/examples/4337-gas-metering/utils/address.ts new file mode 100644 index 000000000..dae137bc5 --- /dev/null +++ b/examples/4337-gas-metering/utils/address.ts @@ -0,0 +1,28 @@ +export const SAFE_ADDRESSES_MAP = { + '1.4.1': { + '5': { + ADD_MODULES_LIB_ADDRESS: '0x8EcD4ec46D4D2a6B64fE960B3D64e8B94B2234eb', + SAFE_4337_MODULE_ADDRESS: '0xa581c4A4DB7175302464fF3C06380BC3270b4037', + SAFE_PROXY_FACTORY_ADDRESS: '0x4e1DCf7AD4e460CfD30791CCC4F9c8a4f820ec67', + SAFE_SINGLETON_ADDRESS: '0x41675C099F32341bf84BFc5382aF534df5C7461a', + }, + '80001': { + ADD_MODULES_LIB_ADDRESS: '0x8EcD4ec46D4D2a6B64fE960B3D64e8B94B2234eb', + SAFE_4337_MODULE_ADDRESS: '0xa581c4A4DB7175302464fF3C06380BC3270b4037', + SAFE_PROXY_FACTORY_ADDRESS: '0x4e1DCf7AD4e460CfD30791CCC4F9c8a4f820ec67', + SAFE_SINGLETON_ADDRESS: '0x41675C099F32341bf84BFc5382aF534df5C7461a', + }, + '84532': { + ADD_MODULES_LIB_ADDRESS: '0x8EcD4ec46D4D2a6B64fE960B3D64e8B94B2234eb', + SAFE_4337_MODULE_ADDRESS: '0xa581c4A4DB7175302464fF3C06380BC3270b4037', + SAFE_PROXY_FACTORY_ADDRESS: '0x4e1DCf7AD4e460CfD30791CCC4F9c8a4f820ec67', + SAFE_SINGLETON_ADDRESS: '0x41675C099F32341bf84BFc5382aF534df5C7461a', + }, + '11155111': { + ADD_MODULES_LIB_ADDRESS: '0x8EcD4ec46D4D2a6B64fE960B3D64e8B94B2234eb', + SAFE_4337_MODULE_ADDRESS: '0xa581c4A4DB7175302464fF3C06380BC3270b4037', + SAFE_PROXY_FACTORY_ADDRESS: '0x4e1DCf7AD4e460CfD30791CCC4F9c8a4f820ec67', + SAFE_SINGLETON_ADDRESS: '0x41675C099F32341bf84BFc5382aF534df5C7461a', + }, + }, +} as const diff --git a/examples/4337-gas-metering/utils/erc20.ts b/examples/4337-gas-metering/utils/erc20.ts index 3cc3db26f..262d26b30 100644 --- a/examples/4337-gas-metering/utils/erc20.ts +++ b/examples/4337-gas-metering/utils/erc20.ts @@ -1,6 +1,13 @@ import dotenv from 'dotenv' -import { http, Address, encodeFunctionData, createWalletClient, PrivateKeyAccount } from 'viem' -import { goerli, polygonMumbai, sepolia } from 'viem/chains' +import { http, Address, encodeFunctionData, createWalletClient, PrivateKeyAccount, PublicClient } from 'viem' +import { baseSepolia, goerli, polygonMumbai, sepolia } from 'viem/chains' +import { + ERC20_TOKEN_APPROVE_ABI, + ERC20_TOKEN_BALANCE_OF_ABI, + ERC20_TOKEN_DECIMALS_ABI, + ERC20_TOKEN_MINT_ABI, + ERC20_TOKEN_TRANSFER_ABI, +} from './abi' dotenv.config() const pimlicoRPCURL = process.env.PIMLICO_RPC_URL @@ -9,19 +16,7 @@ const gelatoRPCURL = process.env.GELATO_RPC_URL export const generateApproveCallData = (paymasterAddress: Address) => { const approveData = encodeFunctionData({ - abi: [ - { - inputs: [ - { name: '_spender', type: 'address' }, - { name: '_value', type: 'uint256' }, - ], - name: 'approve', - outputs: [{ name: '', type: 'bool' }], - payable: false, - stateMutability: 'nonpayable', - type: 'function', - }, - ], + abi: ERC20_TOKEN_APPROVE_ABI, args: [paymasterAddress, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffn], }) @@ -30,67 +25,39 @@ export const generateApproveCallData = (paymasterAddress: Address) => { export const generateTransferCallData = (to: Address, value: bigint) => { const transferData = encodeFunctionData({ - abi: [ - { - inputs: [ - { name: '_to', type: 'address' }, - { name: '_value', type: 'uint256' }, - ], - name: 'transfer', - outputs: [{ name: '', type: 'bool' }], - payable: false, - stateMutability: 'nonpayable', - type: 'function', - }, - ], + abi: ERC20_TOKEN_TRANSFER_ABI, args: [to, value], }) return transferData } -export const getERC20Decimals = async (erc20TokenAddress: string, publicClient: any) => { - const erc20Decimals = await publicClient.readContract({ - abi: [ - { - inputs: [], - name: 'decimals', - outputs: [{ type: 'uint8' }], - type: 'function', - stateMutability: 'view', - }, - ], +export const getERC20Decimals = async (erc20TokenAddress: Address, publicClient: PublicClient): Promise => { + const erc20Decimals = (await publicClient.readContract({ + abi: ERC20_TOKEN_DECIMALS_ABI, address: erc20TokenAddress, functionName: 'decimals', - }) + })) as bigint return erc20Decimals } -export const getERC20Balance = async (erc20TokenAddress: string, publicClient: any, owner: string) => { - const senderERC20Balance = await publicClient.readContract({ - abi: [ - { - inputs: [{ name: '_owner', type: 'address' }], - name: 'balanceOf', - outputs: [{ name: 'balance', type: 'uint256' }], - type: 'function', - stateMutability: 'view', - }, - ], +export const getERC20Balance = async (erc20TokenAddress: Address, publicClient: PublicClient, owner: Address): Promise => { + const senderERC20Balance = (await publicClient.readContract({ + abi: ERC20_TOKEN_BALANCE_OF_ABI, address: erc20TokenAddress, functionName: 'balanceOf', args: [owner], - }) + })) as bigint return senderERC20Balance } export const mintERC20Token = async ( - erc20TokenAddress: string, - publicClient: any, + erc20TokenAddress: Address, + publicClient: PublicClient, signer: PrivateKeyAccount, - to: string, + to: Address, amount: bigint, chain: string, paymaster: string, @@ -135,6 +102,12 @@ export const mintERC20Token = async ( chain: sepolia, transport: http(gelatoRPCURL), }) + } else if (chain == 'base-sepolia') { + walletClient = createWalletClient({ + account: signer, + chain: baseSepolia, + transport: http(gelatoRPCURL), + }) } else { throw new Error('Current code only support limited networks. Please make required changes if you want to use custom network.') } @@ -143,18 +116,7 @@ export const mintERC20Token = async ( } const { request } = await publicClient.simulateContract({ address: erc20TokenAddress, - abi: [ - { - inputs: [ - { name: 'to', type: 'address' }, - { name: 'amount', type: 'uint256' }, - ], - name: 'mint', - outputs: [], - type: 'function', - stateMutability: 'public', - }, - ], + abi: ERC20_TOKEN_MINT_ABI, functionName: 'mint', args: [to, amount], account: signer, @@ -163,10 +125,10 @@ export const mintERC20Token = async ( } export const transferERC20Token = async ( - erc20TokenAddress: string, - publicClient: any, + erc20TokenAddress: Address, + publicClient: PublicClient, signer: PrivateKeyAccount, - to: string, + to: Address, amount: bigint, chain: string, paymaster: string, @@ -211,6 +173,12 @@ export const transferERC20Token = async ( chain: sepolia, transport: http(gelatoRPCURL), }) + } else if (chain == 'base-sepolia') { + walletClient = createWalletClient({ + account: signer, + chain: baseSepolia, + transport: http(gelatoRPCURL), + }) } else { throw new Error('Current code only support limited networks. Please make required changes if you want to use custom network.') } @@ -226,18 +194,7 @@ export const transferERC20Token = async ( const { request } = await publicClient.simulateContract({ address: erc20TokenAddress, - abi: [ - { - inputs: [ - { name: 'recipient', type: 'address' }, - { name: 'amount', type: 'uint256' }, - ], - name: 'transfer', - outputs: [{ name: '', type: 'bool' }], - type: 'function', - stateMutability: 'public', - }, - ], + abi: ERC20_TOKEN_TRANSFER_ABI, functionName: 'transfer', args: [to, amount], account: signer, diff --git a/examples/4337-gas-metering/utils/erc721.ts b/examples/4337-gas-metering/utils/erc721.ts index 696e8c62e..653085dae 100644 --- a/examples/4337-gas-metering/utils/erc721.ts +++ b/examples/4337-gas-metering/utils/erc721.ts @@ -1,17 +1,9 @@ import { Address, encodeFunctionData } from 'viem' +import { ERC721_TOKEN_SAFEMINT_ABI } from './abi' export const generateMintingCallData = (to: Address) => { const transferData = encodeFunctionData({ - abi: [ - { - inputs: [{ name: '_to', type: 'address' }], - name: 'safeMint', - outputs: [], - payable: false, - stateMutability: 'nonpayable', - type: 'function', - }, - ], + abi: ERC721_TOKEN_SAFEMINT_ABI, args: [to], }) diff --git a/examples/4337-gas-metering/utils/multisend.ts b/examples/4337-gas-metering/utils/multisend.ts index f32257ba1..d07745f4b 100644 --- a/examples/4337-gas-metering/utils/multisend.ts +++ b/examples/4337-gas-metering/utils/multisend.ts @@ -1,7 +1,8 @@ -import { encodePacked, encodeFunctionData } from 'viem' +import { encodePacked, encodeFunctionData, Address } from 'viem' +import { MULTISEND_ABI } from './abi' export type InternalTx = { - to: `0x${string}` + to: Address data: `0x${string}` value: bigint operation: 0 | 1 @@ -19,15 +20,7 @@ export const encodeMultiSend = (txs: InternalTx[]): `0x${string}` => { const data: `0x${string}` = `0x${txs.map((tx) => encodeInternalTransaction(tx)).join('')}` return encodeFunctionData({ - abi: [ - { - inputs: [{ internalType: 'bytes', name: 'transactions', type: 'bytes' }], - name: 'multiSend', - outputs: [], - stateMutability: 'payable', - type: 'function', - }, - ], + abi: MULTISEND_ABI, functionName: 'multiSend', args: [data], }) diff --git a/examples/4337-gas-metering/utils/nativeTransfer.ts b/examples/4337-gas-metering/utils/nativeTransfer.ts index a7090fdc8..32622daa7 100644 --- a/examples/4337-gas-metering/utils/nativeTransfer.ts +++ b/examples/4337-gas-metering/utils/nativeTransfer.ts @@ -1,6 +1,6 @@ import dotenv from 'dotenv' -import { http, createWalletClient, PrivateKeyAccount } from 'viem' -import { goerli, polygonMumbai, sepolia } from 'viem/chains' +import { http, createWalletClient, PrivateKeyAccount, PublicClient, Address } from 'viem' +import { baseSepolia, goerli, polygonMumbai, sepolia } from 'viem/chains' import { setTimeout } from 'timers/promises' dotenv.config() @@ -9,9 +9,9 @@ const alchemyRPCURL = process.env.ALCHEMY_RPC_URL const gelatoRPCURL = process.env.GELATO_RPC_URL export const transferETH = async ( - publicClient: any, + publicClient: PublicClient, signer: PrivateKeyAccount, - receiver: `0x${string}`, + receiver: Address, amount: bigint, chain: string, paymaster: string, @@ -58,6 +58,12 @@ export const transferETH = async ( chain: sepolia, transport: http(gelatoRPCURL), }) + } else if (chain == 'base-sepolia') { + walletClient = createWalletClient({ + account: signer, + chain: baseSepolia, + transport: http(gelatoRPCURL), + }) } else { throw new Error('Current code only support limited networks. Please make required changes if you want to use custom network.') } diff --git a/examples/4337-gas-metering/utils/safe.ts b/examples/4337-gas-metering/utils/safe.ts index 3c423fa20..fa73c0de1 100644 --- a/examples/4337-gas-metering/utils/safe.ts +++ b/examples/4337-gas-metering/utils/safe.ts @@ -1,40 +1,136 @@ import { Address, Hex, + PrivateKeyAccount, PublicClient, concatHex, encodeFunctionData, encodePacked, + formatEther, getContractAddress, hexToBigInt, keccak256, + parseEther, zeroAddress, } from 'viem' import { InternalTx, encodeMultiSend } from './multisend' -import { generateApproveCallData } from './erc20' - -export const SAFE_ADDRESSES_MAP = { - '1.4.1': { - '11155111': { - ADD_MODULES_LIB_ADDRESS: '0x8EcD4ec46D4D2a6B64fE960B3D64e8B94B2234eb', - SAFE_4337_MODULE_ADDRESS: '0xa581c4A4DB7175302464fF3C06380BC3270b4037', - SAFE_PROXY_FACTORY_ADDRESS: '0x4e1DCf7AD4e460CfD30791CCC4F9c8a4f820ec67', - SAFE_SINGLETON_ADDRESS: '0x41675C099F32341bf84BFc5382aF534df5C7461a', - }, - '5': { - ADD_MODULES_LIB_ADDRESS: '0x8EcD4ec46D4D2a6B64fE960B3D64e8B94B2234eb', - SAFE_4337_MODULE_ADDRESS: '0xa581c4A4DB7175302464fF3C06380BC3270b4037', - SAFE_PROXY_FACTORY_ADDRESS: '0x4e1DCf7AD4e460CfD30791CCC4F9c8a4f820ec67', - SAFE_SINGLETON_ADDRESS: '0x41675C099F32341bf84BFc5382aF534df5C7461a', - }, - '80001': { - ADD_MODULES_LIB_ADDRESS: '0x8EcD4ec46D4D2a6B64fE960B3D64e8B94B2234eb', - SAFE_4337_MODULE_ADDRESS: '0xa581c4A4DB7175302464fF3C06380BC3270b4037', - SAFE_PROXY_FACTORY_ADDRESS: '0x4e1DCf7AD4e460CfD30791CCC4F9c8a4f820ec67', - SAFE_SINGLETON_ADDRESS: '0x41675C099F32341bf84BFc5382aF534df5C7461a', +import { generateApproveCallData, generateTransferCallData, getERC20Balance, getERC20Decimals, mintERC20Token } from './erc20' +import { setTimeout } from 'timers/promises' +import { generateMintingCallData } from './erc721' +import { transferETH } from './nativeTransfer' +import { + SAFE_4337_EXECUTE_USEROP_ABI, + SAFE_ENABLE_MODULES_ABI, + SAFE_EXECTRANSACTION_ABI, + SAFE_FACTORY_CREATE_PROXY_WITH_NONCE_ABI, + SAFE_FACTORY_PROXY_CREATION_CODE_ABI, + SAFE_NONCE_ABI, + SAFE_SETUP_ABI, +} from './abi' +import { EIP712_SAFE_TX_TYPE } from './type' + +export interface MetaTransaction { + to: Address + value: bigint + data: `0x${string}` + operation: number + nonce: bigint +} + +export const getGelatoCallData = async ({ + safe, + owner, + publicClient, + txType, + erc20TokenAddress, + erc721TokenAddress, +}: { + safe: Address + owner: PrivateKeyAccount + publicClient: PublicClient + txType: string + erc20TokenAddress: Address + erc721TokenAddress: Address +}) => { + let setupTxs: MetaTransaction + + const nonce = (await publicClient.readContract({ + abi: SAFE_NONCE_ABI, + address: safe, + functionName: 'nonce', + })) as bigint + + if (txType == 'erc20') { + // Token Configurations + const erc20Decimals = BigInt(await getERC20Decimals(erc20TokenAddress, publicClient)) + const erc20Amount = 10n ** erc20Decimals + + setupTxs = { + to: erc20TokenAddress, + value: 0n, + data: generateTransferCallData(owner.address, erc20Amount), // transfer() function call with corresponding data. + operation: 0, // 0 = Call + nonce: nonce, + } + } else if (txType == 'erc721') { + setupTxs = { + to: erc721TokenAddress, + data: generateMintingCallData(owner.address), // safeMint() function call with corresponding data. + value: 0n, + operation: 0, + nonce: nonce, + } + } else if (txType == 'native-transfer') { + const weiToSend = parseEther('0.000001') + + setupTxs = { + to: owner.address, + data: '0x', // No data required for native transfer. + value: weiToSend, + operation: 0, + nonce: nonce, + } + } else { + throw new Error('Invalid transaction type.') + } + console.log('\nAppropriate calldata created.') + + const signature = [ + { + signer: owner.address, + data: await owner.signTypedData({ + domain: { + chainId: await publicClient.getChainId(), + verifyingContract: safe, + }, + types: EIP712_SAFE_TX_TYPE, + primaryType: 'SafeTx', + message: { + to: setupTxs.to, + data: setupTxs.data, + value: setupTxs.value, + operation: setupTxs.operation, + safeTxGas: 0n, + baseGas: 0n, + gasPrice: 0n, + gasToken: zeroAddress, + refundReceiver: zeroAddress, + nonce: setupTxs.nonce, + }, + }), }, - }, -} as const + ] + + console.log('\nSignature for Call Data created.') + + const callData = encodeFunctionData({ + abi: SAFE_EXECTRANSACTION_ABI, + functionName: 'execTransaction', + args: [setupTxs.to, setupTxs.value, setupTxs.data, setupTxs.operation, 0n, 0n, 0n, zeroAddress, zeroAddress, signature[0].data], + }) + + return callData +} const getInitializerCode = async ({ owner, @@ -72,78 +168,134 @@ const getInitializerCode = async ({ const multiSendCallData = encodeMultiSend(setupTxs) return encodeFunctionData({ - abi: [ - { - inputs: [ - { - internalType: 'address[]', - name: '_owners', - type: 'address[]', - }, - { - internalType: 'uint256', - name: '_threshold', - type: 'uint256', - }, - { - internalType: 'address', - name: 'to', - type: 'address', - }, - { - internalType: 'bytes', - name: 'data', - type: 'bytes', - }, - { - internalType: 'address', - name: 'fallbackHandler', - type: 'address', - }, - { - internalType: 'address', - name: 'paymentToken', - type: 'address', - }, - { - internalType: 'uint256', - name: 'payment', - type: 'uint256', - }, - { - internalType: 'address payable', - name: 'paymentReceiver', - type: 'address', - }, - ], - name: 'setup', - outputs: [], - stateMutability: 'nonpayable', - type: 'function', - }, - ], + abi: SAFE_SETUP_ABI, functionName: 'setup', args: [[owner], 1n, multiSendAddress, multiSendCallData, safe4337ModuleAddress, zeroAddress, 0n, zeroAddress], }) } +const getGelatoInitializerCode = async ({ + owner, + publicClient, + txType, + addModuleLibAddress, + safe4337ModuleAddress, + multiSendAddress, + erc20TokenAddress, + erc721TokenAddress, +}: { + owner: Address + publicClient: PublicClient + txType: string + addModuleLibAddress: Address + safe4337ModuleAddress: Address + multiSendAddress: Address + erc20TokenAddress: Address + erc721TokenAddress: Address +}) => { + const setupTxs: InternalTx[] = [ + { + to: addModuleLibAddress, + data: enableModuleCallData(safe4337ModuleAddress), + value: 0n, + operation: 1, // 1 = DelegateCall required for enabling the module + }, + ] + if (txType == 'erc20') { + // Token Configurations + const erc20Decimals = BigInt(await getERC20Decimals(erc20TokenAddress, publicClient)) + const erc20Amount = 10n ** erc20Decimals + + setupTxs.push({ + to: erc20TokenAddress, + data: generateTransferCallData(owner, erc20Amount), // transfer() function call with corresponding data. + value: 0n, + operation: 0, // 0 = Call + }) + } else if (txType == 'erc721') { + setupTxs.push({ + to: erc721TokenAddress, + data: generateMintingCallData(owner), // safeMint() function call with corresponding data. + value: 0n, + operation: 0, // 0 = Call + }) + } else if (txType == 'native-transfer') { + const weiToSend = parseEther('0.000001') + + setupTxs.push({ + to: owner, + data: '0x', // No data required for native transfer. + value: weiToSend, + operation: 0, // 0 = Call + }) + } + console.log('\nAppropriate calldata created.') + + const multiSendCallData = encodeMultiSend(setupTxs) + + return encodeFunctionData({ + abi: SAFE_SETUP_ABI, + functionName: 'setup', + args: [[owner], 1n, multiSendAddress, multiSendCallData, safe4337ModuleAddress, zeroAddress, 0n, zeroAddress], + }) +} + +export const prepareForGelatoTx = async ({ + signer, + chain, + publicClient, + txType, + senderAddress, + erc20TokenAddress, +}: { + signer: PrivateKeyAccount + chain: string + publicClient: PublicClient + txType: string + senderAddress: Address + erc20TokenAddress: Address +}) => { + if (txType == 'erc20') { + // Token Configurations + const erc20Decimals = BigInt(await getERC20Decimals(erc20TokenAddress, publicClient)) + const erc20Amount = 10n ** erc20Decimals + let senderERC20Balance = await getERC20Balance(erc20TokenAddress, publicClient, senderAddress) + console.log('\nSafe Wallet ERC20 Balance:', Number(senderERC20Balance / erc20Amount)) + + // Trying to mint tokens (Make sure ERC20 Token Contract is mintable by anyone). + if (senderERC20Balance < erc20Amount) { + console.log('\nMinting ERC20 Tokens to Safe Wallet.') + await mintERC20Token(erc20TokenAddress, publicClient, signer, senderAddress, erc20Amount, chain, 'gelato') + + while (senderERC20Balance < erc20Amount) { + await setTimeout(15000) + senderERC20Balance = await getERC20Balance(erc20TokenAddress, publicClient, senderAddress) + } + console.log('\nUpdated Safe Wallet ERC20 Balance:', Number(senderERC20Balance / erc20Amount)) + } + } else if (txType == 'native-transfer') { + const weiToSend = parseEther('0.000001') + let safeETHBalance = await publicClient.getBalance({ + address: senderAddress, + }) + if (safeETHBalance < weiToSend) { + console.log('\nTransferring', formatEther(weiToSend - safeETHBalance), 'ETH to Safe for native transfer.') + await transferETH(publicClient, signer, senderAddress, weiToSend - safeETHBalance, chain, 'gelato') + while (safeETHBalance < weiToSend) { + await setTimeout(30000) // Sometimes it takes time to index. + safeETHBalance = await publicClient.getBalance({ + address: senderAddress, + }) + } + console.log('\nTransferred required ETH for the native transfer.') + } + } + console.log('\nAppropriate preparation done for transaction.') +} + export const enableModuleCallData = (safe4337ModuleAddress: `0x${string}`) => { return encodeFunctionData({ - abi: [ - { - inputs: [ - { - internalType: 'address[]', - name: 'modules', - type: 'address[]', - }, - ], - name: 'enableModules', - outputs: [], - stateMutability: 'nonpayable', - type: 'function', - }, - ], + abi: SAFE_ENABLE_MODULES_ABI, functionName: 'enableModules', args: [[safe4337ModuleAddress]], }) @@ -181,37 +333,7 @@ export const getAccountInitCode = async ({ }) const initCodeCallData = encodeFunctionData({ - abi: [ - { - inputs: [ - { - internalType: 'address', - name: '_singleton', - type: 'address', - }, - { - internalType: 'bytes', - name: 'initializer', - type: 'bytes', - }, - { - internalType: 'uint256', - name: 'saltNonce', - type: 'uint256', - }, - ], - name: 'createProxyWithNonce', - outputs: [ - { - internalType: 'contract SafeProxy', - name: 'proxy', - type: 'address', - }, - ], - stateMutability: 'nonpayable', - type: 'function', - }, - ], + abi: SAFE_FACTORY_CREATE_PROXY_WITH_NONCE_ABI, functionName: 'createProxyWithNonce', args: [safeSingletonAddress, initializer, saltNonce], }) @@ -219,64 +341,62 @@ export const getAccountInitCode = async ({ return concatHex([safeProxyFactoryAddress, initCodeCallData]) } -export const EIP712_SAFE_OPERATION_TYPE = { - SafeOp: [ - { type: 'address', name: 'safe' }, - { type: 'uint256', name: 'nonce' }, - { type: 'bytes', name: 'initCode' }, - { type: 'bytes', name: 'callData' }, - { type: 'uint256', name: 'callGasLimit' }, - { type: 'uint256', name: 'verificationGasLimit' }, - { type: 'uint256', name: 'preVerificationGas' }, - { type: 'uint256', name: 'maxFeePerGas' }, - { type: 'uint256', name: 'maxPriorityFeePerGas' }, - { type: 'bytes', name: 'paymasterAndData' }, - { type: 'uint48', name: 'validAfter' }, - { type: 'uint48', name: 'validUntil' }, - { type: 'address', name: 'entryPoint' }, - ], +export const getGelatoAccountInitCode = async ({ + owner, + publicClient, + txType, + addModuleLibAddress, + safe4337ModuleAddress, + safeSingletonAddress, + saltNonce = 0n, + multiSendAddress, + erc20TokenAddress, + erc721TokenAddress, +}: { + owner: Address + publicClient: PublicClient + txType: string + addModuleLibAddress: Address + safe4337ModuleAddress: Address + safeSingletonAddress: Address + saltNonce?: bigint + multiSendAddress: Address + erc20TokenAddress: Address + erc721TokenAddress: Address +}): Promise => { + if (!owner) throw new Error('Owner account not found') + const initializer = await getGelatoInitializerCode({ + owner, + publicClient, + txType, + addModuleLibAddress, + safe4337ModuleAddress, + multiSendAddress, + erc20TokenAddress, + erc721TokenAddress, + }) + + const initCodeCallData = encodeFunctionData({ + abi: SAFE_FACTORY_CREATE_PROXY_WITH_NONCE_ABI, + functionName: 'createProxyWithNonce', + args: [safeSingletonAddress, initializer, saltNonce], + }) + + return initCodeCallData } export const encodeCallData = (params: { to: Address; value: bigint; data: `0x${string}` }) => { return encodeFunctionData({ - abi: [ - { - inputs: [ - { - internalType: 'address', - name: 'to', - type: 'address', - }, - { - internalType: 'uint256', - name: 'value', - type: 'uint256', - }, - { - internalType: 'bytes', - name: 'data', - type: 'bytes', - }, - { - internalType: 'uint8', - name: 'operation', - type: 'uint8', - }, - ], - name: 'executeUserOp', - outputs: [], - stateMutability: 'nonpayable', - type: 'function', - }, - ], + abi: SAFE_4337_EXECUTE_USEROP_ABI, functionName: 'executeUserOp', args: [params.to, params.value, params.data, 0], }) } export const getAccountAddress = async ({ - client, owner, + publicClient, + txType = '', addModuleLibAddress, safe4337ModuleAddress, safeProxyFactoryAddress, @@ -284,10 +404,13 @@ export const getAccountAddress = async ({ saltNonce = 0n, multiSendAddress, erc20TokenAddress, + erc721TokenAddress = zeroAddress, paymasterAddress, + isGelato = false, }: { - client: PublicClient owner: Address + publicClient: PublicClient + txType?: string addModuleLibAddress: Address safe4337ModuleAddress: Address safeProxyFactoryAddress: Address @@ -295,38 +418,40 @@ export const getAccountAddress = async ({ saltNonce?: bigint multiSendAddress: Address erc20TokenAddress: Address + erc721TokenAddress?: Address paymasterAddress: Address + isGelato?: boolean }): Promise
=> { - const proxyCreationCode = await client.readContract({ - abi: [ - { - inputs: [], - name: 'proxyCreationCode', - outputs: [ - { - internalType: 'bytes', - name: '', - type: 'bytes', - }, - ], - stateMutability: 'pure', - type: 'function', - }, - ], + const proxyCreationCode = (await publicClient.readContract({ + abi: SAFE_FACTORY_PROXY_CREATION_CODE_ABI, address: safeProxyFactoryAddress, functionName: 'proxyCreationCode', - }) + })) as `0x${string}` const deploymentCode = encodePacked(['bytes', 'uint256'], [proxyCreationCode, hexToBigInt(safeSingletonAddress)]) - const initializer = await getInitializerCode({ - owner, - addModuleLibAddress, - safe4337ModuleAddress, - multiSendAddress, - erc20TokenAddress, - paymasterAddress, - }) + let initializer + if (isGelato) { + initializer = await getGelatoInitializerCode({ + owner, + publicClient, + txType, + addModuleLibAddress, + safe4337ModuleAddress, + multiSendAddress, + erc20TokenAddress, + erc721TokenAddress, + }) + } else { + initializer = await getInitializerCode({ + owner, + addModuleLibAddress, + safe4337ModuleAddress, + multiSendAddress, + erc20TokenAddress, + paymasterAddress, + }) + } const salt = keccak256(encodePacked(['bytes32', 'uint256'], [keccak256(encodePacked(['bytes'], [initializer])), saltNonce])) diff --git a/examples/4337-gas-metering/utils/type.ts b/examples/4337-gas-metering/utils/type.ts new file mode 100644 index 000000000..1303b78a8 --- /dev/null +++ b/examples/4337-gas-metering/utils/type.ts @@ -0,0 +1,33 @@ +export const EIP712_SAFE_TX_TYPE = { + // "SafeTx(address to,uint256 value,bytes data,uint8 operation,uint256 safeTxGas,uint256 baseGas,uint256 gasPrice,address gasToken,address refundReceiver,uint256 nonce)" + SafeTx: [ + { type: 'address', name: 'to' }, + { type: 'uint256', name: 'value' }, + { type: 'bytes', name: 'data' }, + { type: 'uint8', name: 'operation' }, + { type: 'uint256', name: 'safeTxGas' }, + { type: 'uint256', name: 'baseGas' }, + { type: 'uint256', name: 'gasPrice' }, + { type: 'address', name: 'gasToken' }, + { type: 'address', name: 'refundReceiver' }, + { type: 'uint256', name: 'nonce' }, + ], +} + +export const EIP712_SAFE_OPERATION_TYPE = { + SafeOp: [ + { type: 'address', name: 'safe' }, + { type: 'uint256', name: 'nonce' }, + { type: 'bytes', name: 'initCode' }, + { type: 'bytes', name: 'callData' }, + { type: 'uint256', name: 'callGasLimit' }, + { type: 'uint256', name: 'verificationGasLimit' }, + { type: 'uint256', name: 'preVerificationGas' }, + { type: 'uint256', name: 'maxFeePerGas' }, + { type: 'uint256', name: 'maxPriorityFeePerGas' }, + { type: 'bytes', name: 'paymasterAndData' }, + { type: 'uint48', name: 'validAfter' }, + { type: 'uint48', name: 'validUntil' }, + { type: 'address', name: 'entryPoint' }, + ], +} diff --git a/examples/4337-gas-metering/utils/userOps.ts b/examples/4337-gas-metering/utils/userOps.ts index 9466cc6ad..3b28cfbf1 100644 --- a/examples/4337-gas-metering/utils/userOps.ts +++ b/examples/4337-gas-metering/utils/userOps.ts @@ -1,7 +1,8 @@ import dotenv from 'dotenv' import type { Address } from 'abitype' import { fromHex, parseEther, type Hex, type PrivateKeyAccount, formatEther } from 'viem' -import { EIP712_SAFE_OPERATION_TYPE, encodeCallData } from './safe' +import { encodeCallData } from './safe' +import { EIP712_SAFE_OPERATION_TYPE } from './type' import { Alchemy } from 'alchemy-sdk' import { setTimeout } from 'timers/promises' import { generateTransferCallData, getERC20Balance, getERC20Decimals, mintERC20Token } from './erc20' @@ -350,7 +351,7 @@ export const createCallData = async ( } else if (txType == 'erc20') { // Token Configurations const erc20Decimals = await getERC20Decimals(erc20TokenAddress, publicClient) - const erc20Amount = BigInt(10 ** erc20Decimals) + const erc20Amount = BigInt(10n ** erc20Decimals) let senderERC20Balance = await getERC20Balance(erc20TokenAddress, publicClient, senderAddress) console.log('\nSafe Wallet ERC20 Balance:', Number(senderERC20Balance / erc20Amount)) @@ -403,135 +404,3 @@ export const createCallData = async ( console.log('\nAppropriate calldata created.') return txCallData } - -export const getGasValuesFromGelato = async ( - entryPointAddress: `0x${string}`, - sponsoredUserOperation: UserOperation, - chainID: number, - apiKey: string, -) => { - const gasOptions = { - method: 'POST', - headers: { accept: 'application/json', 'content-type': 'application/json' }, - body: JSON.stringify({ - id: 0, - jsonrpc: '2.0', - method: 'eth_estimateUserOperationGas', - params: [ - { - sender: sponsoredUserOperation.sender, - nonce: '0x' + sponsoredUserOperation.nonce.toString(16), - initCode: sponsoredUserOperation.initCode, - callData: sponsoredUserOperation.callData, - signature: sponsoredUserOperation.signature, - paymasterAndData: '0x', - }, - entryPointAddress, - ], - }), - } - - let responseValues - await fetch(`https://api.gelato.digital//bundlers/${chainID}/rpc?sponsorApiKey=${apiKey}`, gasOptions) - .then((response) => response.json()) - .then((response) => (responseValues = response)) - .catch((err) => console.error(err)) - console.log('\nReceived Gas Data from Gelato.') - - let rvGas - if (responseValues && responseValues['result']) { - rvGas = responseValues['result'] as gasData - } - - return rvGas -} - -export const submitUserOperationGelato = async ( - entryPointAddress: `0x${string}`, - sponsoredUserOperation: UserOperation, - chain: string, - chainID: number, - apiKey: string, -) => { - const options = { - method: 'POST', - headers: { accept: 'application/json', 'content-type': 'application/json' }, - body: JSON.stringify({ - id: 0, - jsonrpc: '2.0', - method: 'eth_sendUserOperation', - params: [ - { - sender: sponsoredUserOperation.sender, - nonce: '0x' + sponsoredUserOperation.nonce.toString(16), - initCode: sponsoredUserOperation.initCode, - callData: sponsoredUserOperation.callData, - signature: sponsoredUserOperation.signature, - paymasterAndData: sponsoredUserOperation.paymasterAndData, - callGasLimit: sponsoredUserOperation.callGasLimit, - verificationGasLimit: sponsoredUserOperation.verificationGasLimit, - preVerificationGas: sponsoredUserOperation.preVerificationGas, - maxFeePerGas: '0x' + sponsoredUserOperation.maxFeePerGas.toString(16), - maxPriorityFeePerGas: '0x' + sponsoredUserOperation.maxPriorityFeePerGas.toString(16), - }, - entryPointAddress, - ], - }), - } - - let responseValues: any - await fetch(`https://api.gelato.digital//bundlers/${chainID}/rpc?sponsorApiKey=${apiKey}`, options) - .then((response) => response.json()) - .then((response) => (responseValues = response)) - .catch((err) => console.error(err)) - - if (responseValues && responseValues['result']) { - console.log('\nUserOperation submitted.\n\nGelato Relay Task ID:', responseValues['result']) - console.log('Gelato Relay Task Link: https://api.gelato.digital/tasks/status/' + responseValues['result']) - - const hashOptions = { - method: 'POST', - headers: { - accept: 'application/json', - 'content-type': 'application/json', - }, - body: JSON.stringify({ - id: 0, - jsonrpc: '2.0', - method: 'eth_getUserOperationReceipt', - params: [responseValues['result']], - }), - } - - let runOnce = true - - while (responseValues['result'] == null || runOnce) { - await setTimeout(25000) - await fetch(`https://api.gelato.digital//bundlers/${chainID}/rpc?sponsorApiKey=${apiKey}`, hashOptions) - .then((response) => response.json()) - .then((response) => (responseValues = response)) - .catch((err) => console.error(err)) - runOnce = false - } - - if (responseValues['result'] && responseValues['result']['receipt']['transactionHash']) { - const rvEntryPoint = responseValues['result']['logs'][responseValues['result']['logs'].length - 2]['address'] - - if (rvEntryPoint == entryPointAddress) { - const userOpHash = responseValues['result']['logs'][responseValues['result']['logs'].length - 2]['topics'][1] - console.log('\nUser OP Hash: ' + userOpHash + '\nUserOp Link: https://jiffyscan.xyz/userOpHash/' + userOpHash + '?network=' + chain) - } - console.log('\nTransaction Link: https://' + chain + '.etherscan.io/tx/' + responseValues['result']['receipt']['transactionHash']) - const actualGasUsed = fromHex(responseValues['result']['actualGasUsed'], 'number') - const gasUsed = fromHex(responseValues['result']['receipt']['gasUsed'], 'number') - console.log(`\nGas Used (Account or Paymaster): ${actualGasUsed}`) - console.log(`Gas Used (Transaction): ${gasUsed}\n`) - } else { - console.log('\n' + responseValues['error']) - } - } else { - if (responseValues && responseValues['message']) { - console.log('\n' + responseValues['message']) - } - } -} diff --git a/package-lock.json b/package-lock.json index 0b0fe11fb..a3b7a5529 100644 --- a/package-lock.json +++ b/package-lock.json @@ -43,6 +43,7 @@ "viem": "2.7.9" }, "devDependencies": { + "@gelatonetwork/relay-sdk": "^5.5.6", "@types/node": "20.11.18", "tsx": "4.7.1", "typescript": "^5.3.3" @@ -2318,6 +2319,131 @@ "node": ">=14" } }, + "node_modules/@gelatonetwork/relay-sdk": { + "version": "5.5.6", + "resolved": "https://registry.npmjs.org/@gelatonetwork/relay-sdk/-/relay-sdk-5.5.6.tgz", + "integrity": "sha512-wGUbBhz9iJUhagzW/+rik5nQ+X6YVDMQcH0PWxvSNB4Swu/EnPjqTVOJzf3CnS+pvCMNLChOEUw4caRbZXyq0w==", + "dev": true, + "dependencies": { + "axios": "0.27.2", + "ethers": "6.7.0", + "isomorphic-ws": "^5.0.0", + "ws": "^8.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@gelatonetwork/relay-sdk/node_modules/@adraffy/ens-normalize": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.9.2.tgz", + "integrity": "sha512-0h+FrQDqe2Wn+IIGFkTCd4aAwTJ+7834Ek1COohCyV26AXhwQ7WQaz+4F/nLOeVl/3BtWHOHLPsq46V8YB46Eg==", + "dev": true + }, + "node_modules/@gelatonetwork/relay-sdk/node_modules/@noble/hashes": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.2.tgz", + "integrity": "sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, + "node_modules/@gelatonetwork/relay-sdk/node_modules/@types/node": { + "version": "18.15.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", + "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==", + "dev": true + }, + "node_modules/@gelatonetwork/relay-sdk/node_modules/axios": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" + } + }, + "node_modules/@gelatonetwork/relay-sdk/node_modules/ethers": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.7.0.tgz", + "integrity": "sha512-pxt5hK82RNwcTX2gOZP81t6qVPVspnkpeivwEgQuK9XUvbNtghBnT8GNIb/gPh+WnVSfi8cXC9XlfT8sqc6D6w==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/ethers-io/" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@adraffy/ens-normalize": "1.9.2", + "@noble/hashes": "1.1.2", + "@noble/secp256k1": "1.7.1", + "@types/node": "18.15.13", + "aes-js": "4.0.0-beta.5", + "tslib": "2.4.0", + "ws": "8.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@gelatonetwork/relay-sdk/node_modules/ethers/node_modules/ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "dev": true, + "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/@gelatonetwork/relay-sdk/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@gelatonetwork/relay-sdk/node_modules/ws": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "dev": true, + "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/@hexagon/base64": { "version": "1.1.28", "dev": true, @@ -9919,6 +10045,15 @@ "unfetch": "^4.2.0" } }, + "node_modules/isomorphic-ws": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz", + "integrity": "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==", + "dev": true, + "peerDependencies": { + "ws": "*" + } + }, "node_modules/isows": { "version": "1.0.3", "funding": [ @@ -15009,5 +15144,13060 @@ } } } + }, + "dependencies": { + "@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true + }, + "@account-abstraction/contracts": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@account-abstraction/contracts/-/contracts-0.7.0.tgz", + "integrity": "sha512-Bt/66ilu3u8I9+vFZ9fTd+cWs55fdb9J5YKfrhsrFafH1drkzwuCSL/xEot1GGyXXNJLQuXbMRztQPyelNbY1A==", + "dev": true, + "requires": { + "@openzeppelin/contracts": "^5.0.0", + "@uniswap/v3-periphery": "^1.4.3" + } + }, + "@adraffy/ens-normalize": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.0.tgz", + "integrity": "sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==" + }, + "@alchemy/aa-accounts": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@alchemy/aa-accounts/-/aa-accounts-2.4.0.tgz", + "integrity": "sha512-+RGBzhkeh6nXFOV02Kb6vg5B6thWzNDes2jPTG39vq3YkF6Q97jAEMtM9e2kq/iP9cJlHHk6duSOD/hcLUnKfg==", + "requires": { + "@alchemy/aa-core": "^2.3.1", + "viem": "^1.21.4" + } + }, + "@alchemy/aa-alchemy": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@alchemy/aa-alchemy/-/aa-alchemy-2.4.0.tgz", + "integrity": "sha512-SuvU1/ivQ4e+M6qq3N/m6dlZ8i84LmmEnCCL4HTXgyqbok6ITNOrIWfeK3SmocADR0WQ+FPnEAB4Dp8oeQjKdA==", + "requires": { + "@alchemy/aa-accounts": "^2.4.0", + "@alchemy/aa-core": "^2.3.1", + "alchemy-sdk": "^3.0.0", + "viem": "^1.21.4" + } + }, + "@alchemy/aa-core": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@alchemy/aa-core/-/aa-core-2.3.1.tgz", + "integrity": "sha512-iADsVGbhm4rbvFwcauKwD8u5AbzoE+8d8iQpagGHkPDpcNVzFP/FHv48jvdg9M52kf4h2XGdrQviT02bdJFTKw==", + "requires": { + "abitype": "^0.8.3", + "eventemitter3": "^5.0.1", + "viem": "^1.21.4", + "zod": "^3.22.4" + } + }, + "@babel/code-frame": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" + } + }, + "@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==", + "dev": true + }, + "@babel/highlight": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz", + "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==" + }, + "@cbor-extract/cbor-extract-darwin-arm64": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-darwin-arm64/-/cbor-extract-darwin-arm64-2.2.0.tgz", + "integrity": "sha512-P7swiOAdF7aSi0H+tHtHtr6zrpF3aAq/W9FXx5HektRvLTM2O89xCyXF3pk7pLc7QpaY7AoaE8UowVf9QBdh3w==", + "dev": true, + "optional": true + }, + "@cbor-extract/cbor-extract-darwin-x64": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-darwin-x64/-/cbor-extract-darwin-x64-2.2.0.tgz", + "integrity": "sha512-1liF6fgowph0JxBbYnAS7ZlqNYLf000Qnj4KjqPNW4GViKrEql2MgZnAsExhY9LSy8dnvA4C0qHEBgPrll0z0w==", + "dev": true, + "optional": true + }, + "@cbor-extract/cbor-extract-linux-arm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-arm/-/cbor-extract-linux-arm-2.2.0.tgz", + "integrity": "sha512-QeBcBXk964zOytiedMPQNZr7sg0TNavZeuUCD6ON4vEOU/25+pLhNN6EDIKJ9VLTKaZ7K7EaAriyYQ1NQ05s/Q==", + "dev": true, + "optional": true + }, + "@cbor-extract/cbor-extract-linux-arm64": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-arm64/-/cbor-extract-linux-arm64-2.2.0.tgz", + "integrity": "sha512-rQvhNmDuhjTVXSPFLolmQ47/ydGOFXtbR7+wgkSY0bdOxCFept1hvg59uiLPT2fVDuJFuEy16EImo5tE2x3RsQ==", + "dev": true, + "optional": true + }, + "@cbor-extract/cbor-extract-linux-x64": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-x64/-/cbor-extract-linux-x64-2.2.0.tgz", + "integrity": "sha512-cWLAWtT3kNLHSvP4RKDzSTX9o0wvQEEAj4SKvhWuOVZxiDAeQazr9A+PSiRILK1VYMLeDml89ohxCnUNQNQNCw==", + "dev": true, + "optional": true + }, + "@cbor-extract/cbor-extract-win32-x64": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-win32-x64/-/cbor-extract-win32-x64-2.2.0.tgz", + "integrity": "sha512-l2M+Z8DO2vbvADOBNLbbh9y5ST1RY5sqkWOg/58GkUPBYou/cuNZ68SGQ644f1CvZ8kcOxyZtw06+dxWHIoN/w==", + "dev": true, + "optional": true + }, + "@coinbase/wallet-sdk": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@coinbase/wallet-sdk/-/wallet-sdk-3.9.1.tgz", + "integrity": "sha512-cGUE8wm1/cMI8irRMVOqbFWYcnNugqCtuy2lnnHfgloBg+GRLs9RsrkOUDMdv/StfUeeKhCDyYudsXXvcL1xIA==", + "requires": { + "bn.js": "^5.2.1", + "buffer": "^6.0.3", + "clsx": "^1.2.1", + "eth-block-tracker": "^7.1.0", + "eth-json-rpc-filters": "^6.0.0", + "eventemitter3": "^5.0.1", + "keccak": "^3.0.3", + "preact": "^10.16.0", + "sha.js": "^2.4.11" + } + }, + "@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==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "0.3.9" + } + }, + "@esbuild/aix-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", + "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", + "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", + "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "dev": true, + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", + "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", + "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", + "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", + "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", + "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", + "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", + "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", + "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", + "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", + "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", + "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", + "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", + "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", + "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", + "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", + "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "dev": true, + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", + "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "dev": true, + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", + "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "dev": true, + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", + "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "dev": true, + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", + "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "dev": true, + "optional": true + }, + "@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, + "requires": { + "eslint-visitor-keys": "^3.3.0" + } + }, + "@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true + }, + "@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "requires": { + "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" + } + }, + "@eslint/js": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", + "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", + "dev": true + }, + "@ethereumjs/common": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-3.2.0.tgz", + "integrity": "sha512-pksvzI0VyLgmuEF2FA/JR/4/y6hcPq8OUail3/AvycBaW1d5VSauOZzqGvJ3RTmR4MU35lWE8KseKOsEhrFRBA==", + "requires": { + "@ethereumjs/util": "^8.1.0", + "crc-32": "^1.2.0" + } + }, + "@ethereumjs/rlp": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz", + "integrity": "sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==" + }, + "@ethereumjs/tx": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-4.2.0.tgz", + "integrity": "sha512-1nc6VO4jtFd172BbSnTnDQVr9IYBFl1y4xPzZdtkrkKIncBCkdbgfdRV+MiTkJYAtTxvV12GRZLqBFT1PNK6Yw==", + "requires": { + "@ethereumjs/common": "^3.2.0", + "@ethereumjs/rlp": "^4.0.1", + "@ethereumjs/util": "^8.1.0", + "ethereum-cryptography": "^2.0.0" + }, + "dependencies": { + "@noble/hashes": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", + "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==" + }, + "@scure/bip32": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.3.tgz", + "integrity": "sha512-LJaN3HwRbfQK0X1xFSi0Q9amqOgzQnnDngIt+ZlsBC3Bm7/nE7K0kwshZHyaru79yIVRv/e1mQAjZyuZG6jOFQ==", + "requires": { + "@noble/curves": "~1.3.0", + "@noble/hashes": "~1.3.2", + "@scure/base": "~1.1.4" + } + }, + "@scure/bip39": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.2.tgz", + "integrity": "sha512-HYf9TUXG80beW+hGAt3TRM8wU6pQoYur9iNypTROm42dorCGmLnFe3eWjz3gOq6G62H2WRh0FCzAR1PI+29zIA==", + "requires": { + "@noble/hashes": "~1.3.2", + "@scure/base": "~1.1.4" + } + }, + "ethereum-cryptography": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.1.3.tgz", + "integrity": "sha512-BlwbIL7/P45W8FGW2r7LGuvoEZ+7PWsniMvQ4p5s2xCyw9tmaDlpfsN9HjAucbF+t/qpVHwZUisgfK24TCW8aA==", + "requires": { + "@noble/curves": "1.3.0", + "@noble/hashes": "1.3.3", + "@scure/bip32": "1.3.3", + "@scure/bip39": "1.2.2" + } + } + } + }, + "@ethereumjs/util": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/util/-/util-8.1.0.tgz", + "integrity": "sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==", + "requires": { + "@ethereumjs/rlp": "^4.0.1", + "ethereum-cryptography": "^2.0.0", + "micro-ftch": "^0.3.1" + }, + "dependencies": { + "@noble/curves": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.1.0.tgz", + "integrity": "sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==", + "requires": { + "@noble/hashes": "1.3.1" + } + }, + "@noble/hashes": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", + "integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==" + }, + "@scure/bip32": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.1.tgz", + "integrity": "sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A==", + "requires": { + "@noble/curves": "~1.1.0", + "@noble/hashes": "~1.3.1", + "@scure/base": "~1.1.0" + } + }, + "@scure/bip39": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.1.tgz", + "integrity": "sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==", + "requires": { + "@noble/hashes": "~1.3.0", + "@scure/base": "~1.1.0" + } + }, + "ethereum-cryptography": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.1.2.tgz", + "integrity": "sha512-Z5Ba0T0ImZ8fqXrJbpHcbpAvIswRte2wGNR/KePnu8GbbvgJ47lMxT/ZZPG6i9Jaht4azPDop4HaM00J0J59ug==", + "requires": { + "@noble/curves": "1.1.0", + "@noble/hashes": "1.3.1", + "@scure/bip32": "1.3.1", + "@scure/bip39": "1.2.1" + } + } + } + }, + "@ethersproject/abi": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", + "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", + "requires": { + "@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" + } + }, + "@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==", + "requires": { + "@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" + } + }, + "@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==", + "requires": { + "@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" + } + }, + "@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "requires": { + "@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" + } + }, + "@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==", + "requires": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "@ethersproject/basex": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", + "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "@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==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "requires": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "@ethersproject/contracts": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.4.0.tgz", + "integrity": "sha512-hkO3L3IhS1Z3ZtHtaAG/T87nQ7KiPV+/qnvutag35I0IkiQ8G3ZpCQ9NNOpSCzn4pWSW4CfzmtE02FcqnLI+hw==", + "peer": true, + "requires": { + "@ethersproject/abi": "^5.4.0", + "@ethersproject/abstract-provider": "^5.4.0", + "@ethersproject/abstract-signer": "^5.4.0", + "@ethersproject/address": "^5.4.0", + "@ethersproject/bignumber": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/constants": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "@ethersproject/transactions": "^5.4.0" + } + }, + "@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "requires": { + "@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" + } + }, + "@ethersproject/hdnode": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.4.0.tgz", + "integrity": "sha512-pKxdS0KAaeVGfZPp1KOiDLB0jba11tG6OP1u11QnYfb7pXn6IZx0xceqWRr6ygke8+Kw74IpOoSi7/DwANhy8Q==", + "peer": true, + "requires": { + "@ethersproject/abstract-signer": "^5.4.0", + "@ethersproject/basex": "^5.4.0", + "@ethersproject/bignumber": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/pbkdf2": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "@ethersproject/sha2": "^5.4.0", + "@ethersproject/signing-key": "^5.4.0", + "@ethersproject/strings": "^5.4.0", + "@ethersproject/transactions": "^5.4.0", + "@ethersproject/wordlists": "^5.4.0" + } + }, + "@ethersproject/json-wallets": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.4.0.tgz", + "integrity": "sha512-igWcu3fx4aiczrzEHwG1xJZo9l1cFfQOWzTqwRw/xcvxTk58q4f9M7cjh51EKphMHvrJtcezJ1gf1q1AUOfEQQ==", + "peer": true, + "requires": { + "@ethersproject/abstract-signer": "^5.4.0", + "@ethersproject/address": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/hdnode": "^5.4.0", + "@ethersproject/keccak256": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/pbkdf2": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "@ethersproject/random": "^5.4.0", + "@ethersproject/strings": "^5.4.0", + "@ethersproject/transactions": "^5.4.0", + "aes-js": "3.0.0", + "scrypt-js": "3.0.1" + }, + "dependencies": { + "aes-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", + "peer": true + } + } + }, + "@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==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/pbkdf2": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.4.0.tgz", + "integrity": "sha512-x94aIv6tiA04g6BnazZSLoRXqyusawRyZWlUhKip2jvoLpzJuLb//KtMM6PEovE47pMbW+Qe1uw+68ameJjB7g==", + "peer": true, + "requires": { + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/sha2": "^5.4.0" + } + }, + "@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/providers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", + "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", + "requires": { + "@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" + }, + "dependencies": { + "ws": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "requires": {} + } + } + }, + "@ethersproject/random": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", + "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@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==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" + } + }, + "@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==", + "requires": { + "@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" + } + }, + "@ethersproject/solidity": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.4.0.tgz", + "integrity": "sha512-XFQTZ7wFSHOhHcV1DpcWj7VXECEiSrBuv7JErJvB9Uo+KfCdc3QtUZV+Vjh/AAaYgezUEKbCtE6Khjm44seevQ==", + "peer": true, + "requires": { + "@ethersproject/bignumber": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/keccak256": "^5.4.0", + "@ethersproject/sha2": "^5.4.0", + "@ethersproject/strings": "^5.4.0" + } + }, + "@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "requires": { + "@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" + } + }, + "@ethersproject/units": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.4.0.tgz", + "integrity": "sha512-Z88krX40KCp+JqPCP5oPv5p750g+uU6gopDYRTBGcDvOASh6qhiEYCRatuM/suC4S2XW9Zz90QI35MfSrTIaFg==", + "peer": true, + "requires": { + "@ethersproject/bignumber": "^5.4.0", + "@ethersproject/constants": "^5.4.0", + "@ethersproject/logger": "^5.4.0" + } + }, + "@ethersproject/wallet": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.4.0.tgz", + "integrity": "sha512-wU29majLjM6AjCjpat21mPPviG+EpK7wY1+jzKD0fg3ui5fgedf2zEu1RDgpfIMsfn8fJHJuzM4zXZ2+hSHaSQ==", + "peer": true, + "requires": { + "@ethersproject/abstract-provider": "^5.4.0", + "@ethersproject/abstract-signer": "^5.4.0", + "@ethersproject/address": "^5.4.0", + "@ethersproject/bignumber": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/hash": "^5.4.0", + "@ethersproject/hdnode": "^5.4.0", + "@ethersproject/json-wallets": "^5.4.0", + "@ethersproject/keccak256": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "@ethersproject/random": "^5.4.0", + "@ethersproject/signing-key": "^5.4.0", + "@ethersproject/transactions": "^5.4.0", + "@ethersproject/wordlists": "^5.4.0" + } + }, + "@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "requires": { + "@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" + } + }, + "@ethersproject/wordlists": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.4.0.tgz", + "integrity": "sha512-FemEkf6a+EBKEPxlzeVgUaVSodU7G0Na89jqKjmWMlDB0tomoU8RlEMgUvXyqtrg8N4cwpLh8nyRnm1Nay1isA==", + "peer": true, + "requires": { + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/hash": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "@ethersproject/strings": "^5.4.0" + } + }, + "@fastify/busboy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.0.tgz", + "integrity": "sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==", + "dev": true + }, + "@gelatonetwork/relay-sdk": { + "version": "5.5.6", + "resolved": "https://registry.npmjs.org/@gelatonetwork/relay-sdk/-/relay-sdk-5.5.6.tgz", + "integrity": "sha512-wGUbBhz9iJUhagzW/+rik5nQ+X6YVDMQcH0PWxvSNB4Swu/EnPjqTVOJzf3CnS+pvCMNLChOEUw4caRbZXyq0w==", + "dev": true, + "requires": { + "axios": "0.27.2", + "ethers": "6.7.0", + "isomorphic-ws": "^5.0.0", + "ws": "^8.5.0" + }, + "dependencies": { + "@adraffy/ens-normalize": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.9.2.tgz", + "integrity": "sha512-0h+FrQDqe2Wn+IIGFkTCd4aAwTJ+7834Ek1COohCyV26AXhwQ7WQaz+4F/nLOeVl/3BtWHOHLPsq46V8YB46Eg==", + "dev": true + }, + "@noble/hashes": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.2.tgz", + "integrity": "sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA==", + "dev": true + }, + "@types/node": { + "version": "18.15.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", + "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==", + "dev": true + }, + "axios": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "dev": true, + "requires": { + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" + } + }, + "ethers": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.7.0.tgz", + "integrity": "sha512-pxt5hK82RNwcTX2gOZP81t6qVPVspnkpeivwEgQuK9XUvbNtghBnT8GNIb/gPh+WnVSfi8cXC9XlfT8sqc6D6w==", + "dev": true, + "requires": { + "@adraffy/ens-normalize": "1.9.2", + "@noble/hashes": "1.1.2", + "@noble/secp256k1": "1.7.1", + "@types/node": "18.15.13", + "aes-js": "4.0.0-beta.5", + "tslib": "2.4.0", + "ws": "8.5.0" + }, + "dependencies": { + "ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "dev": true, + "requires": {} + } + } + }, + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "ws": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "dev": true, + "requires": {} + } + } + }, + "@hexagon/base64": { + "version": "1.1.28", + "resolved": "https://registry.npmjs.org/@hexagon/base64/-/base64-1.1.28.tgz", + "integrity": "sha512-lhqDEAvWixy3bZ+UOYbPwUbBkwBq5C1LAJ/xPC8Oi+lL54oyakv/npbA0aU2hgCsx/1NUd4IBvV03+aUBWxerw==", + "dev": true + }, + "@humanwhocodes/config-array": { + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^2.0.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + } + }, + "@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 + }, + "@humanwhocodes/object-schema": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", + "dev": true + }, + "@ioredis/commands": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.2.0.tgz", + "integrity": "sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==" + }, + "@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, + "requires": { + "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" + }, + "dependencies": { + "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 + }, + "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 + }, + "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 + }, + "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, + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + }, + "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, + "requires": { + "ansi-regex": "^6.0.1" + } + }, + "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, + "requires": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + } + } + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@lit-labs/ssr-dom-shim": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.2.0.tgz", + "integrity": "sha512-yWJKmpGE6lUURKAaIltoPIE/wrbY3TEkqQt+X0m+7fQNnAv0keydnYvbiJFP1PnMhizmIWRWOG5KLhYyc/xl+g==" + }, + "@lit/reactive-element": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.6.3.tgz", + "integrity": "sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==", + "requires": { + "@lit-labs/ssr-dom-shim": "^1.0.0" + } + }, + "@metamask/eth-json-rpc-provider": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@metamask/eth-json-rpc-provider/-/eth-json-rpc-provider-1.0.1.tgz", + "integrity": "sha512-whiUMPlAOrVGmX8aKYVPvlKyG4CpQXiNNyt74vE1xb5sPvmx5oA7B/kOi/JdBvhGQq97U1/AVdXEdk2zkP8qyA==", + "requires": { + "@metamask/json-rpc-engine": "^7.0.0", + "@metamask/safe-event-emitter": "^3.0.0", + "@metamask/utils": "^5.0.1" + } + }, + "@metamask/eth-sig-util": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz", + "integrity": "sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==", + "dev": true, + "requires": { + "ethereumjs-abi": "^0.6.8", + "ethereumjs-util": "^6.2.1", + "ethjs-util": "^0.1.6", + "tweetnacl": "^1.0.3", + "tweetnacl-util": "^0.15.1" + } + }, + "@metamask/json-rpc-engine": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@metamask/json-rpc-engine/-/json-rpc-engine-7.3.2.tgz", + "integrity": "sha512-dVjBPlni4CoiBpESVqrxh6k4OR14w6GRXKSSXHFuITjuhALE42gNCkXTpL4cjNeOBUgTba3eGe5EI8cyc2QLRg==", + "requires": { + "@metamask/rpc-errors": "^6.1.0", + "@metamask/safe-event-emitter": "^3.0.0", + "@metamask/utils": "^8.3.0" + }, + "dependencies": { + "@metamask/utils": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-8.3.0.tgz", + "integrity": "sha512-WFVcMPEkKKRCJ8DDkZUTVbLlpwgRn98F4VM/WzN89HM8PmHMnCyk/oG0AmK/seOxtik7uC7Bbi2YBC5Z5XB2zw==", + "requires": { + "@ethereumjs/tx": "^4.2.0", + "@noble/hashes": "^1.3.1", + "@scure/base": "^1.1.3", + "@types/debug": "^4.1.7", + "debug": "^4.3.4", + "pony-cause": "^2.1.10", + "semver": "^7.5.4", + "superstruct": "^1.0.3" + } + }, + "@noble/hashes": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", + "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==" + }, + "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==", + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@metamask/rpc-errors": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@metamask/rpc-errors/-/rpc-errors-6.1.0.tgz", + "integrity": "sha512-JQElKxai26FpDyRKO/yH732wI+BV90i1u6pOuDOpdADSbppB2g1pPh3AGST1zkZqEE9eIKIUw8UdBQ4rp3VTSg==", + "requires": { + "@metamask/utils": "^8.1.0", + "fast-safe-stringify": "^2.0.6" + }, + "dependencies": { + "@metamask/utils": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-8.3.0.tgz", + "integrity": "sha512-WFVcMPEkKKRCJ8DDkZUTVbLlpwgRn98F4VM/WzN89HM8PmHMnCyk/oG0AmK/seOxtik7uC7Bbi2YBC5Z5XB2zw==", + "requires": { + "@ethereumjs/tx": "^4.2.0", + "@noble/hashes": "^1.3.1", + "@scure/base": "^1.1.3", + "@types/debug": "^4.1.7", + "debug": "^4.3.4", + "pony-cause": "^2.1.10", + "semver": "^7.5.4", + "superstruct": "^1.0.3" + } + }, + "@noble/hashes": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", + "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==" + }, + "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==", + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@metamask/safe-event-emitter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@metamask/safe-event-emitter/-/safe-event-emitter-3.0.0.tgz", + "integrity": "sha512-j6Z47VOmVyGMlnKXZmL0fyvWfEYtKWCA9yGZkU3FCsGZUT5lHGmvaV9JA5F2Y+010y7+ROtR3WMXIkvl/nVzqQ==" + }, + "@metamask/utils": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-5.0.2.tgz", + "integrity": "sha512-yfmE79bRQtnMzarnKfX7AEJBwFTxvTyw3nBQlu/5rmGXrjAeAMltoGxO62TFurxrQAFMNa/fEjIHNvungZp0+g==", + "requires": { + "@ethereumjs/tx": "^4.1.2", + "@types/debug": "^4.1.7", + "debug": "^4.3.4", + "semver": "^7.3.8", + "superstruct": "^1.0.3" + }, + "dependencies": { + "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==", + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@motionone/animation": { + "version": "10.17.0", + "resolved": "https://registry.npmjs.org/@motionone/animation/-/animation-10.17.0.tgz", + "integrity": "sha512-ANfIN9+iq1kGgsZxs+Nz96uiNcPLGTXwfNo2Xz/fcJXniPYpaz/Uyrfa+7I5BPLxCP82sh7quVDudf1GABqHbg==", + "requires": { + "@motionone/easing": "^10.17.0", + "@motionone/types": "^10.17.0", + "@motionone/utils": "^10.17.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + } + } + }, + "@motionone/dom": { + "version": "10.17.0", + "resolved": "https://registry.npmjs.org/@motionone/dom/-/dom-10.17.0.tgz", + "integrity": "sha512-cMm33swRlCX/qOPHWGbIlCl0K9Uwi6X5RiL8Ma6OrlJ/TP7Q+Np5GE4xcZkFptysFjMTi4zcZzpnNQGQ5D6M0Q==", + "requires": { + "@motionone/animation": "^10.17.0", + "@motionone/generators": "^10.17.0", + "@motionone/types": "^10.17.0", + "@motionone/utils": "^10.17.0", + "hey-listen": "^1.0.8", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + } + } + }, + "@motionone/easing": { + "version": "10.17.0", + "resolved": "https://registry.npmjs.org/@motionone/easing/-/easing-10.17.0.tgz", + "integrity": "sha512-Bxe2wSuLu/qxqW4rBFS5m9tMLOw+QBh8v5A7Z5k4Ul4sTj5jAOfZG5R0bn5ywmk+Fs92Ij1feZ5pmC4TeXA8Tg==", + "requires": { + "@motionone/utils": "^10.17.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + } + } + }, + "@motionone/generators": { + "version": "10.17.0", + "resolved": "https://registry.npmjs.org/@motionone/generators/-/generators-10.17.0.tgz", + "integrity": "sha512-T6Uo5bDHrZWhIfxG/2Aut7qyWQyJIWehk6OB4qNvr/jwA/SRmixwbd7SOrxZi1z5rH3LIeFFBKK1xHnSbGPZSQ==", + "requires": { + "@motionone/types": "^10.17.0", + "@motionone/utils": "^10.17.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + } + } + }, + "@motionone/svelte": { + "version": "10.16.4", + "resolved": "https://registry.npmjs.org/@motionone/svelte/-/svelte-10.16.4.tgz", + "integrity": "sha512-zRVqk20lD1xqe+yEDZhMYgftsuHc25+9JSo+r0a0OWUJFocjSV9D/+UGhX4xgJsuwB9acPzXLr20w40VnY2PQA==", + "requires": { + "@motionone/dom": "^10.16.4", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + } + } + }, + "@motionone/types": { + "version": "10.17.0", + "resolved": "https://registry.npmjs.org/@motionone/types/-/types-10.17.0.tgz", + "integrity": "sha512-EgeeqOZVdRUTEHq95Z3t8Rsirc7chN5xFAPMYFobx8TPubkEfRSm5xihmMUkbaR2ErKJTUw3347QDPTHIW12IA==" + }, + "@motionone/utils": { + "version": "10.17.0", + "resolved": "https://registry.npmjs.org/@motionone/utils/-/utils-10.17.0.tgz", + "integrity": "sha512-bGwrki4896apMWIj9yp5rAS2m0xyhxblg6gTB/leWDPt+pb410W8lYWsxyurX+DH+gO1zsQsfx2su/c1/LtTpg==", + "requires": { + "@motionone/types": "^10.17.0", + "hey-listen": "^1.0.8", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + } + } + }, + "@motionone/vue": { + "version": "10.16.4", + "resolved": "https://registry.npmjs.org/@motionone/vue/-/vue-10.16.4.tgz", + "integrity": "sha512-z10PF9JV6SbjFq+/rYabM+8CVlMokgl8RFGvieSGNTmrkQanfHn+15XBrhG3BgUfvmTeSeyShfOHpG0i9zEdcg==", + "requires": { + "@motionone/dom": "^10.16.4", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + } + } + }, + "@noble/curves": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.3.0.tgz", + "integrity": "sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==", + "requires": { + "@noble/hashes": "1.3.3" + }, + "dependencies": { + "@noble/hashes": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", + "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==" + } + } + }, + "@noble/hashes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", + "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", + "dev": true + }, + "@noble/secp256k1": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz", + "integrity": "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==", + "dev": true + }, + "@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, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@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 + }, + "@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, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@nomicfoundation/ethereumjs-block": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-5.0.4.tgz", + "integrity": "sha512-AcyacJ9eX/uPEvqsPiB+WO1ymE+kyH48qGGiGV+YTojdtas8itUTW5dehDSOXEEItWGbbzEJ4PRqnQZlWaPvDw==", + "dev": true, + "requires": { + "@nomicfoundation/ethereumjs-common": "4.0.4", + "@nomicfoundation/ethereumjs-rlp": "5.0.4", + "@nomicfoundation/ethereumjs-trie": "6.0.4", + "@nomicfoundation/ethereumjs-tx": "5.0.4", + "@nomicfoundation/ethereumjs-util": "9.0.4", + "ethereum-cryptography": "0.1.3" + }, + "dependencies": { + "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==", + "dev": true, + "requires": { + "@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" + } + } + } + }, + "@nomicfoundation/ethereumjs-blockchain": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-7.0.4.tgz", + "integrity": "sha512-jYsd/kwzbmpnxx86tXsYV8wZ5xGvFL+7/P0c6OlzpClHsbFzeF41KrYA9scON8Rg6bZu3ZTv6JOAgj3t7USUfg==", + "dev": true, + "requires": { + "@nomicfoundation/ethereumjs-block": "5.0.4", + "@nomicfoundation/ethereumjs-common": "4.0.4", + "@nomicfoundation/ethereumjs-ethash": "3.0.4", + "@nomicfoundation/ethereumjs-rlp": "5.0.4", + "@nomicfoundation/ethereumjs-trie": "6.0.4", + "@nomicfoundation/ethereumjs-tx": "5.0.4", + "@nomicfoundation/ethereumjs-util": "9.0.4", + "debug": "^4.3.3", + "ethereum-cryptography": "0.1.3", + "lru-cache": "^10.0.0" + }, + "dependencies": { + "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==", + "dev": true, + "requires": { + "@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" + } + } + } + }, + "@nomicfoundation/ethereumjs-common": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.4.tgz", + "integrity": "sha512-9Rgb658lcWsjiicr5GzNCjI1llow/7r0k50dLL95OJ+6iZJcVbi15r3Y0xh2cIO+zgX0WIHcbzIu6FeQf9KPrg==", + "dev": true, + "requires": { + "@nomicfoundation/ethereumjs-util": "9.0.4" + } + }, + "@nomicfoundation/ethereumjs-ethash": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-3.0.4.tgz", + "integrity": "sha512-xvIrwIMl9sSaiYKRem68+O7vYdj7Q2XWv5P7JXiIkn83918QzWHvqbswTRsH7+r6X1UEvdsURRnZbvZszEjAaQ==", + "dev": true, + "requires": { + "@nomicfoundation/ethereumjs-block": "5.0.4", + "@nomicfoundation/ethereumjs-rlp": "5.0.4", + "@nomicfoundation/ethereumjs-util": "9.0.4", + "bigint-crypto-utils": "^3.2.2", + "ethereum-cryptography": "0.1.3" + }, + "dependencies": { + "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==", + "dev": true, + "requires": { + "@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" + } + } + } + }, + "@nomicfoundation/ethereumjs-evm": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-2.0.4.tgz", + "integrity": "sha512-lTyZZi1KpeMHzaO6cSVisR2tjiTTedjo7PcmhI/+GNFo9BmyY6QYzGeSti0sFttmjbEMioHgXxl5yrLNRg6+1w==", + "dev": true, + "requires": { + "@nomicfoundation/ethereumjs-common": "4.0.4", + "@nomicfoundation/ethereumjs-statemanager": "2.0.4", + "@nomicfoundation/ethereumjs-tx": "5.0.4", + "@nomicfoundation/ethereumjs-util": "9.0.4", + "@types/debug": "^4.1.9", + "debug": "^4.3.3", + "ethereum-cryptography": "0.1.3", + "rustbn-wasm": "^0.2.0" + }, + "dependencies": { + "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==", + "dev": true, + "requires": { + "@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" + } + } + } + }, + "@nomicfoundation/ethereumjs-rlp": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.4.tgz", + "integrity": "sha512-8H1S3s8F6QueOc/X92SdrA4RDenpiAEqMg5vJH99kcQaCy/a3Q6fgseo75mgWlbanGJXSlAPtnCeG9jvfTYXlw==", + "dev": true + }, + "@nomicfoundation/ethereumjs-statemanager": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-2.0.4.tgz", + "integrity": "sha512-HPDjeFrxw6llEi+BzqXkZ+KkvFnTOPczuHBtk21hRlDiuKuZz32dPzlhpRsDBGV1b5JTmRDUVqCS1lp3Gghw4Q==", + "dev": true, + "requires": { + "@nomicfoundation/ethereumjs-common": "4.0.4", + "@nomicfoundation/ethereumjs-rlp": "5.0.4", + "@nomicfoundation/ethereumjs-trie": "6.0.4", + "@nomicfoundation/ethereumjs-util": "9.0.4", + "debug": "^4.3.3", + "ethereum-cryptography": "0.1.3", + "js-sdsl": "^4.1.4", + "lru-cache": "^10.0.0" + }, + "dependencies": { + "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==", + "dev": true, + "requires": { + "@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" + } + } + } + }, + "@nomicfoundation/ethereumjs-trie": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-6.0.4.tgz", + "integrity": "sha512-3nSwQiFMvr2VFe/aZUyinuohYvtytUqZCUCvIWcPJ/BwJH6oQdZRB42aNFBJ/8nAh2s3OcroWpBLskzW01mFKA==", + "dev": true, + "requires": { + "@nomicfoundation/ethereumjs-rlp": "5.0.4", + "@nomicfoundation/ethereumjs-util": "9.0.4", + "@types/readable-stream": "^2.3.13", + "ethereum-cryptography": "0.1.3", + "lru-cache": "^10.0.0", + "readable-stream": "^3.6.0" + }, + "dependencies": { + "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==", + "dev": true, + "requires": { + "@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" + } + } + } + }, + "@nomicfoundation/ethereumjs-tx": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.4.tgz", + "integrity": "sha512-Xjv8wAKJGMrP1f0n2PeyfFCCojHd7iS3s/Ab7qzF1S64kxZ8Z22LCMynArYsVqiFx6rzYy548HNVEyI+AYN/kw==", + "dev": true, + "requires": { + "@nomicfoundation/ethereumjs-common": "4.0.4", + "@nomicfoundation/ethereumjs-rlp": "5.0.4", + "@nomicfoundation/ethereumjs-util": "9.0.4", + "ethereum-cryptography": "0.1.3" + }, + "dependencies": { + "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==", + "dev": true, + "requires": { + "@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" + } + } + } + }, + "@nomicfoundation/ethereumjs-util": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.4.tgz", + "integrity": "sha512-sLOzjnSrlx9Bb9EFNtHzK/FJFsfg2re6bsGqinFinH1gCqVfz9YYlXiMWwDM4C/L4ywuHFCYwfKTVr/QHQcU0Q==", + "dev": true, + "requires": { + "@nomicfoundation/ethereumjs-rlp": "5.0.4", + "ethereum-cryptography": "0.1.3" + }, + "dependencies": { + "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==", + "dev": true, + "requires": { + "@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" + } + } + } + }, + "@nomicfoundation/ethereumjs-verkle": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-verkle/-/ethereumjs-verkle-0.0.2.tgz", + "integrity": "sha512-bjnfZElpYGK/XuuVRmLS3yDvr+cDs85D9oonZ0YUa5A3lgFgokWMp76zXrxX2jVQ0BfHaw12y860n1+iOi6yFQ==", + "dev": true, + "requires": { + "@nomicfoundation/ethereumjs-rlp": "5.0.4", + "@nomicfoundation/ethereumjs-util": "9.0.4", + "lru-cache": "^10.0.0", + "rust-verkle-wasm": "^0.0.1" + } + }, + "@nomicfoundation/ethereumjs-vm": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-7.0.4.tgz", + "integrity": "sha512-gsA4IhmtWHI4BofKy3kio9W+dqZQs5Ji5mLjLYxHCkat+JQBUt5szjRKra2F9nGDJ2XcI/wWb0YWUFNgln4zRQ==", + "dev": true, + "requires": { + "@nomicfoundation/ethereumjs-block": "5.0.4", + "@nomicfoundation/ethereumjs-blockchain": "7.0.4", + "@nomicfoundation/ethereumjs-common": "4.0.4", + "@nomicfoundation/ethereumjs-evm": "2.0.4", + "@nomicfoundation/ethereumjs-rlp": "5.0.4", + "@nomicfoundation/ethereumjs-statemanager": "2.0.4", + "@nomicfoundation/ethereumjs-trie": "6.0.4", + "@nomicfoundation/ethereumjs-tx": "5.0.4", + "@nomicfoundation/ethereumjs-util": "9.0.4", + "debug": "^4.3.3", + "ethereum-cryptography": "0.1.3" + }, + "dependencies": { + "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==", + "dev": true, + "requires": { + "@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" + } + } + } + }, + "@nomicfoundation/hardhat-network-helpers": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-network-helpers/-/hardhat-network-helpers-1.0.10.tgz", + "integrity": "sha512-R35/BMBlx7tWN5V6d/8/19QCwEmIdbnA4ZrsuXgvs8i2qFx5i7h6mH5pBS4Pwi4WigLH+upl6faYusrNPuzMrQ==", + "dev": true, + "requires": { + "ethereumjs-util": "^7.1.4" + }, + "dependencies": { + "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==", + "dev": true, + "requires": { + "@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" + } + }, + "ethereumjs-util": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", + "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", + "dev": true, + "requires": { + "@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" + } + } + } + }, + "@nomicfoundation/hardhat-verify": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-verify/-/hardhat-verify-2.0.4.tgz", + "integrity": "sha512-B8ZjhOrmbbRWqJi65jvQblzjsfYktjqj2vmOm+oc2Vu8drZbT2cjeSCRHZKbS7lOtfW78aJZSFvw+zRLCiABJA==", + "dev": true, + "requires": { + "@ethersproject/abi": "^5.1.2", + "@ethersproject/address": "^5.0.2", + "cbor": "^8.1.0", + "chalk": "^2.4.2", + "debug": "^4.1.1", + "lodash.clonedeep": "^4.5.0", + "semver": "^6.3.0", + "table": "^6.8.0", + "undici": "^5.14.0" + }, + "dependencies": { + "cbor": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/cbor/-/cbor-8.1.0.tgz", + "integrity": "sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==", + "dev": true, + "requires": { + "nofilter": "^3.1.0" + } + } + } + }, + "@nomicfoundation/solidity-analyzer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.1.tgz", + "integrity": "sha512-1LMtXj1puAxyFusBgUIy5pZk3073cNXYnXUpuNKFghHbIit/xZgbk0AokpUADbNm3gyD6bFWl3LRFh3dhVdREg==", + "dev": true, + "requires": { + "@nomicfoundation/solidity-analyzer-darwin-arm64": "0.1.1", + "@nomicfoundation/solidity-analyzer-darwin-x64": "0.1.1", + "@nomicfoundation/solidity-analyzer-freebsd-x64": "0.1.1", + "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": "0.1.1", + "@nomicfoundation/solidity-analyzer-linux-arm64-musl": "0.1.1", + "@nomicfoundation/solidity-analyzer-linux-x64-gnu": "0.1.1", + "@nomicfoundation/solidity-analyzer-linux-x64-musl": "0.1.1", + "@nomicfoundation/solidity-analyzer-win32-arm64-msvc": "0.1.1", + "@nomicfoundation/solidity-analyzer-win32-ia32-msvc": "0.1.1", + "@nomicfoundation/solidity-analyzer-win32-x64-msvc": "0.1.1" + } + }, + "@nomicfoundation/solidity-analyzer-darwin-arm64": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.1.tgz", + "integrity": "sha512-KcTodaQw8ivDZyF+D76FokN/HdpgGpfjc/gFCImdLUyqB6eSWVaZPazMbeAjmfhx3R0zm/NYVzxwAokFKgrc0w==", + "dev": true, + "optional": true + }, + "@nomicfoundation/solidity-analyzer-darwin-x64": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.1.tgz", + "integrity": "sha512-XhQG4BaJE6cIbjAVtzGOGbK3sn1BO9W29uhk9J8y8fZF1DYz0Doj8QDMfpMu+A6TjPDs61lbsmeYodIDnfveSA==", + "dev": true, + "optional": true + }, + "@nomicfoundation/solidity-analyzer-freebsd-x64": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-freebsd-x64/-/solidity-analyzer-freebsd-x64-0.1.1.tgz", + "integrity": "sha512-GHF1VKRdHW3G8CndkwdaeLkVBi5A9u2jwtlS7SLhBc8b5U/GcoL39Q+1CSO3hYqePNP+eV5YI7Zgm0ea6kMHoA==", + "dev": true, + "optional": true + }, + "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.1.tgz", + "integrity": "sha512-g4Cv2fO37ZsUENQ2vwPnZc2zRenHyAxHcyBjKcjaSmmkKrFr64yvzeNO8S3GBFCo90rfochLs99wFVGT/0owpg==", + "dev": true, + "optional": true + }, + "@nomicfoundation/solidity-analyzer-linux-arm64-musl": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.1.tgz", + "integrity": "sha512-WJ3CE5Oek25OGE3WwzK7oaopY8xMw9Lhb0mlYuJl/maZVo+WtP36XoQTb7bW/i8aAdHW5Z+BqrHMux23pvxG3w==", + "dev": true, + "optional": true + }, + "@nomicfoundation/solidity-analyzer-linux-x64-gnu": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.1.tgz", + "integrity": "sha512-5WN7leSr5fkUBBjE4f3wKENUy9HQStu7HmWqbtknfXkkil+eNWiBV275IOlpXku7v3uLsXTOKpnnGHJYI2qsdA==", + "dev": true, + "optional": true + }, + "@nomicfoundation/solidity-analyzer-linux-x64-musl": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.1.tgz", + "integrity": "sha512-KdYMkJOq0SYPQMmErv/63CwGwMm5XHenEna9X9aB8mQmhDBrYrlAOSsIPgFCUSL0hjxE3xHP65/EPXR/InD2+w==", + "dev": true, + "optional": true + }, + "@nomicfoundation/solidity-analyzer-win32-arm64-msvc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-arm64-msvc/-/solidity-analyzer-win32-arm64-msvc-0.1.1.tgz", + "integrity": "sha512-VFZASBfl4qiBYwW5xeY20exWhmv6ww9sWu/krWSesv3q5hA0o1JuzmPHR4LPN6SUZj5vcqci0O6JOL8BPw+APg==", + "dev": true, + "optional": true + }, + "@nomicfoundation/solidity-analyzer-win32-ia32-msvc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-ia32-msvc/-/solidity-analyzer-win32-ia32-msvc-0.1.1.tgz", + "integrity": "sha512-JnFkYuyCSA70j6Si6cS1A9Gh1aHTEb8kOTBApp/c7NRTFGNMH8eaInKlyuuiIbvYFhlXW4LicqyYuWNNq9hkpQ==", + "dev": true, + "optional": true + }, + "@nomicfoundation/solidity-analyzer-win32-x64-msvc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.1.tgz", + "integrity": "sha512-HrVJr6+WjIXGnw3Q9u6KQcbZCtk0caVWhCdFADySvRyUxJ8PnzlaP+MhwNE8oyT8OZ6ejHBRrrgjSqDCFXGirw==", + "dev": true, + "optional": true + }, + "@openzeppelin/contracts": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-5.0.2.tgz", + "integrity": "sha512-ytPc6eLGcHHnapAZ9S+5qsdomhjo6QBHTDRRBFfTxXIpsicMhVPouPgmUPebZZZGX7vt9USA+Z+0M0dSVtSUEA==", + "dev": true + }, + "@parcel/watcher": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.4.0.tgz", + "integrity": "sha512-XJLGVL0DEclX5pcWa2N9SX1jCGTDd8l972biNooLFtjneuGqodupPQh6XseXIBBeVIMaaJ7bTcs3qGvXwsp4vg==", + "requires": { + "@parcel/watcher-android-arm64": "2.4.0", + "@parcel/watcher-darwin-arm64": "2.4.0", + "@parcel/watcher-darwin-x64": "2.4.0", + "@parcel/watcher-freebsd-x64": "2.4.0", + "@parcel/watcher-linux-arm-glibc": "2.4.0", + "@parcel/watcher-linux-arm64-glibc": "2.4.0", + "@parcel/watcher-linux-arm64-musl": "2.4.0", + "@parcel/watcher-linux-x64-glibc": "2.4.0", + "@parcel/watcher-linux-x64-musl": "2.4.0", + "@parcel/watcher-win32-arm64": "2.4.0", + "@parcel/watcher-win32-ia32": "2.4.0", + "@parcel/watcher-win32-x64": "2.4.0", + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" + }, + "dependencies": { + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==" + }, + "node-addon-api": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.0.tgz", + "integrity": "sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g==" + } + } + }, + "@parcel/watcher-android-arm64": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.4.0.tgz", + "integrity": "sha512-+fPtO/GsbYX1LJnCYCaDVT3EOBjvSFdQN9Mrzh9zWAOOfvidPWyScTrHIZHHfJBvlHzNA0Gy0U3NXFA/M7PHUA==", + "optional": true + }, + "@parcel/watcher-darwin-arm64": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.4.0.tgz", + "integrity": "sha512-T/At5pansFuQ8VJLRx0C6C87cgfqIYhW2N/kBfLCUvDhCah0EnLLwaD/6MW3ux+rpgkpQAnMELOCTKlbwncwiA==", + "optional": true + }, + "@parcel/watcher-darwin-x64": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.4.0.tgz", + "integrity": "sha512-vZMv9jl+szz5YLsSqEGCMSllBl1gU1snfbRL5ysJU03MEa6gkVy9OMcvXV1j4g0++jHEcvzhs3Z3LpeEbVmY6Q==", + "optional": true + }, + "@parcel/watcher-freebsd-x64": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.4.0.tgz", + "integrity": "sha512-dHTRMIplPDT1M0+BkXjtMN+qLtqq24sLDUhmU+UxxLP2TEY2k8GIoqIJiVrGWGomdWsy5IO27aDV1vWyQ6gfHA==", + "optional": true + }, + "@parcel/watcher-linux-arm-glibc": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.4.0.tgz", + "integrity": "sha512-9NQXD+qk46RwATNC3/UB7HWurscY18CnAPMTFcI9Y8CTbtm63/eex1SNt+BHFinEQuLBjaZwR2Lp+n7pmEJPpQ==", + "optional": true + }, + "@parcel/watcher-linux-arm64-glibc": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.4.0.tgz", + "integrity": "sha512-QuJTAQdsd7PFW9jNGaV9Pw+ZMWV9wKThEzzlY3Lhnnwy7iW23qtQFPql8iEaSFMCVI5StNNmONUopk+MFKpiKg==", + "optional": true + }, + "@parcel/watcher-linux-arm64-musl": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.4.0.tgz", + "integrity": "sha512-oyN+uA9xcTDo/45bwsd6TFHa7Lc7hKujyMlvwrCLvSckvWogndCEoVYFNfZ6JJ2KNL/6fFiGPcbjp8jJmEh5Ng==", + "optional": true + }, + "@parcel/watcher-linux-x64-glibc": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.4.0.tgz", + "integrity": "sha512-KphV8awJmxU3q52JQvJot0QMu07CIyEjV+2Tb2ZtbucEgqyRcxOBDMsqp1JNq5nuDXtcCC0uHQICeiEz38dPBQ==", + "optional": true + }, + "@parcel/watcher-linux-x64-musl": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.4.0.tgz", + "integrity": "sha512-7jzcOonpXNWcSijPpKD5IbC6xC7yTibjJw9jviVzZostYLGxbz8LDJLUnLzLzhASPlPGgpeKLtFUMjAAzM+gSA==", + "optional": true + }, + "@parcel/watcher-wasm": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-wasm/-/watcher-wasm-2.4.0.tgz", + "integrity": "sha512-MNgQ4WCbBybqQ97KwR/hqJGYTg3+s8qHpgIyFWB2qJOBvoJWbXuJGmm4ZkPLq2bMaANqCZqrXwmKYagZTkMKZA==", + "requires": { + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "napi-wasm": "^1.1.0" + }, + "dependencies": { + "napi-wasm": { + "version": "1.1.0", + "bundled": true + } + } + }, + "@parcel/watcher-win32-arm64": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.4.0.tgz", + "integrity": "sha512-NOej2lqlq8bQNYhUMnOD0nwvNql8ToQF+1Zhi9ULZoG+XTtJ9hNnCFfyICxoZLXor4bBPTOnzs/aVVoefYnjIg==", + "optional": true + }, + "@parcel/watcher-win32-ia32": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.4.0.tgz", + "integrity": "sha512-IO/nM+K2YD/iwjWAfHFMBPz4Zqn6qBDqZxY4j2n9s+4+OuTSRM/y/irksnuqcspom5DjkSeF9d0YbO+qpys+JA==", + "optional": true + }, + "@parcel/watcher-win32-x64": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.4.0.tgz", + "integrity": "sha512-pAUyUVjfFjWaf/pShmJpJmNxZhbMvJASUpdes9jL6bTEJ+gDxPRSpXTIemNyNsb9AtbiGXs9XduP1reThmd+dA==", + "optional": true + }, + "@peculiar/asn1-android": { + "version": "2.3.10", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-android/-/asn1-android-2.3.10.tgz", + "integrity": "sha512-z9Rx9cFJv7UUablZISe7uksNbFJCq13hO0yEAOoIpAymALTLlvUOSLnGiQS7okPaM5dP42oTLhezH6XDXRXjGw==", + "dev": true, + "requires": { + "@peculiar/asn1-schema": "^2.3.8", + "asn1js": "^3.0.5", + "tslib": "^2.6.2" + }, + "dependencies": { + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + } + } + }, + "@peculiar/asn1-ecc": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-ecc/-/asn1-ecc-2.3.8.tgz", + "integrity": "sha512-Ah/Q15y3A/CtxbPibiLM/LKcMbnLTdUdLHUgdpB5f60sSvGkXzxJCu5ezGTFHogZXWNX3KSmYqilCrfdmBc6pQ==", + "dev": true, + "requires": { + "@peculiar/asn1-schema": "^2.3.8", + "@peculiar/asn1-x509": "^2.3.8", + "asn1js": "^3.0.5", + "tslib": "^2.6.2" + }, + "dependencies": { + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + } + } + }, + "@peculiar/asn1-rsa": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-rsa/-/asn1-rsa-2.3.8.tgz", + "integrity": "sha512-ES/RVEHu8VMYXgrg3gjb1m/XG0KJWnV4qyZZ7mAg7rrF3VTmRbLxO8mk+uy0Hme7geSMebp+Wvi2U6RLLEs12Q==", + "dev": true, + "requires": { + "@peculiar/asn1-schema": "^2.3.8", + "@peculiar/asn1-x509": "^2.3.8", + "asn1js": "^3.0.5", + "tslib": "^2.6.2" + }, + "dependencies": { + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + } + } + }, + "@peculiar/asn1-schema": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.3.8.tgz", + "integrity": "sha512-ULB1XqHKx1WBU/tTFIA+uARuRoBVZ4pNdOA878RDrRbBfBGcSzi5HBkdScC6ZbHn8z7L8gmKCgPC1LHRrP46tA==", + "dev": true, + "requires": { + "asn1js": "^3.0.5", + "pvtsutils": "^1.3.5", + "tslib": "^2.6.2" + }, + "dependencies": { + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + } + } + }, + "@peculiar/asn1-x509": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509/-/asn1-x509-2.3.8.tgz", + "integrity": "sha512-voKxGfDU1c6r9mKiN5ZUsZWh3Dy1BABvTM3cimf0tztNwyMJPhiXY94eRTgsMQe6ViLfT6EoXxkWVzcm3mFAFw==", + "dev": true, + "requires": { + "@peculiar/asn1-schema": "^2.3.8", + "asn1js": "^3.0.5", + "ipaddr.js": "^2.1.0", + "pvtsutils": "^1.3.5", + "tslib": "^2.6.2" + }, + "dependencies": { + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + } + } + }, + "@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 + }, + "@pkgr/core": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.0.tgz", + "integrity": "sha512-Zwq5OCzuwJC2jwqmpEQt7Ds1DTi6BWSwoGkbb1n9pO3hzb35BoJELx7c0T23iDkBGkh2e7tvOtjF3tr3OaQHDQ==", + "dev": true + }, + "@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 + }, + "@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, + "requires": { + "graceful-fs": "4.2.10" + }, + "dependencies": { + "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 + } + } + }, + "@pnpm/npm-conf": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.2.2.tgz", + "integrity": "sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==", + "dev": true, + "requires": { + "@pnpm/config.env-replace": "^1.1.0", + "@pnpm/network.ca-file": "^1.0.1", + "config-chain": "^1.1.11" + } + }, + "@rollup/rollup-android-arm-eabi": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.5.tgz", + "integrity": "sha512-idWaG8xeSRCfRq9KpRysDHJ/rEHBEXcHuJ82XY0yYFIWnLMjZv9vF/7DOq8djQ2n3Lk6+3qfSH8AqlmHlmi1MA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-android-arm64": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.5.tgz", + "integrity": "sha512-f14d7uhAMtsCGjAYwZGv6TwuS3IFaM4ZnGMUn3aCBgkcHAYErhV1Ad97WzBvS2o0aaDv4mVz+syiN0ElMyfBPg==", + "dev": true, + "optional": true + }, + "@rollup/rollup-darwin-arm64": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.5.tgz", + "integrity": "sha512-ndoXeLx455FffL68OIUrVr89Xu1WLzAG4n65R8roDlCoYiQcGGg6MALvs2Ap9zs7AHg8mpHtMpwC8jBBjZrT/w==", + "dev": true, + "optional": true + }, + "@rollup/rollup-darwin-x64": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.5.tgz", + "integrity": "sha512-UmElV1OY2m/1KEEqTlIjieKfVwRg0Zwg4PLgNf0s3glAHXBN99KLpw5A5lrSYCa1Kp63czTpVll2MAqbZYIHoA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.5.tgz", + "integrity": "sha512-Q0LcU61v92tQB6ae+udZvOyZ0wfpGojtAKrrpAaIqmJ7+psq4cMIhT/9lfV6UQIpeItnq/2QDROhNLo00lOD1g==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm64-gnu": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.5.tgz", + "integrity": "sha512-dkRscpM+RrR2Ee3eOQmRWFjmV/payHEOrjyq1VZegRUa5OrZJ2MAxBNs05bZuY0YCtpqETDy1Ix4i/hRqX98cA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm64-musl": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.5.tgz", + "integrity": "sha512-QaKFVOzzST2xzY4MAmiDmURagWLFh+zZtttuEnuNn19AiZ0T3fhPyjPPGwLNdiDT82ZE91hnfJsUiDwF9DClIQ==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-riscv64-gnu": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.5.tgz", + "integrity": "sha512-HeGqmRJuyVg6/X6MpE2ur7GbymBPS8Np0S/vQFHDmocfORT+Zt76qu+69NUoxXzGqVP1pzaY6QIi0FJWLC3OPA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-x64-gnu": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.5.tgz", + "integrity": "sha512-Dq1bqBdLaZ1Gb/l2e5/+o3B18+8TI9ANlA1SkejZqDgdU/jK/ThYaMPMJpVMMXy2uRHvGKbkz9vheVGdq3cJfA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-x64-musl": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.5.tgz", + "integrity": "sha512-ezyFUOwldYpj7AbkwyW9AJ203peub81CaAIVvckdkyH8EvhEIoKzaMFJj0G4qYJ5sw3BpqhFrsCc30t54HV8vg==", + "dev": true, + "optional": true + }, + "@rollup/rollup-win32-arm64-msvc": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.5.tgz", + "integrity": "sha512-aHSsMnUw+0UETB0Hlv7B/ZHOGY5bQdwMKJSzGfDfvyhnpmVxLMGnQPGNE9wgqkLUs3+gbG1Qx02S2LLfJ5GaRQ==", + "dev": true, + "optional": true + }, + "@rollup/rollup-win32-ia32-msvc": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.5.tgz", + "integrity": "sha512-AiqiLkb9KSf7Lj/o1U3SEP9Zn+5NuVKgFdRIZkvd4N0+bYrTOovVd0+LmYCPQGbocT4kvFyK+LXCDiXPBF3fyA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-win32-x64-msvc": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.5.tgz", + "integrity": "sha512-1q+mykKE3Vot1kaFJIDoUFv5TuW+QQVaf2FmTT9krg86pQrGStOSJJ0Zil7CFagyxDuouTepzt5Y5TVzyajOdQ==", + "dev": true, + "optional": true + }, + "@safe-global/4337-gas-metering": { + "version": "file:examples/4337-gas-metering", + "requires": { + "@alchemy/aa-accounts": "2.4.0", + "@alchemy/aa-alchemy": "2.4.0", + "@alchemy/aa-core": "2.3.1", + "@gelatonetwork/relay-sdk": "^5.5.6", + "@types/node": "20.11.18", + "alchemy-sdk": "3.1.2", + "dotenv": "16.4.4", + "permissionless": "0.0.35", + "rimraf": "^5.0.5", + "tsx": "4.7.1", + "typescript": "^5.3.3", + "viem": "2.7.9" + }, + "dependencies": { + "@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "requires": { + "@noble/hashes": "1.3.2" + } + }, + "@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==" + }, + "@scure/bip32": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.2.tgz", + "integrity": "sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA==", + "requires": { + "@noble/curves": "~1.2.0", + "@noble/hashes": "~1.3.2", + "@scure/base": "~1.1.2" + } + }, + "@scure/bip39": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.1.tgz", + "integrity": "sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==", + "requires": { + "@noble/hashes": "~1.3.0", + "@scure/base": "~1.1.0" + } + }, + "abitype": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/abitype/-/abitype-1.0.0.tgz", + "integrity": "sha512-NMeMah//6bJ56H5XRj8QCV4AwuW6hB6zqz2LnhhLdcWVQOsXki6/Pn3APeqxCma62nXIcmZWdu1DlHWS74umVQ==", + "requires": {} + }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dev": true, + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + } + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "permissionless": { + "version": "0.0.35", + "resolved": "https://registry.npmjs.org/permissionless/-/permissionless-0.0.35.tgz", + "integrity": "sha512-wWnFJW9bCiIBvLVkZ7aPbX0w5LIeelb5dsBOKHIEaRf9xKaxNrpRWCsBRHHjiL0lhvqPlHvEmjJ71Y2mxPyDpg==", + "requires": {} + }, + "rimraf": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", + "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", + "dev": true, + "requires": { + "glob": "^10.3.7" + } + }, + "viem": { + "version": "2.7.9", + "resolved": "https://registry.npmjs.org/viem/-/viem-2.7.9.tgz", + "integrity": "sha512-iDfc8TwaZFp1K95zlsxYh6Cs0OWCt35Tqs8uYgXKSxtz7w075mZ0H5SJ8zSyJGoEaticVDhtdmRRX6TtcW9EeQ==", + "requires": { + "@adraffy/ens-normalize": "1.10.0", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@scure/bip32": "1.3.2", + "@scure/bip39": "1.2.1", + "abitype": "1.0.0", + "isows": "1.0.3", + "ws": "8.13.0" + } + }, + "ws": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "requires": {} + } + } + }, + "@safe-global/safe-allowance-module": { + "version": "file:modules/allowances", + "requires": { + "@nomicfoundation/hardhat-chai-matchers": "2.0.6", + "@nomicfoundation/hardhat-ethers": "^3.0.5", + "@nomicfoundation/hardhat-network-helpers": "^1.0.10", + "@nomicfoundation/hardhat-toolbox": "^4.0.0", + "@nomicfoundation/hardhat-verify": "^2.0.4", + "@openzeppelin/contracts": "^5.0.2", + "@safe-global/safe-deployments": "^1.32.0", + "@safe-global/safe-singleton-factory": "^1.0.19", + "@typechain/ethers-v6": "^0.5.1", + "@typechain/hardhat": "^9.1.0", + "@types/mocha": "^10.0.6", + "@types/node": "^20.11.18", + "@typescript-eslint/eslint-plugin": "^7.0.1", + "@typescript-eslint/parser": "^7.0.1", + "chai": "^4.2.0", + "dotenv": "^16.4.4", + "ethers": "^6.11.1", + "hardhat": "^2.20.1", + "hardhat-deploy": "^0.11.45", + "hardhat-gas-reporter": "^1.0.10", + "rimraf": "^5.0.5", + "solhint": "4.1.1", + "solidity-coverage": "^0.8.7", + "ts-node": "^10.9.2", + "typechain": "^8.3.2", + "typescript": "5.3.3" + }, + "dependencies": { + "@adraffy/ens-normalize": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz", + "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==", + "dev": true + }, + "@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "dev": true, + "requires": { + "@noble/hashes": "1.3.2" + } + }, + "@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", + "dev": true + }, + "@nomicfoundation/hardhat-chai-matchers": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-2.0.6.tgz", + "integrity": "sha512-Te1Uyo9oJcTCF0Jy9dztaLpshmlpjLf2yPtWXlXuLjMt3RRSmJLm/+rKVTW6gfadAEs12U/it6D0ZRnnRGiICQ==", + "dev": true, + "requires": { + "@types/chai-as-promised": "^7.1.3", + "chai-as-promised": "^7.1.1", + "deep-eql": "^4.0.1", + "ordinal": "^1.0.3" + } + }, + "@nomicfoundation/hardhat-ethers": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ethers/-/hardhat-ethers-3.0.5.tgz", + "integrity": "sha512-RNFe8OtbZK6Ila9kIlHp0+S80/0Bu/3p41HUpaRIoHLm6X3WekTd83vob3rE54Duufu1edCiBDxspBzi2rxHHw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "lodash.isequal": "^4.5.0" + } + }, + "@nomicfoundation/hardhat-toolbox": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-toolbox/-/hardhat-toolbox-4.0.0.tgz", + "integrity": "sha512-jhcWHp0aHaL0aDYj8IJl80v4SZXWMS1A2XxXa1CA6pBiFfJKuZinCkO6wb+POAt0LIfXB3gA3AgdcOccrcwBwA==", + "dev": true, + "requires": {} + }, + "@typechain/ethers-v6": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@typechain/ethers-v6/-/ethers-v6-0.5.1.tgz", + "integrity": "sha512-F+GklO8jBWlsaVV+9oHaPh5NJdd6rAKN4tklGfInX1Q7h0xPgVLP39Jl3eCulPB5qexI71ZFHwbljx4ZXNfouA==", + "dev": true, + "requires": { + "lodash": "^4.17.15", + "ts-essentials": "^7.0.1" + } + }, + "@typechain/hardhat": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@typechain/hardhat/-/hardhat-9.1.0.tgz", + "integrity": "sha512-mtaUlzLlkqTlfPwB3FORdejqBskSnh+Jl8AIJGjXNAQfRQ4ofHADPl1+oU7Z3pAJzmZbUXII8MhOLQltcHgKnA==", + "dev": true, + "requires": { + "fs-extra": "^9.1.0" + } + }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "ethers": { + "version": "6.11.1", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.11.1.tgz", + "integrity": "sha512-mxTAE6wqJQAbp5QAe/+o+rXOID7Nw91OZXvgpjDa1r4fAbq2Nu314oEZSbjoRLacuCzs7kUC3clEvkCQowffGg==", + "dev": true, + "requires": { + "@adraffy/ens-normalize": "1.10.1", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@types/node": "18.15.13", + "aes-js": "4.0.0-beta.5", + "tslib": "2.4.0", + "ws": "8.5.0" + }, + "dependencies": { + "@types/node": { + "version": "18.15.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", + "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==", + "dev": true + } + } + }, + "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==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dev": true, + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "rimraf": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", + "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", + "dev": true, + "requires": { + "glob": "^10.3.7" + } + }, + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true + }, + "ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "dev": true, + "requires": {} + } + } + }, + "@safe-global/safe-contracts": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@safe-global/safe-contracts/-/safe-contracts-1.4.1.tgz", + "integrity": "sha512-fP1jewywSwsIniM04NsqPyVRFKPMAuirC3ftA/TA4X3Zc5EnwQp/UCJUU2PL/37/z/jMo8UUaJ+pnFNWmMU7dQ==", + "requires": {} + }, + "@safe-global/safe-deployments": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/@safe-global/safe-deployments/-/safe-deployments-1.32.0.tgz", + "integrity": "sha512-7RXmnBrUzJ9+Iat74yx3Gel0kygmsaWjJhqr+0Fy8mkP5ly/6dTZ/2ize1pv3j9Yal04NTOqXbaJG4JnbTANQw==", + "dev": true, + "requires": { + "semver": "^7.3.7" + }, + "dependencies": { + "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==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@safe-global/safe-erc4337": { + "version": "file:modules/4337", + "requires": { + "@account-abstraction/contracts": "^0.7.0", + "@noble/curves": "^1.3.0", + "@nomicfoundation/hardhat-toolbox": "^4.0.0", + "@openzeppelin/contracts": "^5.0.2", + "@safe-global/safe-contracts": "^1.4.1", + "@simplewebauthn/server": "9.0.0", + "@types/chai": "^4.3.11", + "@types/mocha": "^10.0.6", + "@types/node": "^20.11.18", + "@types/yargs": "^17.0.32", + "cbor": "^9.0.2", + "debug": "^4.3.4", + "dotenv": "^16.4.4", + "ethers": "^6.11.1", + "hardhat": "^2.20.1", + "hardhat-deploy": "0.11.45", + "husky": "^9.0.11", + "solc": "^0.8.24", + "solhint": "^4.1.1", + "ts-node": "^10.9.2", + "typescript": "^5.3.3", + "yargs": "^17.7.2" + }, + "dependencies": { + "@adraffy/ens-normalize": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz", + "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==", + "dev": true + }, + "@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", + "dev": true + }, + "@nomicfoundation/hardhat-chai-matchers": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-2.0.3.tgz", + "integrity": "sha512-A40s7EAK4Acr8UP1Yudgi9GGD9Cca/K3LHt3DzmRIje14lBfHtg9atGQ7qK56vdPcTwKmeaGn30FzxMUfPGEMw==", + "dev": true, + "peer": true, + "requires": { + "@types/chai-as-promised": "^7.1.3", + "chai-as-promised": "^7.1.1", + "deep-eql": "^4.0.1", + "ordinal": "^1.0.3" + } + }, + "@nomicfoundation/hardhat-ethers": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ethers/-/hardhat-ethers-3.0.5.tgz", + "integrity": "sha512-RNFe8OtbZK6Ila9kIlHp0+S80/0Bu/3p41HUpaRIoHLm6X3WekTd83vob3rE54Duufu1edCiBDxspBzi2rxHHw==", + "dev": true, + "peer": true, + "requires": { + "debug": "^4.1.1", + "lodash.isequal": "^4.5.0" + } + }, + "@nomicfoundation/hardhat-toolbox": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-toolbox/-/hardhat-toolbox-4.0.0.tgz", + "integrity": "sha512-jhcWHp0aHaL0aDYj8IJl80v4SZXWMS1A2XxXa1CA6pBiFfJKuZinCkO6wb+POAt0LIfXB3gA3AgdcOccrcwBwA==", + "dev": true, + "requires": {} + }, + "@simplewebauthn/server": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@simplewebauthn/server/-/server-9.0.0.tgz", + "integrity": "sha512-pm3UWhZrneBoSDQmtYTScZeOhcKbPch/zmMgfJZJY3sE1l0VAQsAKlIjoLGRrw2vXYSL7Eslhh0Qdb301IPxTQ==", + "dev": true, + "requires": { + "@hexagon/base64": "^1.1.27", + "@peculiar/asn1-android": "^2.3.10", + "@peculiar/asn1-ecc": "^2.3.8", + "@peculiar/asn1-rsa": "^2.3.8", + "@peculiar/asn1-schema": "^2.3.8", + "@peculiar/asn1-x509": "^2.3.8", + "@simplewebauthn/types": "^9.0.0", + "cbor-x": "^1.5.2", + "cross-fetch": "^4.0.0" + } + }, + "@typechain/ethers-v6": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@typechain/ethers-v6/-/ethers-v6-0.5.1.tgz", + "integrity": "sha512-F+GklO8jBWlsaVV+9oHaPh5NJdd6rAKN4tklGfInX1Q7h0xPgVLP39Jl3eCulPB5qexI71ZFHwbljx4ZXNfouA==", + "dev": true, + "peer": true, + "requires": { + "lodash": "^4.17.15", + "ts-essentials": "^7.0.1" + } + }, + "@typechain/hardhat": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@typechain/hardhat/-/hardhat-9.1.0.tgz", + "integrity": "sha512-mtaUlzLlkqTlfPwB3FORdejqBskSnh+Jl8AIJGjXNAQfRQ4ofHADPl1+oU7Z3pAJzmZbUXII8MhOLQltcHgKnA==", + "dev": true, + "peer": true, + "requires": { + "fs-extra": "^9.1.0" + } + }, + "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==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, + "commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true + }, + "ethers": { + "version": "6.11.1", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.11.1.tgz", + "integrity": "sha512-mxTAE6wqJQAbp5QAe/+o+rXOID7Nw91OZXvgpjDa1r4fAbq2Nu314oEZSbjoRLacuCzs7kUC3clEvkCQowffGg==", + "dev": true, + "requires": { + "@adraffy/ens-normalize": "1.10.1", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@types/node": "18.15.13", + "aes-js": "4.0.0-beta.5", + "tslib": "2.4.0", + "ws": "8.5.0" + }, + "dependencies": { + "@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "dev": true, + "requires": { + "@noble/hashes": "1.3.2" + } + }, + "@types/node": { + "version": "18.15.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", + "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==", + "dev": true + } + } + }, + "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==", + "dev": true, + "peer": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "peer": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true + }, + "solc": { + "version": "0.8.24", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.8.24.tgz", + "integrity": "sha512-G5yUqjTUPc8Np74sCFwfsevhBPlUifUOfhYrgyu6CmYlC6feSw0YS6eZW47XDT23k3JYdKx5nJ+Q7whCEmNcoA==", + "dev": true, + "requires": { + "command-exists": "^1.2.8", + "commander": "^8.1.0", + "follow-redirects": "^1.12.1", + "js-sha3": "0.8.0", + "memorystream": "^0.3.1", + "semver": "^5.5.0", + "tmp": "0.0.33" + } + }, + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "peer": true + }, + "ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "dev": true, + "requires": {} + }, + "yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true + } + } + }, + "@safe-global/safe-passkey": { + "version": "file:modules/passkey", + "requires": { + "@noble/curves": "^1.3.0", + "@nomicfoundation/hardhat-toolbox": "^4.0.0", + "hardhat": "^2.20.1", + "hardhat-deploy": "^0.12.1", + "solhint": "^4.1.1" + }, + "dependencies": { + "@adraffy/ens-normalize": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz", + "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==", + "dev": true, + "peer": true + }, + "@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==", + "dev": true, + "requires": { + "@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" + } + }, + "@ethersproject/hdnode": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", + "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", + "dev": true, + "requires": { + "@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" + } + }, + "@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==", + "dev": true, + "requires": { + "@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" + }, + "dependencies": { + "aes-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", + "dev": true + } + } + }, + "@ethersproject/pbkdf2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", + "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/sha2": "^5.7.0" + } + }, + "@ethersproject/solidity": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", + "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", + "dev": true, + "requires": { + "@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" + } + }, + "@ethersproject/units": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", + "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", + "dev": true, + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@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==", + "dev": true, + "requires": { + "@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" + } + }, + "@ethersproject/wordlists": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", + "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", + "dev": true, + "requires": { + "@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" + } + }, + "@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "dev": true, + "requires": { + "@noble/hashes": "1.3.2" + } + }, + "@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", + "dev": true + }, + "@nomicfoundation/hardhat-chai-matchers": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-2.0.6.tgz", + "integrity": "sha512-Te1Uyo9oJcTCF0Jy9dztaLpshmlpjLf2yPtWXlXuLjMt3RRSmJLm/+rKVTW6gfadAEs12U/it6D0ZRnnRGiICQ==", + "dev": true, + "peer": true, + "requires": { + "@types/chai-as-promised": "^7.1.3", + "chai-as-promised": "^7.1.1", + "deep-eql": "^4.0.1", + "ordinal": "^1.0.3" + } + }, + "@nomicfoundation/hardhat-ethers": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ethers/-/hardhat-ethers-3.0.5.tgz", + "integrity": "sha512-RNFe8OtbZK6Ila9kIlHp0+S80/0Bu/3p41HUpaRIoHLm6X3WekTd83vob3rE54Duufu1edCiBDxspBzi2rxHHw==", + "dev": true, + "peer": true, + "requires": { + "debug": "^4.1.1", + "lodash.isequal": "^4.5.0" + } + }, + "@nomicfoundation/hardhat-toolbox": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-toolbox/-/hardhat-toolbox-4.0.0.tgz", + "integrity": "sha512-jhcWHp0aHaL0aDYj8IJl80v4SZXWMS1A2XxXa1CA6pBiFfJKuZinCkO6wb+POAt0LIfXB3gA3AgdcOccrcwBwA==", + "dev": true, + "requires": {} + }, + "@typechain/ethers-v6": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@typechain/ethers-v6/-/ethers-v6-0.5.1.tgz", + "integrity": "sha512-F+GklO8jBWlsaVV+9oHaPh5NJdd6rAKN4tklGfInX1Q7h0xPgVLP39Jl3eCulPB5qexI71ZFHwbljx4ZXNfouA==", + "dev": true, + "peer": true, + "requires": { + "lodash": "^4.17.15", + "ts-essentials": "^7.0.1" + } + }, + "@typechain/hardhat": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@typechain/hardhat/-/hardhat-9.1.0.tgz", + "integrity": "sha512-mtaUlzLlkqTlfPwB3FORdejqBskSnh+Jl8AIJGjXNAQfRQ4ofHADPl1+oU7Z3pAJzmZbUXII8MhOLQltcHgKnA==", + "dev": true, + "peer": true, + "requires": { + "fs-extra": "^9.1.0" + } + }, + "@types/node": { + "version": "18.15.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", + "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==", + "dev": true, + "peer": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "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==", + "dev": true + }, + "ethers": { + "version": "6.11.1", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.11.1.tgz", + "integrity": "sha512-mxTAE6wqJQAbp5QAe/+o+rXOID7Nw91OZXvgpjDa1r4fAbq2Nu314oEZSbjoRLacuCzs7kUC3clEvkCQowffGg==", + "dev": true, + "peer": true, + "requires": { + "@adraffy/ens-normalize": "1.10.1", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@types/node": "18.15.13", + "aes-js": "4.0.0-beta.5", + "tslib": "2.4.0", + "ws": "8.5.0" + } + }, + "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==", + "dev": true, + "peer": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "hardhat-deploy": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/hardhat-deploy/-/hardhat-deploy-0.12.1.tgz", + "integrity": "sha512-ayPJqBCElzPeiwdHUEV0rKQ6NvKStjQAxCqCPlsavQVaxl7uZUHt/d+XbLqglVFqOOpHHs6L9K4W1vxPbsOy5Q==", + "dev": true, + "requires": { + "@ethersproject/abi": "^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/contracts": "^5.7.0", + "@ethersproject/providers": "^5.7.2", + "@ethersproject/solidity": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wallet": "^5.7.0", + "@types/qs": "^6.9.7", + "axios": "^0.21.1", + "chalk": "^4.1.2", + "chokidar": "^3.5.2", + "debug": "^4.3.2", + "enquirer": "^2.3.6", + "ethers": "^5.7.0", + "form-data": "^4.0.0", + "fs-extra": "^10.0.0", + "match-all": "^1.2.6", + "murmur-128": "^0.2.1", + "qs": "^6.9.4", + "zksync-ethers": "^5.0.0" + }, + "dependencies": { + "ethers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "dev": true, + "requires": { + "@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" + } + }, + "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==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + } + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + }, + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true, + "peer": true + }, + "universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true + }, + "ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "dev": true, + "peer": true, + "requires": {} + } + } + }, + "@safe-global/safe-singleton-factory": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/@safe-global/safe-singleton-factory/-/safe-singleton-factory-1.0.19.tgz", + "integrity": "sha512-TwTmeEpwR+8E8XOWR93cOWK7NbepURpCqr6eOTwwkVZj1hS95Kkd0G2WmP1GokUlMS6xm9BxiIr1gYjOFGp8QQ==", + "dev": true + }, + "@scure/base": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.5.tgz", + "integrity": "sha512-Brj9FiG2W1MRQSTB212YVPRrcbjkv48FoZi/u4l/zds/ieRrqsh7aUf6CLwkAq61oKXr/ZlTzlY66gLIj3TFTQ==" + }, + "@scure/bip32": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", + "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", + "dev": true, + "requires": { + "@noble/hashes": "~1.2.0", + "@noble/secp256k1": "~1.7.0", + "@scure/base": "~1.1.0" + } + }, + "@scure/bip39": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", + "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", + "dev": true, + "requires": { + "@noble/hashes": "~1.2.0", + "@scure/base": "~1.1.0" + } + }, + "@sentry/core": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz", + "integrity": "sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==", + "dev": true, + "requires": { + "@sentry/hub": "5.30.0", + "@sentry/minimal": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + } + }, + "@sentry/hub": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-5.30.0.tgz", + "integrity": "sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==", + "dev": true, + "requires": { + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + } + }, + "@sentry/minimal": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.30.0.tgz", + "integrity": "sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==", + "dev": true, + "requires": { + "@sentry/hub": "5.30.0", + "@sentry/types": "5.30.0", + "tslib": "^1.9.3" + } + }, + "@sentry/node": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-5.30.0.tgz", + "integrity": "sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==", + "dev": true, + "requires": { + "@sentry/core": "5.30.0", + "@sentry/hub": "5.30.0", + "@sentry/tracing": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "cookie": "^0.4.1", + "https-proxy-agent": "^5.0.0", + "lru_map": "^0.3.3", + "tslib": "^1.9.3" + } + }, + "@sentry/tracing": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-5.30.0.tgz", + "integrity": "sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==", + "dev": true, + "requires": { + "@sentry/hub": "5.30.0", + "@sentry/minimal": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + } + }, + "@sentry/types": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-5.30.0.tgz", + "integrity": "sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==", + "dev": true + }, + "@sentry/utils": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-5.30.0.tgz", + "integrity": "sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==", + "dev": true, + "requires": { + "@sentry/types": "5.30.0", + "tslib": "^1.9.3" + } + }, + "@simplewebauthn/types": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@simplewebauthn/types/-/types-9.0.1.tgz", + "integrity": "sha512-tGSRP1QvsAvsJmnOlRQyw/mvK9gnPtjEc5fg2+m8n+QUa+D7rvrKkOYyfpy42GTs90X3RDOnqJgfHt+qO67/+w==", + "dev": true + }, + "@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 + }, + "@solidity-parser/parser": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.14.5.tgz", + "integrity": "sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg==", + "dev": true, + "requires": { + "antlr4ts": "^0.5.0-alpha.4" + } + }, + "@stablelib/aead": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/aead/-/aead-1.0.1.tgz", + "integrity": "sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg==" + }, + "@stablelib/binary": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/binary/-/binary-1.0.1.tgz", + "integrity": "sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==", + "requires": { + "@stablelib/int": "^1.0.1" + } + }, + "@stablelib/bytes": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/bytes/-/bytes-1.0.1.tgz", + "integrity": "sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ==" + }, + "@stablelib/chacha": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/chacha/-/chacha-1.0.1.tgz", + "integrity": "sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg==", + "requires": { + "@stablelib/binary": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } + }, + "@stablelib/chacha20poly1305": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/chacha20poly1305/-/chacha20poly1305-1.0.1.tgz", + "integrity": "sha512-MmViqnqHd1ymwjOQfghRKw2R/jMIGT3wySN7cthjXCBdO+qErNPUBnRzqNpnvIwg7JBCg3LdeCZZO4de/yEhVA==", + "requires": { + "@stablelib/aead": "^1.0.1", + "@stablelib/binary": "^1.0.1", + "@stablelib/chacha": "^1.0.1", + "@stablelib/constant-time": "^1.0.1", + "@stablelib/poly1305": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } + }, + "@stablelib/constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/constant-time/-/constant-time-1.0.1.tgz", + "integrity": "sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg==" + }, + "@stablelib/ed25519": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@stablelib/ed25519/-/ed25519-1.0.3.tgz", + "integrity": "sha512-puIMWaX9QlRsbhxfDc5i+mNPMY+0TmQEskunY1rZEBPi1acBCVQAhnsk/1Hk50DGPtVsZtAWQg4NHGlVaO9Hqg==", + "requires": { + "@stablelib/random": "^1.0.2", + "@stablelib/sha512": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } + }, + "@stablelib/hash": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/hash/-/hash-1.0.1.tgz", + "integrity": "sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg==" + }, + "@stablelib/hkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/hkdf/-/hkdf-1.0.1.tgz", + "integrity": "sha512-SBEHYE16ZXlHuaW5RcGk533YlBj4grMeg5TooN80W3NpcHRtLZLLXvKyX0qcRFxf+BGDobJLnwkvgEwHIDBR6g==", + "requires": { + "@stablelib/hash": "^1.0.1", + "@stablelib/hmac": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } + }, + "@stablelib/hmac": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/hmac/-/hmac-1.0.1.tgz", + "integrity": "sha512-V2APD9NSnhVpV/QMYgCVMIYKiYG6LSqw1S65wxVoirhU/51ACio6D4yDVSwMzuTJXWZoVHbDdINioBwKy5kVmA==", + "requires": { + "@stablelib/constant-time": "^1.0.1", + "@stablelib/hash": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } + }, + "@stablelib/int": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/int/-/int-1.0.1.tgz", + "integrity": "sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w==" + }, + "@stablelib/keyagreement": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/keyagreement/-/keyagreement-1.0.1.tgz", + "integrity": "sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg==", + "requires": { + "@stablelib/bytes": "^1.0.1" + } + }, + "@stablelib/poly1305": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/poly1305/-/poly1305-1.0.1.tgz", + "integrity": "sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA==", + "requires": { + "@stablelib/constant-time": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } + }, + "@stablelib/random": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@stablelib/random/-/random-1.0.2.tgz", + "integrity": "sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w==", + "requires": { + "@stablelib/binary": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } + }, + "@stablelib/sha256": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/sha256/-/sha256-1.0.1.tgz", + "integrity": "sha512-GIIH3e6KH+91FqGV42Kcj71Uefd/QEe7Dy42sBTeqppXV95ggCcxLTk39bEr+lZfJmp+ghsR07J++ORkRELsBQ==", + "requires": { + "@stablelib/binary": "^1.0.1", + "@stablelib/hash": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } + }, + "@stablelib/sha512": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/sha512/-/sha512-1.0.1.tgz", + "integrity": "sha512-13gl/iawHV9zvDKciLo1fQ8Bgn2Pvf7OV6amaRVKiq3pjQ3UmEpXxWiAfV8tYjUpeZroBxtyrwtdooQT/i3hzw==", + "requires": { + "@stablelib/binary": "^1.0.1", + "@stablelib/hash": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } + }, + "@stablelib/wipe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/wipe/-/wipe-1.0.1.tgz", + "integrity": "sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg==" + }, + "@stablelib/x25519": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@stablelib/x25519/-/x25519-1.0.3.tgz", + "integrity": "sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw==", + "requires": { + "@stablelib/keyagreement": "^1.0.1", + "@stablelib/random": "^1.0.2", + "@stablelib/wipe": "^1.0.1" + } + }, + "@swc/core": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.4.1.tgz", + "integrity": "sha512-3y+Y8js+e7BbM16iND+6Rcs3jdiL28q3iVtYsCviYSSpP2uUVKkp5sJnCY4pg8AaVvyN7CGQHO7gLEZQ5ByozQ==", + "dev": true, + "requires": { + "@swc/core-darwin-arm64": "1.4.1", + "@swc/core-darwin-x64": "1.4.1", + "@swc/core-linux-arm-gnueabihf": "1.4.1", + "@swc/core-linux-arm64-gnu": "1.4.1", + "@swc/core-linux-arm64-musl": "1.4.1", + "@swc/core-linux-x64-gnu": "1.4.1", + "@swc/core-linux-x64-musl": "1.4.1", + "@swc/core-win32-arm64-msvc": "1.4.1", + "@swc/core-win32-ia32-msvc": "1.4.1", + "@swc/core-win32-x64-msvc": "1.4.1", + "@swc/counter": "^0.1.2", + "@swc/types": "^0.1.5" + } + }, + "@swc/core-darwin-arm64": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.4.1.tgz", + "integrity": "sha512-ePyfx0348UbR4DOAW24TedeJbafnzha8liXFGuQ4bdXtEVXhLfPngprrxKrAddCuv42F9aTxydlF6+adD3FBhA==", + "dev": true, + "optional": true + }, + "@swc/core-darwin-x64": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.4.1.tgz", + "integrity": "sha512-eLf4JSe6VkCMdDowjM8XNC5rO+BrgfbluEzAVtKR8L2HacNYukieumN7EzpYCi0uF1BYwu1ku6tLyG2r0VcGxA==", + "dev": true, + "optional": true + }, + "@swc/core-linux-arm-gnueabihf": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.4.1.tgz", + "integrity": "sha512-K8VtTLWMw+rkN/jDC9o/Q9SMmzdiHwYo2CfgkwVT29NsGccwmNhCQx6XoYiPKyKGIFKt4tdQnJHKUFzxUqQVtQ==", + "dev": true, + "optional": true + }, + "@swc/core-linux-arm64-gnu": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.4.1.tgz", + "integrity": "sha512-0e8p4g0Bfkt8lkiWgcdiENH3RzkcqKtpRXIVNGOmVc0OBkvc2tpm2WTx/eoCnes2HpTT4CTtR3Zljj4knQ4Fvw==", + "dev": true, + "optional": true + }, + "@swc/core-linux-arm64-musl": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.4.1.tgz", + "integrity": "sha512-b/vWGQo2n7lZVUnSQ7NBq3Qrj85GrAPPiRbpqaIGwOytiFSk8VULFihbEUwDe0rXgY4LDm8z8wkgADZcLnmdUA==", + "dev": true, + "optional": true + }, + "@swc/core-linux-x64-gnu": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.4.1.tgz", + "integrity": "sha512-AFMQlvkKEdNi1Vk2GFTxxJzbICttBsOQaXa98kFTeWTnFFIyiIj2w7Sk8XRTEJ/AjF8ia8JPKb1zddBWr9+bEQ==", + "dev": true, + "optional": true + }, + "@swc/core-linux-x64-musl": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.4.1.tgz", + "integrity": "sha512-QX2MxIECX1gfvUVZY+jk528/oFkS9MAl76e3ZRvG2KC/aKlCQL0KSzcTSm13mOxkDKS30EaGRDRQWNukGpMeRg==", + "dev": true, + "optional": true + }, + "@swc/core-win32-arm64-msvc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.4.1.tgz", + "integrity": "sha512-OklkJYXXI/tntD2zaY8i3iZldpyDw5q+NAP3k9OlQ7wXXf37djRsHLV0NW4+ZNHBjE9xp2RsXJ0jlOJhfgGoFA==", + "dev": true, + "optional": true + }, + "@swc/core-win32-ia32-msvc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.4.1.tgz", + "integrity": "sha512-MBuc3/QfKX9FnLOU7iGN+6yHRTQaPQ9WskiC8s8JFiKQ+7I2p25tay2RplR9dIEEGgVAu6L7auv96LbNTh+FaA==", + "dev": true, + "optional": true + }, + "@swc/core-win32-x64-msvc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.4.1.tgz", + "integrity": "sha512-lu4h4wFBb/bOK6N2MuZwg7TrEpwYXgpQf5R7ObNSXL65BwZ9BG8XRzD+dLJmALu8l5N08rP/TrpoKRoGT4WSxw==", + "dev": true, + "optional": true + }, + "@swc/counter": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.2.tgz", + "integrity": "sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw==", + "dev": true + }, + "@swc/types": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.5.tgz", + "integrity": "sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==", + "dev": true + }, + "@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, + "requires": { + "defer-to-connect": "^2.0.1" + } + }, + "@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "@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==", + "dev": true + }, + "@types/bn.js": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.5.tgz", + "integrity": "sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/chai": { + "version": "4.3.11", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.11.tgz", + "integrity": "sha512-qQR1dr2rGIHYlJulmr8Ioq3De0Le9E4MJ5AiaeAETJJpndT1uUNHsGFK3L/UIu+rbkQSdj8J/w2bCsBZc/Y5fQ==", + "dev": true + }, + "@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==", + "dev": true, + "requires": { + "@types/chai": "*" + } + }, + "@types/concat-stream": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-1.6.1.tgz", + "integrity": "sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "requires": { + "@types/ms": "*" + } + }, + "@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "@types/form-data": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-0.0.33.tgz", + "integrity": "sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@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 + }, + "@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 + }, + "@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 + }, + "@types/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==", + "dev": true + }, + "@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "dev": true + }, + "@types/mocha": { + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.6.tgz", + "integrity": "sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg==", + "dev": true + }, + "@types/ms": { + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" + }, + "@types/node": { + "version": "20.11.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.18.tgz", + "integrity": "sha512-ABT5VWnnYneSBcNWYSCuR05M826RoMyMSGiFivXGx6ZUIsXb9vn4643IEwkg2zbEOSgAiSogtapN2fgc4mAPlw==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "@types/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/prettier": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", + "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", + "dev": true + }, + "@types/prop-types": { + "version": "15.7.11", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", + "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==", + "devOptional": true + }, + "@types/qs": { + "version": "6.9.11", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.11.tgz", + "integrity": "sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==", + "dev": true + }, + "@types/react": { + "version": "18.2.55", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.55.tgz", + "integrity": "sha512-Y2Tz5P4yz23brwm2d7jNon39qoAtMMmalOQv6+fEFt1mT+FcM3D841wDpoUvFXhaYenuROCy3FZYqdTjM7qVyA==", + "devOptional": true, + "requires": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "@types/react-dom": { + "version": "18.2.19", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.19.tgz", + "integrity": "sha512-aZvQL6uUbIJpjZk4U8JZGbau9KDeAwMfmhyWorxgBkqDIEf6ROjRozcmPIicqsUwPUjbkDfHKgGee1Lq65APcA==", + "dev": true, + "requires": { + "@types/react": "*" + } + }, + "@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==", + "dev": true, + "requires": { + "@types/node": "*", + "safe-buffer": "~5.1.1" + } + }, + "@types/scheduler": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", + "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==", + "devOptional": true + }, + "@types/secp256k1": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.6.tgz", + "integrity": "sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/semver": { + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.7.tgz", + "integrity": "sha512-/wdoPq1QqkSj9/QOeKkFquEuPzQbHTWAMPH/PaUMB+JuR31lXhlWXRZ52IpfDYVlDOUBvX09uBrPwxGT1hjNBg==", + "dev": true + }, + "@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==" + }, + "@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@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==", + "dev": true + }, + "@typescript-eslint/eslint-plugin": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.0.1.tgz", + "integrity": "sha512-OLvgeBv3vXlnnJGIAgCLYKjgMEU+wBGj07MQ/nxAaON+3mLzX7mJbhRYrVGiVvFiXtwFlkcBa/TtmglHy0UbzQ==", + "dev": true, + "requires": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "7.0.1", + "@typescript-eslint/type-utils": "7.0.1", + "@typescript-eslint/utils": "7.0.1", + "@typescript-eslint/visitor-keys": "7.0.1", + "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" + }, + "dependencies": { + "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==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/parser": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.0.1.tgz", + "integrity": "sha512-8GcRRZNzaHxKzBPU3tKtFNing571/GwPBeCvmAUw0yBtfE2XVd0zFKJIMSWkHJcPQi0ekxjIts6L/rrZq5cxGQ==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "7.0.1", + "@typescript-eslint/types": "7.0.1", + "@typescript-eslint/typescript-estree": "7.0.1", + "@typescript-eslint/visitor-keys": "7.0.1", + "debug": "^4.3.4" + } + }, + "@typescript-eslint/scope-manager": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.0.1.tgz", + "integrity": "sha512-v7/T7As10g3bcWOOPAcbnMDuvctHzCFYCG/8R4bK4iYzdFqsZTbXGln0cZNVcwQcwewsYU2BJLay8j0/4zOk4w==", + "dev": true, + "requires": { + "@typescript-eslint/types": "7.0.1", + "@typescript-eslint/visitor-keys": "7.0.1" + } + }, + "@typescript-eslint/type-utils": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.0.1.tgz", + "integrity": "sha512-YtT9UcstTG5Yqy4xtLiClm1ZpM/pWVGFnkAa90UfdkkZsR1eP2mR/1jbHeYp8Ay1l1JHPyGvoUYR6o3On5Nhmw==", + "dev": true, + "requires": { + "@typescript-eslint/typescript-estree": "7.0.1", + "@typescript-eslint/utils": "7.0.1", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + } + }, + "@typescript-eslint/types": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.0.1.tgz", + "integrity": "sha512-uJDfmirz4FHib6ENju/7cz9SdMSkeVvJDK3VcMFvf/hAShg8C74FW+06MaQPODHfDJp/z/zHfgawIJRjlu0RLg==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.0.1.tgz", + "integrity": "sha512-SO9wHb6ph0/FN5OJxH4MiPscGah5wjOd0RRpaLvuBv9g8565Fgu0uMySFEPqwPHiQU90yzJ2FjRYKGrAhS1xig==", + "dev": true, + "requires": { + "@typescript-eslint/types": "7.0.1", + "@typescript-eslint/visitor-keys": "7.0.1", + "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" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/utils": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.0.1.tgz", + "integrity": "sha512-oe4his30JgPbnv+9Vef1h48jm0S6ft4mNwi9wj7bX10joGn07QRfqIqFHoMiajrtoU88cIhXf8ahwgrcbNLgPA==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "7.0.1", + "@typescript-eslint/types": "7.0.1", + "@typescript-eslint/typescript-estree": "7.0.1", + "semver": "^7.5.4" + }, + "dependencies": { + "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==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/visitor-keys": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.0.1.tgz", + "integrity": "sha512-hwAgrOyk++RTXrP4KzCg7zB2U0xt7RUU0ZdMSCsqF3eKUwkdXUMyTb0qdCuji7VIbcpG62kKTU9M1J1c9UpFBw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "7.0.1", + "eslint-visitor-keys": "^3.4.1" + } + }, + "@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==", + "dev": true + }, + "@uniswap/lib": { + "version": "4.0.1-alpha", + "resolved": "https://registry.npmjs.org/@uniswap/lib/-/lib-4.0.1-alpha.tgz", + "integrity": "sha512-f6UIliwBbRsgVLxIaBANF6w09tYqc6Y/qXdsrbEmXHyFA7ILiKrIwRFXe1yOg8M3cksgVsO9N7yuL2DdCGQKBA==", + "dev": true + }, + "@uniswap/v2-core": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@uniswap/v2-core/-/v2-core-1.0.1.tgz", + "integrity": "sha512-MtybtkUPSyysqLY2U210NBDeCHX+ltHt3oADGdjqoThZaFRDKwM6k1Nb3F0A3hk5hwuQvytFWhrWHOEq6nVJ8Q==", + "dev": true + }, + "@uniswap/v3-core": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@uniswap/v3-core/-/v3-core-1.0.1.tgz", + "integrity": "sha512-7pVk4hEm00j9tc71Y9+ssYpO6ytkeI0y7WE9P6UcmNzhxPePwyAxImuhVsTqWK9YFvzgtvzJHi64pBl4jUzKMQ==", + "dev": true + }, + "@uniswap/v3-periphery": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/@uniswap/v3-periphery/-/v3-periphery-1.4.4.tgz", + "integrity": "sha512-S4+m+wh8HbWSO3DKk4LwUCPZJTpCugIsHrWR86m/OrUyvSqGDTXKFfc2sMuGXCZrD1ZqO3rhQsKgdWg3Hbb2Kw==", + "dev": true, + "requires": { + "@openzeppelin/contracts": "3.4.2-solc-0.7", + "@uniswap/lib": "^4.0.1-alpha", + "@uniswap/v2-core": "^1.0.1", + "@uniswap/v3-core": "^1.0.0", + "base64-sol": "1.0.1" + }, + "dependencies": { + "@openzeppelin/contracts": { + "version": "3.4.2-solc-0.7", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-3.4.2-solc-0.7.tgz", + "integrity": "sha512-W6QmqgkADuFcTLzHL8vVoNBtkwjvQRpYIAom7KiUNoLKghyx3FgH0GBjt8NRvigV1ZmMOBllvE1By1C+bi8WpA==", + "dev": true + } + } + }, + "@vitejs/plugin-react-swc": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.6.0.tgz", + "integrity": "sha512-XFRbsGgpGxGzEV5i5+vRiro1bwcIaZDIdBRP16qwm+jP68ue/S8FJTBEgOeojtVDYrbSua3XFp71kC8VJE6v+g==", + "dev": true, + "requires": { + "@swc/core": "^1.3.107" + } + }, + "@vue/compiler-core": { + "version": "3.4.19", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.19.tgz", + "integrity": "sha512-gj81785z0JNzRcU0Mq98E56e4ltO1yf8k5PQ+tV/7YHnbZkrM0fyFyuttnN8ngJZjbpofWE/m4qjKBiLl8Ju4w==", + "requires": { + "@babel/parser": "^7.23.9", + "@vue/shared": "3.4.19", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.0.2" + } + }, + "@vue/compiler-dom": { + "version": "3.4.19", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.19.tgz", + "integrity": "sha512-vm6+cogWrshjqEHTzIDCp72DKtea8Ry/QVpQRYoyTIg9k7QZDX6D8+HGURjtmatfgM8xgCFtJJaOlCaRYRK3QA==", + "requires": { + "@vue/compiler-core": "3.4.19", + "@vue/shared": "3.4.19" + } + }, + "@vue/compiler-sfc": { + "version": "3.4.19", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.19.tgz", + "integrity": "sha512-LQ3U4SN0DlvV0xhr1lUsgLCYlwQfUfetyPxkKYu7dkfvx7g3ojrGAkw0AERLOKYXuAGnqFsEuytkdcComei3Yg==", + "requires": { + "@babel/parser": "^7.23.9", + "@vue/compiler-core": "3.4.19", + "@vue/compiler-dom": "3.4.19", + "@vue/compiler-ssr": "3.4.19", + "@vue/shared": "3.4.19", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.6", + "postcss": "^8.4.33", + "source-map-js": "^1.0.2" + } + }, + "@vue/compiler-ssr": { + "version": "3.4.19", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.19.tgz", + "integrity": "sha512-P0PLKC4+u4OMJ8sinba/5Z/iDT84uMRRlrWzadgLA69opCpI1gG4N55qDSC+dedwq2fJtzmGald05LWR5TFfLw==", + "requires": { + "@vue/compiler-dom": "3.4.19", + "@vue/shared": "3.4.19" + } + }, + "@vue/reactivity": { + "version": "3.4.19", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.19.tgz", + "integrity": "sha512-+VcwrQvLZgEclGZRHx4O2XhyEEcKaBi50WbxdVItEezUf4fqRh838Ix6amWTdX0CNb/b6t3Gkz3eOebfcSt+UA==", + "requires": { + "@vue/shared": "3.4.19" + } + }, + "@vue/runtime-core": { + "version": "3.4.19", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.19.tgz", + "integrity": "sha512-/Z3tFwOrerJB/oyutmJGoYbuoadphDcJAd5jOuJE86THNZji9pYjZroQ2NFsZkTxOq0GJbb+s2kxTYToDiyZzw==", + "requires": { + "@vue/reactivity": "3.4.19", + "@vue/shared": "3.4.19" + } + }, + "@vue/runtime-dom": { + "version": "3.4.19", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.19.tgz", + "integrity": "sha512-IyZzIDqfNCF0OyZOauL+F4yzjMPN2rPd8nhqPP2N1lBn3kYqJpPHHru+83Rkvo2lHz5mW+rEeIMEF9qY3PB94g==", + "requires": { + "@vue/runtime-core": "3.4.19", + "@vue/shared": "3.4.19", + "csstype": "^3.1.3" + } + }, + "@vue/server-renderer": { + "version": "3.4.19", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.19.tgz", + "integrity": "sha512-eAj2p0c429RZyyhtMRnttjcSToch+kTWxFPHlzGMkR28ZbF1PDlTcmGmlDxccBuqNd9iOQ7xPRPAGgPVj+YpQw==", + "requires": { + "@vue/compiler-ssr": "3.4.19", + "@vue/shared": "3.4.19" + } + }, + "@vue/shared": { + "version": "3.4.19", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.19.tgz", + "integrity": "sha512-/KliRRHMF6LoiThEy+4c1Z4KB/gbPrGjWwJR+crg2otgrf/egKzRaCPvJ51S5oetgsgXLfc4Rm5ZgrKHZrtMSw==" + }, + "@walletconnect/core": { + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/@walletconnect/core/-/core-2.11.1.tgz", + "integrity": "sha512-T57Vd7YdbHPsy3tthBuwrhaZNafN0+PqjISFRNeJy/bsKdXxpJg2hGSARuOTpCO7V6VcaatqlaSMuG3DrnG5rA==", + "requires": { + "@walletconnect/heartbeat": "1.2.1", + "@walletconnect/jsonrpc-provider": "1.0.13", + "@walletconnect/jsonrpc-types": "1.0.3", + "@walletconnect/jsonrpc-utils": "1.0.8", + "@walletconnect/jsonrpc-ws-connection": "1.0.14", + "@walletconnect/keyvaluestorage": "^1.1.1", + "@walletconnect/logger": "^2.0.1", + "@walletconnect/relay-api": "^1.0.9", + "@walletconnect/relay-auth": "^1.0.4", + "@walletconnect/safe-json": "^1.0.2", + "@walletconnect/time": "^1.0.2", + "@walletconnect/types": "2.11.1", + "@walletconnect/utils": "2.11.1", + "events": "^3.3.0", + "isomorphic-unfetch": "3.1.0", + "lodash.isequal": "4.5.0", + "uint8arrays": "^3.1.0" + } + }, + "@walletconnect/environment": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@walletconnect/environment/-/environment-1.0.1.tgz", + "integrity": "sha512-T426LLZtHj8e8rYnKfzsw1aG6+M0BT1ZxayMdv/p8yM0MU+eJDISqNY3/bccxRr4LrF9csq02Rhqt08Ibl0VRg==", + "requires": { + "tslib": "1.14.1" + } + }, + "@walletconnect/ethereum-provider": { + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/@walletconnect/ethereum-provider/-/ethereum-provider-2.11.1.tgz", + "integrity": "sha512-UfQH0ho24aa2M1xYmanbJv2ggQPebKmQytp2j20QEvURJ2R0v7YKWZ+0PfwOs6o6cuGw6gGxy/0WQXQRZSAsfg==", + "requires": { + "@walletconnect/jsonrpc-http-connection": "^1.0.7", + "@walletconnect/jsonrpc-provider": "^1.0.13", + "@walletconnect/jsonrpc-types": "^1.0.3", + "@walletconnect/jsonrpc-utils": "^1.0.8", + "@walletconnect/modal": "^2.6.2", + "@walletconnect/sign-client": "2.11.1", + "@walletconnect/types": "2.11.1", + "@walletconnect/universal-provider": "2.11.1", + "@walletconnect/utils": "2.11.1", + "events": "^3.3.0" + } + }, + "@walletconnect/events": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@walletconnect/events/-/events-1.0.1.tgz", + "integrity": "sha512-NPTqaoi0oPBVNuLv7qPaJazmGHs5JGyO8eEAk5VGKmJzDR7AHzD4k6ilox5kxk1iwiOnFopBOOMLs86Oa76HpQ==", + "requires": { + "keyvaluestorage-interface": "^1.0.0", + "tslib": "1.14.1" + } + }, + "@walletconnect/heartbeat": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@walletconnect/heartbeat/-/heartbeat-1.2.1.tgz", + "integrity": "sha512-yVzws616xsDLJxuG/28FqtZ5rzrTA4gUjdEMTbWB5Y8V1XHRmqq4efAxCw5ie7WjbXFSUyBHaWlMR+2/CpQC5Q==", + "requires": { + "@walletconnect/events": "^1.0.1", + "@walletconnect/time": "^1.0.2", + "tslib": "1.14.1" + } + }, + "@walletconnect/jsonrpc-http-connection": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-http-connection/-/jsonrpc-http-connection-1.0.7.tgz", + "integrity": "sha512-qlfh8fCfu8LOM9JRR9KE0s0wxP6ZG9/Jom8M0qsoIQeKF3Ni0FyV4V1qy/cc7nfI46SLQLSl4tgWSfLiE1swyQ==", + "requires": { + "@walletconnect/jsonrpc-utils": "^1.0.6", + "@walletconnect/safe-json": "^1.0.1", + "cross-fetch": "^3.1.4", + "tslib": "1.14.1" + }, + "dependencies": { + "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==", + "requires": { + "node-fetch": "^2.6.12" + } + } + } + }, + "@walletconnect/jsonrpc-provider": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-provider/-/jsonrpc-provider-1.0.13.tgz", + "integrity": "sha512-K73EpThqHnSR26gOyNEL+acEex3P7VWZe6KE12ZwKzAt2H4e5gldZHbjsu2QR9cLeJ8AXuO7kEMOIcRv1QEc7g==", + "requires": { + "@walletconnect/jsonrpc-utils": "^1.0.8", + "@walletconnect/safe-json": "^1.0.2", + "tslib": "1.14.1" + } + }, + "@walletconnect/jsonrpc-types": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-types/-/jsonrpc-types-1.0.3.tgz", + "integrity": "sha512-iIQ8hboBl3o5ufmJ8cuduGad0CQm3ZlsHtujv9Eu16xq89q+BG7Nh5VLxxUgmtpnrePgFkTwXirCTkwJH1v+Yw==", + "requires": { + "keyvaluestorage-interface": "^1.0.0", + "tslib": "1.14.1" + } + }, + "@walletconnect/jsonrpc-utils": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-utils/-/jsonrpc-utils-1.0.8.tgz", + "integrity": "sha512-vdeb03bD8VzJUL6ZtzRYsFMq1eZQcM3EAzT0a3st59dyLfJ0wq+tKMpmGH7HlB7waD858UWgfIcudbPFsbzVdw==", + "requires": { + "@walletconnect/environment": "^1.0.1", + "@walletconnect/jsonrpc-types": "^1.0.3", + "tslib": "1.14.1" + } + }, + "@walletconnect/jsonrpc-ws-connection": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-ws-connection/-/jsonrpc-ws-connection-1.0.14.tgz", + "integrity": "sha512-Jsl6fC55AYcbkNVkwNM6Jo+ufsuCQRqViOQ8ZBPH9pRREHH9welbBiszuTLqEJiQcO/6XfFDl6bzCJIkrEi8XA==", + "requires": { + "@walletconnect/jsonrpc-utils": "^1.0.6", + "@walletconnect/safe-json": "^1.0.2", + "events": "^3.3.0", + "ws": "^7.5.1" + } + }, + "@walletconnect/keyvaluestorage": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.1.1.tgz", + "integrity": "sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA==", + "requires": { + "@walletconnect/safe-json": "^1.0.1", + "idb-keyval": "^6.2.1", + "unstorage": "^1.9.0" + } + }, + "@walletconnect/logger": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@walletconnect/logger/-/logger-2.0.1.tgz", + "integrity": "sha512-SsTKdsgWm+oDTBeNE/zHxxr5eJfZmE9/5yp/Ku+zJtcTAjELb3DXueWkDXmE9h8uHIbJzIb5wj5lPdzyrjT6hQ==", + "requires": { + "pino": "7.11.0", + "tslib": "1.14.1" + } + }, + "@walletconnect/modal": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@walletconnect/modal/-/modal-2.6.2.tgz", + "integrity": "sha512-eFopgKi8AjKf/0U4SemvcYw9zlLpx9njVN8sf6DAkowC2Md0gPU/UNEbH1Wwj407pEKnEds98pKWib1NN1ACoA==", + "requires": { + "@walletconnect/modal-core": "2.6.2", + "@walletconnect/modal-ui": "2.6.2" + } + }, + "@walletconnect/modal-core": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@walletconnect/modal-core/-/modal-core-2.6.2.tgz", + "integrity": "sha512-cv8ibvdOJQv2B+nyxP9IIFdxvQznMz8OOr/oR/AaUZym4hjXNL/l1a2UlSQBXrVjo3xxbouMxLb3kBsHoYP2CA==", + "requires": { + "valtio": "1.11.2" + } + }, + "@walletconnect/modal-ui": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@walletconnect/modal-ui/-/modal-ui-2.6.2.tgz", + "integrity": "sha512-rbdstM1HPGvr7jprQkyPggX7rP4XiCG85ZA+zWBEX0dVQg8PpAgRUqpeub4xQKDgY7pY/xLRXSiCVdWGqvG2HA==", + "requires": { + "@walletconnect/modal-core": "2.6.2", + "lit": "2.8.0", + "motion": "10.16.2", + "qrcode": "1.5.3" + } + }, + "@walletconnect/relay-api": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@walletconnect/relay-api/-/relay-api-1.0.9.tgz", + "integrity": "sha512-Q3+rylJOqRkO1D9Su0DPE3mmznbAalYapJ9qmzDgK28mYF9alcP3UwG/og5V7l7CFOqzCLi7B8BvcBUrpDj0Rg==", + "requires": { + "@walletconnect/jsonrpc-types": "^1.0.2", + "tslib": "1.14.1" + } + }, + "@walletconnect/relay-auth": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@walletconnect/relay-auth/-/relay-auth-1.0.4.tgz", + "integrity": "sha512-kKJcS6+WxYq5kshpPaxGHdwf5y98ZwbfuS4EE/NkQzqrDFm5Cj+dP8LofzWvjrrLkZq7Afy7WrQMXdLy8Sx7HQ==", + "requires": { + "@stablelib/ed25519": "^1.0.2", + "@stablelib/random": "^1.0.1", + "@walletconnect/safe-json": "^1.0.1", + "@walletconnect/time": "^1.0.2", + "tslib": "1.14.1", + "uint8arrays": "^3.0.0" + } + }, + "@walletconnect/safe-json": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@walletconnect/safe-json/-/safe-json-1.0.2.tgz", + "integrity": "sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==", + "requires": { + "tslib": "1.14.1" + } + }, + "@walletconnect/sign-client": { + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/@walletconnect/sign-client/-/sign-client-2.11.1.tgz", + "integrity": "sha512-s3oKSx6/F5X2WmkV1jfJImBFACf9Km5HpTb+n5q+mobJVpUQw/clvoVyIrNNppLhm1V1S/ylHXh0qCrDppDpCA==", + "requires": { + "@walletconnect/core": "2.11.1", + "@walletconnect/events": "^1.0.1", + "@walletconnect/heartbeat": "1.2.1", + "@walletconnect/jsonrpc-utils": "1.0.8", + "@walletconnect/logger": "^2.0.1", + "@walletconnect/time": "^1.0.2", + "@walletconnect/types": "2.11.1", + "@walletconnect/utils": "2.11.1", + "events": "^3.3.0" + } + }, + "@walletconnect/time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@walletconnect/time/-/time-1.0.2.tgz", + "integrity": "sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g==", + "requires": { + "tslib": "1.14.1" + } + }, + "@walletconnect/types": { + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/@walletconnect/types/-/types-2.11.1.tgz", + "integrity": "sha512-UbdbX+d6MOK0AXKxt5imV3KvAcLVpZUHylaRDIP5ffwVylM/p4DHnKppil1Qq5N+IGDr3RsUwLGFkKjqsQYRKw==", + "requires": { + "@walletconnect/events": "^1.0.1", + "@walletconnect/heartbeat": "1.2.1", + "@walletconnect/jsonrpc-types": "1.0.3", + "@walletconnect/keyvaluestorage": "^1.1.1", + "@walletconnect/logger": "^2.0.1", + "events": "^3.3.0" + } + }, + "@walletconnect/universal-provider": { + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/@walletconnect/universal-provider/-/universal-provider-2.11.1.tgz", + "integrity": "sha512-BJvPYByIfbBYF4x8mqDV79ebQX0tD54pp8itsqrHWn0qKZeJyIH8sQ69yY0GnbJrzoFS3ZLULdC0yDxWDeuRGw==", + "requires": { + "@walletconnect/jsonrpc-http-connection": "^1.0.7", + "@walletconnect/jsonrpc-provider": "1.0.13", + "@walletconnect/jsonrpc-types": "^1.0.2", + "@walletconnect/jsonrpc-utils": "^1.0.7", + "@walletconnect/logger": "^2.0.1", + "@walletconnect/sign-client": "2.11.1", + "@walletconnect/types": "2.11.1", + "@walletconnect/utils": "2.11.1", + "events": "^3.3.0" + } + }, + "@walletconnect/utils": { + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/@walletconnect/utils/-/utils-2.11.1.tgz", + "integrity": "sha512-wRFDHN86dZ05mCET1H3912odIeQa8j7cZKxl1FlWRpV2YsILj9HCYSX6Uq2brwO02Kv2vryke44G1r8XI/LViA==", + "requires": { + "@stablelib/chacha20poly1305": "1.0.1", + "@stablelib/hkdf": "1.0.1", + "@stablelib/random": "^1.0.2", + "@stablelib/sha256": "1.0.1", + "@stablelib/x25519": "^1.0.3", + "@walletconnect/relay-api": "^1.0.9", + "@walletconnect/safe-json": "^1.0.2", + "@walletconnect/time": "^1.0.2", + "@walletconnect/types": "2.11.1", + "@walletconnect/window-getters": "^1.0.1", + "@walletconnect/window-metadata": "^1.0.1", + "detect-browser": "5.3.0", + "query-string": "7.1.3", + "uint8arrays": "^3.1.0" + } + }, + "@walletconnect/window-getters": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@walletconnect/window-getters/-/window-getters-1.0.1.tgz", + "integrity": "sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q==", + "requires": { + "tslib": "1.14.1" + } + }, + "@walletconnect/window-metadata": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@walletconnect/window-metadata/-/window-metadata-1.0.1.tgz", + "integrity": "sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA==", + "requires": { + "@walletconnect/window-getters": "^1.0.1", + "tslib": "1.14.1" + } + }, + "@web3modal/common": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@web3modal/common/-/common-4.0.5.tgz", + "integrity": "sha512-RQKyqJi3T+Ti57XEkb/4dYbrWMdGduZUacb1k+5H7GU4+Ev3HXjOdp2bcPqfEyr1DYKD/IsW/q/0oqXatwEeUQ==", + "requires": { + "dayjs": "1.11.10" + } + }, + "@web3modal/core": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@web3modal/core/-/core-4.0.5.tgz", + "integrity": "sha512-1QQHa8aNF1KX6ZAKBUU6UE4kwIa9x3FWX7Ak9eER/bTvmgyu2abJe3IwWPEt++nAjbvMKbIO6cATUXfSVk1Zyw==", + "requires": { + "@web3modal/common": "4.0.5", + "@web3modal/wallet": "4.0.5", + "valtio": "1.11.2" + } + }, + "@web3modal/polyfills": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@web3modal/polyfills/-/polyfills-4.0.5.tgz", + "integrity": "sha512-2jnu4CEVnhatq/Bzyk4IgkPVGY3GgD13hZAPCx8mztZzPkrbKrSKfuq2KTVuTjw392DPp7EMmxmm8SSFnjwzuA==", + "requires": { + "buffer": "6.0.3" + } + }, + "@web3modal/scaffold": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@web3modal/scaffold/-/scaffold-4.0.5.tgz", + "integrity": "sha512-K2j/fmUAPyZ6M5DvOAf88qcubrB//ulkOIS1ZX7R7g8isp9z7AtWn2c0b/O+l9CEeiKn0ZSIa7VF7GrUFDZ8vQ==", + "requires": { + "@web3modal/common": "4.0.5", + "@web3modal/core": "4.0.5", + "@web3modal/ui": "4.0.5", + "lit": "3.1.0" + }, + "dependencies": { + "@lit/reactive-element": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.0.4.tgz", + "integrity": "sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==", + "requires": { + "@lit-labs/ssr-dom-shim": "^1.2.0" + } + }, + "lit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lit/-/lit-3.1.0.tgz", + "integrity": "sha512-rzo/hmUqX8zmOdamDAeydfjsGXbbdtAFqMhmocnh2j9aDYqbu0fjXygjCa0T99Od9VQ/2itwaGrjZz/ZELVl7w==", + "requires": { + "@lit/reactive-element": "^2.0.0", + "lit-element": "^4.0.0", + "lit-html": "^3.1.0" + } + }, + "lit-element": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.0.4.tgz", + "integrity": "sha512-98CvgulX6eCPs6TyAIQoJZBCQPo80rgXR+dVBs61cstJXqtI+USQZAbA4gFHh6L/mxBx9MrgPLHLsUgDUHAcCQ==", + "requires": { + "@lit-labs/ssr-dom-shim": "^1.2.0", + "@lit/reactive-element": "^2.0.4", + "lit-html": "^3.1.2" + } + }, + "lit-html": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.1.2.tgz", + "integrity": "sha512-3OBZSUrPnAHoKJ9AMjRL/m01YJxQMf+TMHanNtTHG68ubjnZxK0RFl102DPzsw4mWnHibfZIBJm3LWCZ/LmMvg==", + "requires": { + "@types/trusted-types": "^2.0.2" + } + } + } + }, + "@web3modal/scaffold-react": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@web3modal/scaffold-react/-/scaffold-react-4.0.5.tgz", + "integrity": "sha512-4JQhLHH+IRjpsRbVtt2skaxzTKYqpLTr7zTMZyTECgOXpWyOtTCN0vgc2YatWbct972sZlJ0V8llIwDiGodHgA==", + "requires": { + "@web3modal/scaffold": "4.0.5" + } + }, + "@web3modal/scaffold-utils": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@web3modal/scaffold-utils/-/scaffold-utils-4.0.5.tgz", + "integrity": "sha512-FUjtpnf22TEgYpsG6oom1YtyDeydkWFmdXxf+xbnp+SlxuMpff9iF22bWIw1uM5eZYFQH3nIyDozCbOD/grQ+Q==", + "requires": { + "@web3modal/polyfills": "4.0.5", + "@web3modal/scaffold": "4.0.5", + "valtio": "1.11.2" + } + }, + "@web3modal/scaffold-vue": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@web3modal/scaffold-vue/-/scaffold-vue-4.0.5.tgz", + "integrity": "sha512-FrFDoqGRATPfNYdYug6vX0g79HdL8u08QcC3ZTix1yv2iYz424X7tSm+zQ0FBh7DnZPMYIximSNy1jrEw1wPoQ==", + "requires": { + "@web3modal/scaffold": "4.0.5" + } + }, + "@web3modal/siwe": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@web3modal/siwe/-/siwe-4.0.5.tgz", + "integrity": "sha512-JxYoM0rvgekpvd2Wyw1mtq7mbv8JBsbP22K5Evf4ZUupVAgoeNHDGCBKK8nKwdwMuc2AfsAcdNqx+rwS6N9WLQ==", + "optional": true, + "requires": { + "@web3modal/core": "4.0.5", + "@web3modal/scaffold-utils": "4.0.5", + "react": ">=17", + "react-dom": ">=17", + "vue": ">=3" + } + }, + "@web3modal/ui": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@web3modal/ui/-/ui-4.0.5.tgz", + "integrity": "sha512-IGNzHtRWZjbjv/8s7kbVknrlV/R0OrVTmlrQMa4H16kEuInWBZkKjfJ6zlqEKNrhppJ01Ft11h4d3NWscu47fg==", + "requires": { + "lit": "3.1.0", + "qrcode": "1.5.3" + }, + "dependencies": { + "@lit/reactive-element": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.0.4.tgz", + "integrity": "sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==", + "requires": { + "@lit-labs/ssr-dom-shim": "^1.2.0" + } + }, + "lit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lit/-/lit-3.1.0.tgz", + "integrity": "sha512-rzo/hmUqX8zmOdamDAeydfjsGXbbdtAFqMhmocnh2j9aDYqbu0fjXygjCa0T99Od9VQ/2itwaGrjZz/ZELVl7w==", + "requires": { + "@lit/reactive-element": "^2.0.0", + "lit-element": "^4.0.0", + "lit-html": "^3.1.0" + } + }, + "lit-element": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.0.4.tgz", + "integrity": "sha512-98CvgulX6eCPs6TyAIQoJZBCQPo80rgXR+dVBs61cstJXqtI+USQZAbA4gFHh6L/mxBx9MrgPLHLsUgDUHAcCQ==", + "requires": { + "@lit-labs/ssr-dom-shim": "^1.2.0", + "@lit/reactive-element": "^2.0.4", + "lit-html": "^3.1.2" + } + }, + "lit-html": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.1.2.tgz", + "integrity": "sha512-3OBZSUrPnAHoKJ9AMjRL/m01YJxQMf+TMHanNtTHG68ubjnZxK0RFl102DPzsw4mWnHibfZIBJm3LWCZ/LmMvg==", + "requires": { + "@types/trusted-types": "^2.0.2" + } + } + } + }, + "@web3modal/wallet": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@web3modal/wallet/-/wallet-4.0.5.tgz", + "integrity": "sha512-rw9LtXX7azOjpV/WWh2KRG4zlvXW+tE+QRxl0b12S4WgQXLoteqzAFiumvg/H4fBf73WFJ6Bos3g7Mf4M8Dp6A==", + "requires": { + "zod": "3.22.4" + } + }, + "abbrev": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", + "integrity": "sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==", + "dev": true + }, + "abitype": { + "version": "0.8.11", + "resolved": "https://registry.npmjs.org/abitype/-/abitype-0.8.11.tgz", + "integrity": "sha512-bM4v2dKvX08sZ9IU38IN5BKmN+ZkOSd2oI4a9f0ejHYZQYV6cDr7j+d95ga0z2XHG36Y4jzoG5Z7qDqxp7fi/A==", + "requires": {} + }, + "acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==" + }, + "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, + "requires": {} + }, + "acorn-walk": { + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.1.tgz", + "integrity": "sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==", + "dev": true + }, + "adm-zip": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", + "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", + "dev": true + }, + "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==" + }, + "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==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "alchemy-sdk": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/alchemy-sdk/-/alchemy-sdk-3.1.2.tgz", + "integrity": "sha512-xpCgQRLektp6imKdGdHyuVHvbMGpaSe22+qvg9jjGx0Wwkh0XgPzSfKwAzFDlkCGMMdazhKCsHu22XP0xh1noQ==", + "requires": { + "@ethersproject/abi": "^5.7.0", + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/contracts": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/providers": "^5.7.0", + "@ethersproject/units": "^5.7.0", + "@ethersproject/wallet": "^5.7.0", + "@ethersproject/web": "^5.7.0", + "axios": "^1.6.5", + "sturdy-websocket": "^0.2.1", + "websocket": "^1.0.34" + }, + "dependencies": { + "@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==", + "requires": { + "@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" + } + }, + "@ethersproject/hdnode": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", + "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", + "requires": { + "@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" + } + }, + "@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==", + "requires": { + "@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" + } + }, + "@ethersproject/pbkdf2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", + "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/sha2": "^5.7.0" + } + }, + "@ethersproject/units": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", + "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@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==", + "requires": { + "@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" + } + }, + "@ethersproject/wordlists": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", + "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", + "requires": { + "@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" + } + }, + "aes-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==" + }, + "axios": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", + "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", + "requires": { + "follow-redirects": "^1.15.4", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + } + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==", + "dev": true, + "optional": true, + "peer": true + }, + "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, + "requires": { + "string-width": "^4.1.0" + } + }, + "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==", + "dev": true + }, + "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, + "requires": { + "type-fest": "^0.21.3" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "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==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "antlr4": { + "version": "4.13.1", + "resolved": "https://registry.npmjs.org/antlr4/-/antlr4-4.13.1.tgz", + "integrity": "sha512-kiXTspaRYvnIArgE97z5YVVf/cDVQABr3abFRR6mE7yesLMkgu4ujuyV/sgxafQ8wgve0DJQUJ38Z8tkgA2izA==", + "dev": true + }, + "antlr4ts": { + "version": "0.5.0-alpha.4", + "resolved": "https://registry.npmjs.org/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz", + "integrity": "sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==", + "dev": true + }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "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 + }, + "array-back": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", + "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", + "dev": true + }, + "array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + } + }, + "array-includes": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", + "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-string": "^1.0.7" + } + }, + "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 + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "dev": true + }, + "array.prototype.findlastindex": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", + "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" + } + }, + "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, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + } + }, + "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, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + } + }, + "arraybuffer.prototype.slice": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", + "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", + "dev": true, + "requires": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" + } + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true + }, + "asn1js": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.5.tgz", + "integrity": "sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ==", + "dev": true, + "requires": { + "pvtsutils": "^1.3.2", + "pvutils": "^1.1.3", + "tslib": "^2.4.0" + }, + "dependencies": { + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + } + } + }, + "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 + }, + "ast-parents": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/ast-parents/-/ast-parents-0.0.1.tgz", + "integrity": "sha512-XHusKxKz3zoYk1ic8Un640joHbFMhbqneyoZfoKnEGtf2ey9Uh/IdpcQplODdO/kENaMIWsD0nJm4+wX3UNLHA==", + "dev": true + }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==", + "dev": true + }, + "async-mutex": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.2.6.tgz", + "integrity": "sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw==", + "requires": { + "tslib": "^2.0.0" + }, + "dependencies": { + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + } + } + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "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==", + "dev": true + }, + "atomic-sleep": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", + "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==" + }, + "available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true + }, + "axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "dev": true, + "requires": { + "follow-redirects": "^1.14.0" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "base-x": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", + "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "base64-sol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/base64-sol/-/base64-sol-1.0.1.tgz", + "integrity": "sha512-ld3cCNMeXt4uJXmLZBHFGMvVpK9KsLVEhPpFRXnvSVAqABKbuNZg/+dsq3NuM+wxFLb/UrVkz7m1ciWmkMfTbg==", + "dev": true + }, + "bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" + }, + "bigint-crypto-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/bigint-crypto-utils/-/bigint-crypto-utils-3.3.0.tgz", + "integrity": "sha512-jOTSb+drvEDxEq6OuUybOAv/xxoh3cuYRUIPyu8sSHQNKM303UQ2R1DAo45o1AkcIXw6fzbaFI1+xGGdaXs2lg==", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" + }, + "blakejs": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", + "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==", + "dev": true + }, + "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==" + }, + "boxen": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", + "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", + "dev": true, + "requires": { + "ansi-align": "^3.0.0", + "camelcase": "^6.2.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.1", + "string-width": "^4.2.2", + "type-fest": "^0.20.2", + "widest-line": "^3.1.0", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "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==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + }, + "type-fest": { + "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 + } + } + }, + "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, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" + }, + "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 + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "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" + } + }, + "bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dev": true, + "requires": { + "base-x": "^3.0.2" + } + }, + "bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "dev": true, + "requires": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "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==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "dev": true + }, + "bufferutil": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.8.tgz", + "integrity": "sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==", + "requires": { + "node-gyp-build": "^4.3.0" + } + }, + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + }, + "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 + }, + "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, + "requires": { + "@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" + } + }, + "call-bind": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "dev": true, + "requires": { + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "dev": true + }, + "cbor": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/cbor/-/cbor-9.0.2.tgz", + "integrity": "sha512-JPypkxsB10s9QOWwa6zwPzqE1Md3vqpPc+cai4sAecuCsRyAtAl/pMyhPlMbT/xtPnm2dznJZYRLui57qiRhaQ==", + "dev": true, + "requires": { + "nofilter": "^3.1.0" + } + }, + "cbor-extract": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cbor-extract/-/cbor-extract-2.2.0.tgz", + "integrity": "sha512-Ig1zM66BjLfTXpNgKpvBePq271BPOvu8MR0Jl080yG7Jsl+wAZunfrwiwA+9ruzm/WEdIV5QF/bjDZTqyAIVHA==", + "dev": true, + "optional": true, + "requires": { + "@cbor-extract/cbor-extract-darwin-arm64": "2.2.0", + "@cbor-extract/cbor-extract-darwin-x64": "2.2.0", + "@cbor-extract/cbor-extract-linux-arm": "2.2.0", + "@cbor-extract/cbor-extract-linux-arm64": "2.2.0", + "@cbor-extract/cbor-extract-linux-x64": "2.2.0", + "@cbor-extract/cbor-extract-win32-x64": "2.2.0", + "node-gyp-build-optional-packages": "5.1.1" + } + }, + "cbor-x": { + "version": "1.5.7", + "resolved": "https://registry.npmjs.org/cbor-x/-/cbor-x-1.5.7.tgz", + "integrity": "sha512-i6JEJLOXTK++wCpBI1EZUCE5tXxkA1N7Y0NZbPJ0XBcz0vRQlWESOhxb6EDST7SgP2uUf81UnB2Qv3VcxKvjoA==", + "dev": true, + "requires": { + "cbor-extract": "^2.2.0" + } + }, + "chai": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.0.tgz", + "integrity": "sha512-x9cHNq1uvkCdU+5xTkNh5WtgD4e4yDFCsp9jVc7N7qVeKeftv3gO/ZrviX5d+3ZfxdYnZXZYujjRInu1RogU6A==", + "dev": true, + "requires": { + "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.0.8" + } + }, + "chai-as-promised": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", + "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", + "dev": true, + "requires": { + "check-error": "^1.0.2" + } + }, + "chalk": { + "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, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", + "dev": true + }, + "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, + "requires": { + "get-func-name": "^2.0.2" + } + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.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" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "citty": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.6.tgz", + "integrity": "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==", + "requires": { + "consola": "^3.2.3" + } + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, + "cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "dev": true + }, + "cli-table3": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz", + "integrity": "sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==", + "dev": true, + "requires": { + "colors": "^1.1.2", + "object-assign": "^4.1.0", + "string-width": "^2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true + }, + "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==", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "clipboardy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-4.0.0.tgz", + "integrity": "sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w==", + "requires": { + "execa": "^8.0.1", + "is-wsl": "^3.1.0", + "is64bit": "^2.0.0" + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "clsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", + "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==" + }, + "cluster-key-slot": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", + "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==" + }, + "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==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "array-back": "^3.1.0", + "find-replace": "^3.0.0", + "lodash.camelcase": "^4.3.0", + "typical": "^4.0.0" + } + }, + "command-line-usage": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.3.tgz", + "integrity": "sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==", + "dev": true, + "requires": { + "array-back": "^4.0.2", + "chalk": "^2.4.2", + "table-layout": "^1.0.2", + "typical": "^5.2.0" + }, + "dependencies": { + "array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "dev": true + }, + "typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true + } + } + }, + "commander": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", + "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "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" + } + }, + "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==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "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, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "consola": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.2.3.tgz", + "integrity": "sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==" + }, + "cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true + }, + "cookie-es": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-1.0.0.tgz", + "integrity": "sha512-mWYvfOLrfEc996hlKcdABeIiPHUPC6DM2QYZdGGOvhOTbA3tjm2eBwqlJpoFdjC89NI4Qt6h0Pu06Mp+1Pj5OQ==" + }, + "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==", + "dev": true + }, + "cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dev": true, + "requires": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + } + }, + "crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==" + }, + "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==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "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==", + "dev": true, + "requires": { + "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" + } + }, + "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==", + "dev": true + }, + "cross-fetch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", + "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", + "dev": true, + "requires": { + "node-fetch": "^2.6.12" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "crossws": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/crossws/-/crossws-0.1.1.tgz", + "integrity": "sha512-c9c/o7bS3OjsdpSkvexpka0JNlesBF2JU9B2V1yNsYGwRbAafxhJQ7VI9b48D5bpONz/oxbPGMzBojy9sXoQIQ==" + }, + "crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", + "dev": true + }, + "csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "dayjs": { + "version": "1.11.10", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", + "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==" + }, + "death": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/death/-/death-1.1.0.tgz", + "integrity": "sha512-vsV6S4KVHvTGxbEcij7hkWRv0It+sGGWVOM67dQde/o5Xjnr+KmLjxWJii2uEObIrt1CcM9w0Yaovx+iOlIL+w==", + "dev": true + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==" + }, + "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==", + "dev": true, + "requires": { + "mimic-response": "^3.1.0" + }, + "dependencies": { + "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==", + "dev": true + } + } + }, + "deep-eql": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "dev": true, + "requires": { + "type-detect": "^4.0.0" + } + }, + "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==", + "dev": true + }, + "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 + }, + "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 + }, + "define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + } + }, + "define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "requires": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "defu": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", + "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==" + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, + "denque": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", + "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==" + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "destr": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.2.tgz", + "integrity": "sha512-65AlobnZMiCET00KaFFjUefxDX0khFA/E4myqZ7a6Sq1yZtR8+FVIvilVX66vF2uobSumxooYZChiRPCKNqhmg==" + }, + "detect-browser": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/detect-browser/-/detect-browser-5.3.0.tgz", + "integrity": "sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==" + }, + "detect-libc": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", + "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", + "dev": true, + "optional": true + }, + "diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true + }, + "difflib": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/difflib/-/difflib-0.2.4.tgz", + "integrity": "sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w==", + "dev": true, + "requires": { + "heap": ">= 0.2.0" + } + }, + "dijkstrajs": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.3.tgz", + "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==" + }, + "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, + "requires": { + "path-type": "^4.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dotenv": { + "version": "16.4.4", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.4.tgz", + "integrity": "sha512-XvPXc8XAQThSjAbY6cQ/9PcBXmFoWuw1sQ3b8HqUCR6ziGXjkTi//kB9SWa2UwqlgdAIuRqAa/9hVljzPehbYg==" + }, + "duplexify": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz", + "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==", + "requires": { + "end-of-stream": "^1.4.1", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1", + "stream-shift": "^1.0.0" + } + }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "requires": { + "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" + }, + "dependencies": { + "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==" + } + } + }, + "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==" + }, + "encode-utf8": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", + "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==" + }, + "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==", + "requires": { + "once": "^1.4.0" + } + }, + "enquirer": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", + "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1", + "strip-ansi": "^6.0.1" + } + }, + "entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==" + }, + "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 + }, + "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, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.22.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", + "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", + "dev": true, + "requires": { + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.2", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.5", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.2", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.12", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "safe-array-concat": "^1.0.1", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.13" + } + }, + "es-set-tostringtag": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", + "dev": true, + "requires": { + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" + } + }, + "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, + "requires": { + "hasown": "^2.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "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==", + "requires": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "esniff": "^2.0.1", + "next-tick": "^1.1.0" + } + }, + "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==", + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "esbuild": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", + "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", + "dev": true, + "requires": { + "@esbuild/aix-ppc64": "0.19.12", + "@esbuild/android-arm": "0.19.12", + "@esbuild/android-arm64": "0.19.12", + "@esbuild/android-x64": "0.19.12", + "@esbuild/darwin-arm64": "0.19.12", + "@esbuild/darwin-x64": "0.19.12", + "@esbuild/freebsd-arm64": "0.19.12", + "@esbuild/freebsd-x64": "0.19.12", + "@esbuild/linux-arm": "0.19.12", + "@esbuild/linux-arm64": "0.19.12", + "@esbuild/linux-ia32": "0.19.12", + "@esbuild/linux-loong64": "0.19.12", + "@esbuild/linux-mips64el": "0.19.12", + "@esbuild/linux-ppc64": "0.19.12", + "@esbuild/linux-riscv64": "0.19.12", + "@esbuild/linux-s390x": "0.19.12", + "@esbuild/linux-x64": "0.19.12", + "@esbuild/netbsd-x64": "0.19.12", + "@esbuild/openbsd-x64": "0.19.12", + "@esbuild/sunos-x64": "0.19.12", + "@esbuild/win32-arm64": "0.19.12", + "@esbuild/win32-ia32": "0.19.12", + "@esbuild/win32-x64": "0.19.12" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "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 + }, + "escodegen": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", + "integrity": "sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A==", + "dev": true, + "requires": { + "esprima": "^2.7.1", + "estraverse": "^1.9.1", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.2.0" + }, + "dependencies": { + "estraverse": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", + "integrity": "sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA==", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true + }, + "source-map": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", + "integrity": "sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "amdefine": ">=0.0.4" + } + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + } + } + }, + "eslint": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.56.0", + "@humanwhocodes/config-array": "^0.11.13", + "@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" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "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==", + "dev": true + }, + "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 + }, + "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, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "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, + "requires": { + "is-glob": "^4.0.3" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "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, + "requires": { + "p-locate": "^5.0.0" + } + }, + "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, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "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, + "requires": { + "p-limit": "^3.0.2" + } + }, + "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 + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "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, + "requires": {} + }, + "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, + "requires": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "requires": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + } + } + }, + "eslint-module-utils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", + "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", + "dev": true, + "requires": { + "debug": "^3.2.7" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "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, + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + } + } + }, + "eslint-plugin-no-only-tests": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-no-only-tests/-/eslint-plugin-no-only-tests-3.1.0.tgz", + "integrity": "sha512-Lf4YW/bL6Un1R6A76pRZyE1dl1vr31G/ev8UzIc/geCgFWyrKil8hVjYqWVKGB/UIGmb6Slzs9T0wNezdSVegw==", + "dev": true + }, + "eslint-plugin-prettier": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz", + "integrity": "sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==", + "dev": true, + "requires": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.8.6" + } + }, + "eslint-plugin-react-hooks": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "dev": true, + "requires": {} + }, + "eslint-plugin-react-refresh": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.5.tgz", + "integrity": "sha512-D53FYKJa+fDmZMtriODxvhwrO+IOqrxoEo21gMA0sjHdU6dPVH4OhyFip9ypl8HOF5RV5KdTo+rBQLvnY2cO8w==", + "dev": true, + "requires": {} + }, + "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, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "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 + }, + "esniff": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", + "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", + "requires": { + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "event-emitter": "^0.3.5", + "type": "^2.7.2" + }, + "dependencies": { + "type": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" + } + } + }, + "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, + "requires": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + } + }, + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==", + "dev": true + }, + "esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + } + }, + "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, + "requires": { + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "eth-block-tracker": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/eth-block-tracker/-/eth-block-tracker-7.1.0.tgz", + "integrity": "sha512-8YdplnuE1IK4xfqpf4iU7oBxnOYAc35934o083G8ao+8WM8QQtt/mVlAY6yIAdY1eMeLqg4Z//PZjJGmWGPMRg==", + "requires": { + "@metamask/eth-json-rpc-provider": "^1.0.0", + "@metamask/safe-event-emitter": "^3.0.0", + "@metamask/utils": "^5.0.1", + "json-rpc-random-id": "^1.0.1", + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==" + } + } + }, + "eth-gas-reporter": { + "version": "0.2.27", + "resolved": "https://registry.npmjs.org/eth-gas-reporter/-/eth-gas-reporter-0.2.27.tgz", + "integrity": "sha512-femhvoAM7wL0GcI8ozTdxfuBtBFJ9qsyIAsmKVjlWAHUbdnnXHt+lKzz/kmldM5lA9jLuNHGwuIxorNpLbR1Zw==", + "dev": true, + "requires": { + "@solidity-parser/parser": "^0.14.0", + "axios": "^1.5.1", + "cli-table3": "^0.5.0", + "colors": "1.4.0", + "ethereum-cryptography": "^1.0.3", + "ethers": "^5.7.2", + "fs-readdir-recursive": "^1.1.0", + "lodash": "^4.17.14", + "markdown-table": "^1.1.3", + "mocha": "^10.2.0", + "req-cwd": "^2.0.0", + "sha1": "^1.1.1", + "sync-request": "^6.0.0" + }, + "dependencies": { + "@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==", + "dev": true, + "requires": { + "@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" + } + }, + "@ethersproject/hdnode": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", + "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", + "dev": true, + "requires": { + "@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" + } + }, + "@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==", + "dev": true, + "requires": { + "@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" + } + }, + "@ethersproject/pbkdf2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", + "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/sha2": "^5.7.0" + } + }, + "@ethersproject/solidity": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", + "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", + "dev": true, + "requires": { + "@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" + } + }, + "@ethersproject/units": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", + "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", + "dev": true, + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@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==", + "dev": true, + "requires": { + "@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" + } + }, + "@ethersproject/wordlists": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", + "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", + "dev": true, + "requires": { + "@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" + } + }, + "aes-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", + "dev": true + }, + "axios": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.5.tgz", + "integrity": "sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg==", + "dev": true, + "requires": { + "follow-redirects": "^1.15.4", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "ethers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "dev": true, + "requires": { + "@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" + } + } + } + }, + "eth-json-rpc-filters": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/eth-json-rpc-filters/-/eth-json-rpc-filters-6.0.1.tgz", + "integrity": "sha512-ITJTvqoCw6OVMLs7pI8f4gG92n/St6x80ACtHodeS+IXmO0w+t1T5OOzfSt7KLSMLRkVUoexV7tztLgDxg+iig==", + "requires": { + "@metamask/safe-event-emitter": "^3.0.0", + "async-mutex": "^0.2.6", + "eth-query": "^2.1.2", + "json-rpc-engine": "^6.1.0", + "pify": "^5.0.0" + }, + "dependencies": { + "pify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", + "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==" + } + } + }, + "eth-query": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/eth-query/-/eth-query-2.1.2.tgz", + "integrity": "sha512-srES0ZcvwkR/wd5OQBRA1bIJMww1skfGS0s8wlwK3/oNP4+wnds60krvu5R1QbpRQjMmpG5OMIWro5s7gvDPsA==", + "requires": { + "json-rpc-random-id": "^1.0.0", + "xtend": "^4.0.1" + } + }, + "eth-rpc-errors": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eth-rpc-errors/-/eth-rpc-errors-4.0.3.tgz", + "integrity": "sha512-Z3ymjopaoft7JDoxZcEb3pwdGh7yiYMhOwm2doUt6ASXlMavpNlK6Cre0+IMl2VSGyEU9rkiperQhp5iRxn5Pg==", + "requires": { + "fast-safe-stringify": "^2.0.6" + } + }, + "ethereum-bloom-filters": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz", + "integrity": "sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==", + "dev": true, + "requires": { + "js-sha3": "^0.8.0" + } + }, + "ethereum-cryptography": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz", + "integrity": "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==", + "dev": true, + "requires": { + "@noble/hashes": "1.2.0", + "@noble/secp256k1": "1.7.1", + "@scure/bip32": "1.1.5", + "@scure/bip39": "1.1.1" + } + }, + "ethereumjs-abi": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz", + "integrity": "sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==", + "dev": true, + "requires": { + "bn.js": "^4.11.8", + "ethereumjs-util": "^6.0.0" + }, + "dependencies": { + "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==", + "dev": true + } + } + }, + "ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "dev": true, + "requires": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + }, + "dependencies": { + "@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "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==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "@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" + } + } + } + }, + "ethers": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.4.0.tgz", + "integrity": "sha512-hqN1x0CV8VMpQ25WnNEjaMqtB3nA4DRAb2FSmmNaUbD1dF6kWbHs8YaXbVvD37FCg3GTEyc4rV9Pxafk1ByHKw==", + "peer": true, + "requires": { + "@ethersproject/abi": "5.4.0", + "@ethersproject/abstract-provider": "5.4.0", + "@ethersproject/abstract-signer": "5.4.0", + "@ethersproject/address": "5.4.0", + "@ethersproject/base64": "5.4.0", + "@ethersproject/basex": "5.4.0", + "@ethersproject/bignumber": "5.4.0", + "@ethersproject/bytes": "5.4.0", + "@ethersproject/constants": "5.4.0", + "@ethersproject/contracts": "5.4.0", + "@ethersproject/hash": "5.4.0", + "@ethersproject/hdnode": "5.4.0", + "@ethersproject/json-wallets": "5.4.0", + "@ethersproject/keccak256": "5.4.0", + "@ethersproject/logger": "5.4.0", + "@ethersproject/networks": "5.4.0", + "@ethersproject/pbkdf2": "5.4.0", + "@ethersproject/properties": "5.4.0", + "@ethersproject/providers": "5.4.0", + "@ethersproject/random": "5.4.0", + "@ethersproject/rlp": "5.4.0", + "@ethersproject/sha2": "5.4.0", + "@ethersproject/signing-key": "5.4.0", + "@ethersproject/solidity": "5.4.0", + "@ethersproject/strings": "5.4.0", + "@ethersproject/transactions": "5.4.0", + "@ethersproject/units": "5.4.0", + "@ethersproject/wallet": "5.4.0", + "@ethersproject/web": "5.4.0", + "@ethersproject/wordlists": "5.4.0" + }, + "dependencies": { + "@ethersproject/abi": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.4.0.tgz", + "integrity": "sha512-9gU2H+/yK1j2eVMdzm6xvHSnMxk8waIHQGYCZg5uvAyH0rsAzxkModzBSpbAkAuhKFEovC2S9hM4nPuLym8IZw==", + "peer": true, + "requires": { + "@ethersproject/address": "^5.4.0", + "@ethersproject/bignumber": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/constants": "^5.4.0", + "@ethersproject/hash": "^5.4.0", + "@ethersproject/keccak256": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "@ethersproject/strings": "^5.4.0" + } + }, + "@ethersproject/abstract-provider": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.4.0.tgz", + "integrity": "sha512-vPBR7HKUBY0lpdllIn7tLIzNN7DrVnhCLKSzY0l8WAwxz686m/aL7ASDzrVxV93GJtIub6N2t4dfZ29CkPOxgA==", + "peer": true, + "requires": { + "@ethersproject/bignumber": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/networks": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "@ethersproject/transactions": "^5.4.0", + "@ethersproject/web": "^5.4.0" + } + }, + "@ethersproject/abstract-signer": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.4.0.tgz", + "integrity": "sha512-AieQAzt05HJZS2bMofpuxMEp81AHufA5D6M4ScKwtolj041nrfIbIi8ciNW7+F59VYxXq+V4c3d568Q6l2m8ew==", + "peer": true, + "requires": { + "@ethersproject/abstract-provider": "^5.4.0", + "@ethersproject/bignumber": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/properties": "^5.4.0" + } + }, + "@ethersproject/address": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.4.0.tgz", + "integrity": "sha512-SD0VgOEkcACEG/C6xavlU1Hy3m5DGSXW3CUHkaaEHbAPPsgi0coP5oNPsxau8eTlZOk/bpa/hKeCNoK5IzVI2Q==", + "peer": true, + "requires": { + "@ethersproject/bignumber": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/keccak256": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/rlp": "^5.4.0" + } + }, + "@ethersproject/base64": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.4.0.tgz", + "integrity": "sha512-CjQw6E17QDSSC5jiM9YpF7N1aSCHmYGMt9bWD8PWv6YPMxjsys2/Q8xLrROKI3IWJ7sFfZ8B3flKDTM5wlWuZQ==", + "peer": true, + "requires": { + "@ethersproject/bytes": "^5.4.0" + } + }, + "@ethersproject/basex": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.4.0.tgz", + "integrity": "sha512-J07+QCVJ7np2bcpxydFVf/CuYo9mZ7T73Pe7KQY4c1lRlrixMeblauMxHXD0MPwFmUHZIILDNViVkykFBZylbg==", + "peer": true, + "requires": { + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/properties": "^5.4.0" + } + }, + "@ethersproject/bignumber": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.4.0.tgz", + "integrity": "sha512-OXUu9f9hO3vGRIPxU40cignXZVaYyfx6j9NNMjebKdnaCL3anCLSSy8/b8d03vY6dh7duCC0kW72GEC4tZer2w==", + "peer": true, + "requires": { + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "bn.js": "^4.11.9" + } + }, + "@ethersproject/bytes": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.4.0.tgz", + "integrity": "sha512-H60ceqgTHbhzOj4uRc/83SCN9d+BSUnOkrr2intevqdtEMO1JFVZ1XL84OEZV+QjV36OaZYxtnt4lGmxcGsPfA==", + "peer": true, + "requires": { + "@ethersproject/logger": "^5.4.0" + } + }, + "@ethersproject/constants": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.4.0.tgz", + "integrity": "sha512-tzjn6S7sj9+DIIeKTJLjK9WGN2Tj0P++Z8ONEIlZjyoTkBuODN+0VfhAyYksKi43l1Sx9tX2VlFfzjfmr5Wl3Q==", + "peer": true, + "requires": { + "@ethersproject/bignumber": "^5.4.0" + } + }, + "@ethersproject/hash": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.4.0.tgz", + "integrity": "sha512-xymAM9tmikKgbktOCjW60Z5sdouiIIurkZUr9oW5NOex5uwxrbsYG09kb5bMcNjlVeJD3yPivTNzViIs1GCbqA==", + "peer": true, + "requires": { + "@ethersproject/abstract-signer": "^5.4.0", + "@ethersproject/address": "^5.4.0", + "@ethersproject/bignumber": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/keccak256": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "@ethersproject/strings": "^5.4.0" + } + }, + "@ethersproject/keccak256": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.4.0.tgz", + "integrity": "sha512-FBI1plWet+dPUvAzPAeHzRKiPpETQzqSUWR1wXJGHVWi4i8bOSrpC3NwpkPjgeXG7MnugVc1B42VbfnQikyC/A==", + "peer": true, + "requires": { + "@ethersproject/bytes": "^5.4.0", + "js-sha3": "0.5.7" + } + }, + "@ethersproject/logger": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.4.0.tgz", + "integrity": "sha512-xYdWGGQ9P2cxBayt64d8LC8aPFJk6yWCawQi/4eJ4+oJdMMjEBMrIcIMZ9AxhwpPVmnBPrsB10PcXGmGAqgUEQ==", + "peer": true + }, + "@ethersproject/networks": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.4.0.tgz", + "integrity": "sha512-5fywtKRDcnaVeA5SjxXH3DOQqe/IbeD/plwydi94SdPps1fbDUrnO6SzDExaruBZXxpxJcO9upG9UComsei4bg==", + "peer": true, + "requires": { + "@ethersproject/logger": "^5.4.0" + } + }, + "@ethersproject/properties": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.4.0.tgz", + "integrity": "sha512-7jczalGVRAJ+XSRvNA6D5sAwT4gavLq3OXPuV/74o3Rd2wuzSL035IMpIMgei4CYyBdialJMrTqkOnzccLHn4A==", + "peer": true, + "requires": { + "@ethersproject/logger": "^5.4.0" + } + }, + "@ethersproject/providers": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.4.0.tgz", + "integrity": "sha512-XRmI9syLnkNdLA8ikEeg0duxmwSWTTt9S+xabnTOyI51JPJyhQ0QUNT+wvmod218ebb7rLupHDPQ7UVe2/+Tjg==", + "peer": true, + "requires": { + "@ethersproject/abstract-provider": "^5.4.0", + "@ethersproject/abstract-signer": "^5.4.0", + "@ethersproject/address": "^5.4.0", + "@ethersproject/basex": "^5.4.0", + "@ethersproject/bignumber": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/constants": "^5.4.0", + "@ethersproject/hash": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/networks": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "@ethersproject/random": "^5.4.0", + "@ethersproject/rlp": "^5.4.0", + "@ethersproject/sha2": "^5.4.0", + "@ethersproject/strings": "^5.4.0", + "@ethersproject/transactions": "^5.4.0", + "@ethersproject/web": "^5.4.0", + "bech32": "1.1.4", + "ws": "7.4.6" + } + }, + "@ethersproject/random": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.4.0.tgz", + "integrity": "sha512-pnpWNQlf0VAZDEOVp1rsYQosmv2o0ITS/PecNw+mS2/btF8eYdspkN0vIXrCMtkX09EAh9bdk8GoXmFXM1eAKw==", + "peer": true, + "requires": { + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/logger": "^5.4.0" + } + }, + "@ethersproject/rlp": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.4.0.tgz", + "integrity": "sha512-0I7MZKfi+T5+G8atId9QaQKHRvvasM/kqLyAH4XxBCBchAooH2EX5rL9kYZWwcm3awYV+XC7VF6nLhfeQFKVPg==", + "peer": true, + "requires": { + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/logger": "^5.4.0" + } + }, + "@ethersproject/sha2": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.4.0.tgz", + "integrity": "sha512-siheo36r1WD7Cy+bDdE1BJ8y0bDtqXCOxRMzPa4bV1TGt/eTUUt03BHoJNB6reWJD8A30E/pdJ8WFkq+/uz4Gg==", + "peer": true, + "requires": { + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "hash.js": "1.1.7" + } + }, + "@ethersproject/signing-key": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.4.0.tgz", + "integrity": "sha512-q8POUeywx6AKg2/jX9qBYZIAmKSB4ubGXdQ88l40hmATj29JnG5pp331nAWwwxPn2Qao4JpWHNZsQN+bPiSW9A==", + "peer": true, + "requires": { + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "bn.js": "^4.11.9", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "@ethersproject/strings": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.4.0.tgz", + "integrity": "sha512-k/9DkH5UGDhv7aReXLluFG5ExurwtIpUfnDNhQA29w896Dw3i4uDTz01Quaptbks1Uj9kI8wo9tmW73wcIEaWA==", + "peer": true, + "requires": { + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/constants": "^5.4.0", + "@ethersproject/logger": "^5.4.0" + } + }, + "@ethersproject/transactions": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.4.0.tgz", + "integrity": "sha512-s3EjZZt7xa4BkLknJZ98QGoIza94rVjaEed0rzZ/jB9WrIuu/1+tjvYCWzVrystXtDswy7TPBeIepyXwSYa4WQ==", + "peer": true, + "requires": { + "@ethersproject/address": "^5.4.0", + "@ethersproject/bignumber": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/constants": "^5.4.0", + "@ethersproject/keccak256": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "@ethersproject/rlp": "^5.4.0", + "@ethersproject/signing-key": "^5.4.0" + } + }, + "@ethersproject/web": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.4.0.tgz", + "integrity": "sha512-1bUusGmcoRLYgMn6c1BLk1tOKUIFuTg8j+6N8lYlbMpDesnle+i3pGSagGNvwjaiLo4Y5gBibwctpPRmjrh4Og==", + "peer": true, + "requires": { + "@ethersproject/base64": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "@ethersproject/strings": "^5.4.0" + } + }, + "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==", + "peer": true + }, + "js-sha3": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", + "integrity": "sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==", + "peer": true + }, + "ws": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "peer": true, + "requires": {} + } + } + }, + "ethjs-unit": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", + "integrity": "sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==", + "dev": true, + "requires": { + "bn.js": "4.11.6", + "number-to-bn": "1.7.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", + "dev": true + } + } + }, + "ethjs-util": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", + "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", + "dev": true, + "requires": { + "is-hex-prefixed": "1.0.0", + "strip-hex-prefix": "1.0.0" + } + }, + "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==", + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" + }, + "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==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "requires": { + "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" + }, + "dependencies": { + "get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==" + } + } + }, + "ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "requires": { + "type": "^2.7.2" + }, + "dependencies": { + "type": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" + } + } + }, + "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 + }, + "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 + }, + "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, + "requires": { + "@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" + } + }, + "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 + }, + "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 + }, + "fast-redact": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.3.0.tgz", + "integrity": "sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==" + }, + "fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" + }, + "fastq": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz", + "integrity": "sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "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, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "filter-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", + "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==" + }, + "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==", + "dev": true, + "requires": { + "array-back": "^3.0.1" + } + }, + "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==", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true + }, + "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, + "requires": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "dependencies": { + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "flatted": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "dev": true + }, + "fmix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/fmix/-/fmix-0.1.0.tgz", + "integrity": "sha512-Y6hyofImk9JdzU8k5INtTXX1cu8LDlePWDFU5sftm9H+zKCr5SGrVjdhkvsim646cw5zD0nADj8oHyXMZmCZ9w==", + "dev": true, + "requires": { + "imul": "^1.0.0" + } + }, + "follow-redirects": { + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", + "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==" + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "requires": { + "is-callable": "^1.1.3" + } + }, + "foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + } + }, + "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==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "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 + }, + "fp-ts": { + "version": "1.19.3", + "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz", + "integrity": "sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==", + "dev": true + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "optional": true + }, + "function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + } + }, + "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==", + "dev": true + }, + "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==" + }, + "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 + }, + "get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "dev": true, + "requires": { + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + } + }, + "get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==", + "dev": true + }, + "get-port-please": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/get-port-please/-/get-port-please-3.1.2.tgz", + "integrity": "sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==" + }, + "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 + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "get-tsconfig": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.2.tgz", + "integrity": "sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==", + "dev": true, + "requires": { + "resolve-pkg-maps": "^1.0.0" + } + }, + "ghost-testrpc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/ghost-testrpc/-/ghost-testrpc-0.0.2.tgz", + "integrity": "sha512-i08dAEgJ2g8z5buJIrCTduwPIhih3DP+hOCTyyryikfV8T0bNvHnGXO67i0DD1H4GBDETTclPy9njZbfluQYrQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "node-emoji": "^1.10.0" + } + }, + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "requires": { + "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" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "dev": true, + "requires": { + "global-prefix": "^3.0.0" + } + }, + "global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "dev": true, + "requires": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "dependencies": { + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + }, + "dependencies": { + "type-fest": { + "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 + } + } + }, + "globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3" + } + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "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" + } + }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.3" + } + }, + "got": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", + "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", + "dev": true, + "requires": { + "@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" + } + }, + "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==", + "dev": true + }, + "graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "h3": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/h3/-/h3-1.10.1.tgz", + "integrity": "sha512-UBAUp47hmm4BB5/njB4LrEa9gpuvZj4/Qf/ynSMzO6Ku2RXaouxEfiG2E2IFnv6fxbhAkzjasDxmo6DFdEeXRg==", + "requires": { + "cookie-es": "^1.0.0", + "defu": "^6.1.4", + "destr": "^2.0.2", + "iron-webcrypto": "^1.0.0", + "ohash": "^1.1.3", + "radix3": "^1.1.0", + "ufo": "^1.3.2", + "uncrypto": "^0.1.3", + "unenv": "^1.9.0" + } + }, + "handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" + } + }, + "hardhat": { + "version": "2.20.1", + "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.20.1.tgz", + "integrity": "sha512-q75xDQiQtCZcTMBwjTovrXEU5ECr49baxr4/OBkIu/ULTPzlB20yk1dRWNmD2IFbAeAeXggaWvQAdpiScaHtPw==", + "dev": true, + "requires": { + "@ethersproject/abi": "^5.1.2", + "@metamask/eth-sig-util": "^4.0.0", + "@nomicfoundation/ethereumjs-block": "5.0.4", + "@nomicfoundation/ethereumjs-blockchain": "7.0.4", + "@nomicfoundation/ethereumjs-common": "4.0.4", + "@nomicfoundation/ethereumjs-evm": "2.0.4", + "@nomicfoundation/ethereumjs-rlp": "5.0.4", + "@nomicfoundation/ethereumjs-statemanager": "2.0.4", + "@nomicfoundation/ethereumjs-trie": "6.0.4", + "@nomicfoundation/ethereumjs-tx": "5.0.4", + "@nomicfoundation/ethereumjs-util": "9.0.4", + "@nomicfoundation/ethereumjs-verkle": "0.0.2", + "@nomicfoundation/ethereumjs-vm": "7.0.4", + "@nomicfoundation/solidity-analyzer": "^0.1.0", + "@sentry/node": "^5.18.1", + "@types/bn.js": "^5.1.0", + "@types/lru-cache": "^5.1.0", + "adm-zip": "^0.4.16", + "aggregate-error": "^3.0.0", + "ansi-escapes": "^4.3.0", + "boxen": "^5.1.2", + "chalk": "^2.4.2", + "chokidar": "^3.4.0", + "ci-info": "^2.0.0", + "debug": "^4.1.1", + "enquirer": "^2.3.0", + "env-paths": "^2.2.0", + "ethereum-cryptography": "^1.0.3", + "ethereumjs-abi": "^0.6.8", + "find-up": "^2.1.0", + "fp-ts": "1.19.3", + "fs-extra": "^7.0.1", + "glob": "7.2.0", + "immutable": "^4.0.0-rc.12", + "io-ts": "1.10.4", + "keccak": "^3.0.2", + "lodash": "^4.17.11", + "mnemonist": "^0.38.0", + "mocha": "^10.0.0", + "p-map": "^4.0.0", + "raw-body": "^2.4.1", + "resolve": "1.17.0", + "semver": "^6.3.0", + "solc": "0.7.3", + "source-map-support": "^0.5.13", + "stacktrace-parser": "^0.1.10", + "tsort": "0.0.1", + "undici": "^5.14.0", + "uuid": "^8.3.2", + "ws": "^7.4.6" + } + }, + "hardhat-deploy": { + "version": "0.11.45", + "resolved": "https://registry.npmjs.org/hardhat-deploy/-/hardhat-deploy-0.11.45.tgz", + "integrity": "sha512-aC8UNaq3JcORnEUIwV945iJuvBwi65tjHVDU3v6mOcqik7WAzHVCJ7cwmkkipsHrWysrB5YvGF1q9S1vIph83w==", + "dev": true, + "requires": { + "@ethersproject/abi": "^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/contracts": "^5.7.0", + "@ethersproject/providers": "^5.7.2", + "@ethersproject/solidity": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wallet": "^5.7.0", + "@types/qs": "^6.9.7", + "axios": "^0.21.1", + "chalk": "^4.1.2", + "chokidar": "^3.5.2", + "debug": "^4.3.2", + "enquirer": "^2.3.6", + "ethers": "^5.7.0", + "form-data": "^4.0.0", + "fs-extra": "^10.0.0", + "match-all": "^1.2.6", + "murmur-128": "^0.2.1", + "qs": "^6.9.4", + "zksync-web3": "^0.14.3" + }, + "dependencies": { + "@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==", + "dev": true, + "requires": { + "@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" + } + }, + "@ethersproject/hdnode": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", + "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", + "dev": true, + "requires": { + "@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" + } + }, + "@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==", + "dev": true, + "requires": { + "@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" + } + }, + "@ethersproject/pbkdf2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", + "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/sha2": "^5.7.0" + } + }, + "@ethersproject/solidity": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", + "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", + "dev": true, + "requires": { + "@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" + } + }, + "@ethersproject/units": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", + "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", + "dev": true, + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@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==", + "dev": true, + "requires": { + "@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" + } + }, + "@ethersproject/wordlists": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", + "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", + "dev": true, + "requires": { + "@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" + } + }, + "aes-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "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==", + "dev": true + }, + "ethers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "dev": true, + "requires": { + "@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" + } + }, + "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==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + }, + "universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true + }, + "zksync-web3": { + "version": "0.14.4", + "resolved": "https://registry.npmjs.org/zksync-web3/-/zksync-web3-0.14.4.tgz", + "integrity": "sha512-kYehMD/S6Uhe1g434UnaMN+sBr9nQm23Ywn0EUP5BfQCsbjcr3ORuS68PosZw8xUTu3pac7G6YMSnNHk+fwzvg==", + "dev": true, + "requires": {} + } + } + }, + "hardhat-gas-reporter": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.10.tgz", + "integrity": "sha512-02N4+So/fZrzJ88ci54GqwVA3Zrf0C9duuTyGt0CFRIh/CdNwbnTgkXkRfojOMLBQ+6t+lBIkgbsOtqMvNwikA==", + "dev": true, + "requires": { + "array-uniq": "1.0.3", + "eth-gas-reporter": "^0.2.25", + "sha1": "^1.1.1" + } + }, + "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==", + "dev": true + }, + "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==", + "dev": true + }, + "has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dev": true, + "requires": { + "get-intrinsic": "^1.2.2" + } + }, + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "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==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "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==", + "dev": true + } + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "requires": { + "function-bind": "^1.1.2" + } + }, + "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 + }, + "heap": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz", + "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==", + "dev": true + }, + "hey-listen": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", + "integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==" + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "http-basic": { + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/http-basic/-/http-basic-8.1.3.tgz", + "integrity": "sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw==", + "dev": true, + "requires": { + "caseless": "^0.12.0", + "concat-stream": "^1.6.2", + "http-response-object": "^3.0.1", + "parse-cache-control": "^1.0.1" + } + }, + "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==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "http-response-object": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz", + "integrity": "sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==", + "dev": true, + "requires": { + "@types/node": "^10.0.3" + }, + "dependencies": { + "@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==", + "dev": true + } + } + }, + "http-shutdown": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/http-shutdown/-/http-shutdown-1.2.2.tgz", + "integrity": "sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw==" + }, + "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, + "requires": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" + } + }, + "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==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==" + }, + "husky": { + "version": "9.0.11", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.0.11.tgz", + "integrity": "sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw==", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "idb-keyval": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.2.1.tgz", + "integrity": "sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg==" + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "ignore": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "dev": true + }, + "immutable": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz", + "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==", + "dev": true + }, + "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, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imul": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/imul/-/imul-1.0.1.tgz", + "integrity": "sha512-WFAgfwPLAjU66EKt6vRdTlKj4nAgIDQzh29JonLa4Bqtl6D8JrIMvWjCnx7xEjVNmP3U0fM5o8ZObk7d0f62bA==", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "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==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "internal-slot": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", + "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", + "dev": true, + "requires": { + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + } + }, + "interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true + }, + "io-ts": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-1.10.4.tgz", + "integrity": "sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==", + "dev": true, + "requires": { + "fp-ts": "^1.0.0" + } + }, + "ioredis": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.3.2.tgz", + "integrity": "sha512-1DKMMzlIHM02eBBVOFQ1+AolGjs6+xEcM4PDL7NqOS6szq7H9jSaEkIUH6/a5Hl241LzW6JLSiAbNvTQjUupUA==", + "requires": { + "@ioredis/commands": "^1.1.1", + "cluster-key-slot": "^1.1.0", + "debug": "^4.3.4", + "denque": "^2.1.0", + "lodash.defaults": "^4.2.0", + "lodash.isarguments": "^3.1.0", + "redis-errors": "^1.2.0", + "redis-parser": "^3.0.0", + "standard-as-callback": "^2.1.0" + } + }, + "ipaddr.js": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", + "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==", + "dev": true + }, + "iron-webcrypto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-1.0.0.tgz", + "integrity": "sha512-anOK1Mktt8U1Xi7fCM3RELTuYbnFikQY5VtrDj7kPgpejV7d43tWKhzgioO0zpkazLEL/j/iayRqnJhrGfqUsg==" + }, + "is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + } + }, + "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 + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "requires": { + "has-bigints": "^1.0.1" + } + }, + "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==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "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==", + "dev": true + }, + "is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "requires": { + "hasown": "^2.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "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==" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + }, + "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==" + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-hex-prefixed": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", + "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==", + "dev": true + }, + "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==", + "requires": { + "is-docker": "^3.0.0" + } + }, + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "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==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "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 + }, + "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==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==" + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dev": true, + "requires": { + "which-typed-array": "^1.1.11" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, + "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 + }, + "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==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "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==", + "requires": { + "is-inside-container": "^1.0.0" + } + }, + "is64bit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is64bit/-/is64bit-2.0.0.tgz", + "integrity": "sha512-jv+8jaWCl0g2lSBkNSVXdzfBA0npK1HGC2KtWM9FumFRoGS94g3NbCCLVnCYHLjp4GrW2KZeeSTMo5ddtznmGw==", + "requires": { + "system-architecture": "^0.1.0" + } + }, + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "isomorphic-unfetch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz", + "integrity": "sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==", + "requires": { + "node-fetch": "^2.6.1", + "unfetch": "^4.2.0" + } + }, + "isomorphic-ws": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz", + "integrity": "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==", + "dev": true, + "requires": {} + }, + "isows": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.3.tgz", + "integrity": "sha512-2cKei4vlmg2cxEjm3wVSqn8pcoRF/LX/wpifuuNquFO4SQmPwarClT+SUCA2lt+l581tTeZIPIZuIDo2jWN1fg==", + "requires": {} + }, + "jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "requires": { + "@isaacs/cliui": "^8.0.2", + "@pkgjs/parseargs": "^0.11.0" + } + }, + "jiti": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", + "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==" + }, + "js-sdsl": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.2.tgz", + "integrity": "sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w==", + "dev": true + }, + "js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "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, + "requires": { + "argparse": "^2.0.1" + } + }, + "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 + }, + "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 + }, + "json-rpc-engine": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/json-rpc-engine/-/json-rpc-engine-6.1.0.tgz", + "integrity": "sha512-NEdLrtrq1jUZyfjkr9OCz9EzCNhnRyWtt1PAnvnhwy6e8XETS0Dtc+ZNCO2gvuAoKsIn2+vCSowXTYE4CkgnAQ==", + "requires": { + "@metamask/safe-event-emitter": "^2.0.0", + "eth-rpc-errors": "^4.0.2" + }, + "dependencies": { + "@metamask/safe-event-emitter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@metamask/safe-event-emitter/-/safe-event-emitter-2.0.0.tgz", + "integrity": "sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q==" + } + } + }, + "json-rpc-random-id": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-rpc-random-id/-/json-rpc-random-id-1.0.1.tgz", + "integrity": "sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA==" + }, + "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 + }, + "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 + }, + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "jsonc-parser": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz", + "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==" + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsonschema": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.1.tgz", + "integrity": "sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==", + "dev": true + }, + "keccak": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.4.tgz", + "integrity": "sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==", + "requires": { + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0", + "readable-stream": "^3.6.0" + } + }, + "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, + "requires": { + "json-buffer": "3.0.1" + } + }, + "keyvaluestorage-interface": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/keyvaluestorage-interface/-/keyvaluestorage-interface-1.0.0.tgz", + "integrity": "sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==" + }, + "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==", + "dev": true + }, + "klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.9" + } + }, + "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==", + "dev": true, + "requires": { + "package-json": "^8.1.0" + } + }, + "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, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "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 + }, + "listhen": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/listhen/-/listhen-1.6.0.tgz", + "integrity": "sha512-z0RcEXVX5oTpY1bO02SKoTU/kmZSrFSngNNzHRM6KICR17PTq7ANush6AE6ztGJwJD4RLpBrVHd9GnV51J7s3w==", + "requires": { + "@parcel/watcher": "^2.4.0", + "@parcel/watcher-wasm": "2.4.0", + "citty": "^0.1.5", + "clipboardy": "^4.0.0", + "consola": "^3.2.3", + "crossws": "^0.1.0", + "defu": "^6.1.4", + "get-port-please": "^3.1.2", + "h3": "^1.10.1", + "http-shutdown": "^1.2.2", + "jiti": "^1.21.0", + "mlly": "^1.5.0", + "node-forge": "^1.3.1", + "pathe": "^1.1.2", + "std-env": "^3.7.0", + "ufo": "^1.3.2", + "untun": "^0.1.3", + "uqr": "^0.1.2" + } + }, + "lit": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/lit/-/lit-2.8.0.tgz", + "integrity": "sha512-4Sc3OFX9QHOJaHbmTMk28SYgVxLN3ePDjg7hofEft2zWlehFL3LiAuapWc4U/kYwMYJSh2hTCPZ6/LIC7ii0MA==", + "requires": { + "@lit/reactive-element": "^1.6.0", + "lit-element": "^3.3.0", + "lit-html": "^2.8.0" + } + }, + "lit-element": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-3.3.3.tgz", + "integrity": "sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==", + "requires": { + "@lit-labs/ssr-dom-shim": "^1.1.0", + "@lit/reactive-element": "^1.3.0", + "lit-html": "^2.8.0" + } + }, + "lit-html": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.8.0.tgz", + "integrity": "sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==", + "requires": { + "@types/trusted-types": "^2.0.2" + } + }, + "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==", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "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==", + "dev": true + }, + "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==", + "dev": true + }, + "lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==" + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==" + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" + }, + "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 + }, + "lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "dev": true + }, + "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, + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "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==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "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==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "dev": true, + "requires": { + "get-func-name": "^2.0.1" + } + }, + "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 + }, + "lru_map": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", + "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==", + "dev": true + }, + "lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==" + }, + "magic-string": { + "version": "0.30.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.7.tgz", + "integrity": "sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==", + "requires": { + "@jridgewell/sourcemap-codec": "^1.4.15" + } + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "markdown-table": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz", + "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==", + "dev": true + }, + "match-all": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/match-all/-/match-all-1.2.6.tgz", + "integrity": "sha512-0EESkXiTkWzrQQntBu2uzKvLu6vVkUGz40nGPbSZuegcfE5UuSzNjLaIu76zJWuaT/2I3Z/8M06OlUOZLGwLlQ==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true + }, + "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==" + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micro-ftch": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/micro-ftch/-/micro-ftch-0.3.1.tgz", + "integrity": "sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==" + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==" + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "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==", + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==" + }, + "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 + }, + "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==" + }, + "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==" + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true + }, + "minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "mlly": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.5.0.tgz", + "integrity": "sha512-NPVQvAY1xr1QoVeG0cy8yUYC7FQcOx6evl/RjT1wL5FvzPnzOysoqB/jmx/DhssT2dYa8nxECLAaFI/+gVLhDQ==", + "requires": { + "acorn": "^8.11.3", + "pathe": "^1.1.2", + "pkg-types": "^1.0.3", + "ufo": "^1.3.2" + } + }, + "mnemonist": { + "version": "0.38.5", + "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz", + "integrity": "sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==", + "dev": true, + "requires": { + "obliterator": "^2.0.0" + } + }, + "mocha": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", + "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", + "dev": true, + "requires": { + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.4", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "5.0.1", + "ms": "2.1.3", + "nanoid": "3.3.3", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "workerpool": "6.2.1", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "dependencies": { + "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==", + "dev": true + }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "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 + }, + "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, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "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, + "requires": { + "p-locate": "^5.0.0" + } + }, + "minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "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 + }, + "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, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "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, + "requires": { + "p-limit": "^3.0.2" + } + }, + "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 + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "motion": { + "version": "10.16.2", + "resolved": "https://registry.npmjs.org/motion/-/motion-10.16.2.tgz", + "integrity": "sha512-p+PurYqfUdcJZvtnmAqu5fJgV2kR0uLFQuBKtLeFVTrYEVllI99tiOTSefVNYuip9ELTEkepIIDftNdze76NAQ==", + "requires": { + "@motionone/animation": "^10.15.1", + "@motionone/dom": "^10.16.2", + "@motionone/svelte": "^10.16.2", + "@motionone/types": "^10.15.1", + "@motionone/utils": "^10.15.1", + "@motionone/vue": "^10.16.2" + } + }, + "mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "multiformats": { + "version": "9.9.0", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz", + "integrity": "sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==" + }, + "murmur-128": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/murmur-128/-/murmur-128-0.2.1.tgz", + "integrity": "sha512-WseEgiRkI6aMFBbj8Cg9yBj/y+OdipwVC7zUo3W2W1JAJITwouUOtpqsmGSg67EQmwwSyod7hsVsWY5LsrfQVg==", + "dev": true, + "requires": { + "encode-utf8": "^1.0.2", + "fmix": "^0.1.0", + "imul": "^1.0.0" + } + }, + "nanoid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "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==", + "dev": true + }, + "next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" + }, + "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-emoji": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", + "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + }, + "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==", + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "node-fetch-native": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.2.tgz", + "integrity": "sha512-69mtXOFZ6hSkYiXAVB5SqaRvrbITC/NPyqv7yuu/qw0nmgPyYbIMYYNIDhNtwPrzk0ptrimrLz/hhjvm4w5Z+w==" + }, + "node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==" + }, + "node-gyp-build": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.0.tgz", + "integrity": "sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==" + }, + "node-gyp-build-optional-packages": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.1.1.tgz", + "integrity": "sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw==", + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^2.0.1" + } + }, + "nofilter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz", + "integrity": "sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==", + "dev": true + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "normalize-url": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", + "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", + "dev": true + }, + "npm-run-path": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.2.0.tgz", + "integrity": "sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==", + "requires": { + "path-key": "^4.0.0" + }, + "dependencies": { + "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==" + } + } + }, + "number-to-bn": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", + "integrity": "sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==", + "dev": true, + "requires": { + "bn.js": "4.11.6", + "strip-hex-prefix": "1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", + "dev": true + } + } + }, + "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==", + "dev": true + }, + "object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + } + }, + "object.fromentries": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", + "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + } + }, + "object.groupby": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", + "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1" + } + }, + "object.values": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", + "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + } + }, + "obliterator": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.4.tgz", + "integrity": "sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==", + "dev": true + }, + "ofetch": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.3.3.tgz", + "integrity": "sha512-s1ZCMmQWXy4b5K/TW9i/DtiN8Ku+xCiHcjQ6/J/nDdssirrQNOoB165Zu8EqLMA2lln1JUth9a0aW9Ap2ctrUg==", + "requires": { + "destr": "^2.0.1", + "node-fetch-native": "^1.4.0", + "ufo": "^1.3.0" + } + }, + "ohash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/ohash/-/ohash-1.1.3.tgz", + "integrity": "sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==" + }, + "on-exit-leak-free": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-0.2.0.tgz", + "integrity": "sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "requires": { + "mimic-fn": "^4.0.0" + } + }, + "optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "requires": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + } + }, + "ordinal": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ordinal/-/ordinal-1.0.3.tgz", + "integrity": "sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ==", + "dev": true + }, + "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 + }, + "p-cancelable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "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==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "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==", + "dev": true + }, + "package-json": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-8.1.1.tgz", + "integrity": "sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==", + "dev": true, + "requires": { + "got": "^12.1.0", + "registry-auth-token": "^5.0.1", + "registry-url": "^6.0.0", + "semver": "^7.3.7" + }, + "dependencies": { + "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==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "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, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-cache-control": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz", + "integrity": "sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==", + "dev": true + }, + "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, + "requires": { + "@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" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + }, + "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==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "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 + }, + "path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "dev": true, + "requires": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + } + }, + "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 + }, + "pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==" + }, + "pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true + }, + "pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "pino": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-7.11.0.tgz", + "integrity": "sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg==", + "requires": { + "atomic-sleep": "^1.0.0", + "fast-redact": "^3.0.0", + "on-exit-leak-free": "^0.2.0", + "pino-abstract-transport": "v0.5.0", + "pino-std-serializers": "^4.0.0", + "process-warning": "^1.0.0", + "quick-format-unescaped": "^4.0.3", + "real-require": "^0.1.0", + "safe-stable-stringify": "^2.1.0", + "sonic-boom": "^2.2.1", + "thread-stream": "^0.15.1" + } + }, + "pino-abstract-transport": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-0.5.0.tgz", + "integrity": "sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==", + "requires": { + "duplexify": "^4.1.2", + "split2": "^4.0.0" + } + }, + "pino-std-serializers": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-4.0.0.tgz", + "integrity": "sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==" + }, + "pkg-types": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.3.tgz", + "integrity": "sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==", + "requires": { + "jsonc-parser": "^3.2.0", + "mlly": "^1.2.0", + "pathe": "^1.1.0" + } + }, + "pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "dev": true + }, + "pngjs": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", + "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==" + }, + "pony-cause": { + "version": "2.1.10", + "resolved": "https://registry.npmjs.org/pony-cause/-/pony-cause-2.1.10.tgz", + "integrity": "sha512-3IKLNXclQgkU++2fSi93sQ6BznFuxSLB11HdvZQ6JW/spahf/P1pAHBQEahr20rs0htZW0UDkM1HmA+nZkXKsw==" + }, + "postcss": { + "version": "8.4.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", + "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", + "requires": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "dependencies": { + "nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==" + } + } + }, + "preact": { + "version": "10.19.4", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.19.4.tgz", + "integrity": "sha512-dwaX5jAh0Ga8uENBX1hSOujmKWgx9RtL80KaKUFLc6jb4vCEAc3EeZ0rnQO/FO4VgjfPMfoLFWnNG8bHuZ9VLw==" + }, + "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 + }, + "prettier": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", + "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", + "dev": true + }, + "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, + "requires": { + "fast-diff": "^1.1.2" + } + }, + "prettier-plugin-solidity": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/prettier-plugin-solidity/-/prettier-plugin-solidity-1.3.1.tgz", + "integrity": "sha512-MN4OP5I2gHAzHZG1wcuJl0FsLS3c4Cc5494bbg+6oQWBPuEamjwDvmGfFMZ6NFzsh3Efd9UUxeT7ImgjNH4ozA==", + "dev": true, + "requires": { + "@solidity-parser/parser": "^0.17.0", + "semver": "^7.5.4", + "solidity-comments-extractor": "^0.0.8" + }, + "dependencies": { + "@solidity-parser/parser": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.17.0.tgz", + "integrity": "sha512-Nko8R0/kUo391jsEHHxrGM07QFdnPGvlmox4rmH0kNiNAashItAilhy4Mv4pK5gQmW5f4sXAF58fwJbmlkGcVw==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "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==", + "dev": true + }, + "process-warning": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-1.0.0.tgz", + "integrity": "sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==" + }, + "promise": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", + "dev": true, + "requires": { + "asap": "~2.0.6" + } + }, + "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 + }, + "proxy-compare": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/proxy-compare/-/proxy-compare-2.5.1.tgz", + "integrity": "sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA==" + }, + "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==" + }, + "punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true + }, + "pvtsutils": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.5.tgz", + "integrity": "sha512-ARvb14YB9Nm2Xi6nBq1ZX6dAM0FsJnuk+31aUp4TrcZEdKUlSqOqsxJHUPJDNE3qiIp+iUPEIeR6Je/tgV7zsA==", + "dev": true, + "requires": { + "tslib": "^2.6.1" + }, + "dependencies": { + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + } + } + }, + "pvutils": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.3.tgz", + "integrity": "sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==", + "dev": true + }, + "qrcode": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.3.tgz", + "integrity": "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==", + "requires": { + "dijkstrajs": "^1.0.1", + "encode-utf8": "^1.0.3", + "pngjs": "^5.0.0", + "yargs": "^15.3.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "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==", + "requires": { + "color-name": "~1.1.4" + } + }, + "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==" + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "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==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "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==" + }, + "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==" + }, + "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==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "requires": { + "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" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, + "query-string": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.3.tgz", + "integrity": "sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==", + "requires": { + "decode-uri-component": "^0.2.2", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + } + }, + "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 + }, + "quick-format-unescaped": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", + "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==" + }, + "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 + }, + "radix3": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/radix3/-/radix3-1.1.0.tgz", + "integrity": "sha512-pNsHDxbGORSvuSScqNJ+3Km6QAVqk8CfsCBIEoDgpqLrkD2f3QM4I7d1ozJJ172OmIcoUcerZaNWqtLkRXTV3A==" + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "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==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "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==", + "dev": true + } + } + }, + "react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "requires": { + "loose-envify": "^1.1.0" + } + }, + "react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "requires": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + } + }, + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "requires": { + "picomatch": "^2.2.1" + } + }, + "real-require": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.1.0.tgz", + "integrity": "sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==" + }, + "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, + "requires": { + "resolve": "^1.1.6" + } + }, + "recursive-readdir": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", + "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", + "dev": true, + "requires": { + "minimatch": "^3.0.5" + } + }, + "redis-errors": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", + "integrity": "sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==" + }, + "redis-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz", + "integrity": "sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==", + "requires": { + "redis-errors": "^1.0.0" + } + }, + "reduce-flatten": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", + "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", + "dev": true + }, + "regexp.prototype.flags": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" + } + }, + "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, + "requires": { + "@pnpm/npm-conf": "^2.1.0" + } + }, + "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, + "requires": { + "rc": "1.2.8" + } + }, + "req-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/req-cwd/-/req-cwd-2.0.0.tgz", + "integrity": "sha512-ueoIoLo1OfB6b05COxAA9UpeoscNpYyM+BqYlA7H6LVF4hKGPXQQSSaD2YmvDVJMkk4UDpAHIeU1zG53IqjvlQ==", + "dev": true, + "requires": { + "req-from": "^2.0.0" + } + }, + "req-from": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/req-from/-/req-from-2.0.0.tgz", + "integrity": "sha512-LzTfEVDVQHBRfjOUMgNBA+V6DWsSnoeKzf42J7l0xa/B4jyPOuuF5MlNSmomLNGemWTnV2TIdjSSLnEn95fOQA==", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "dev": true + } + } + }, + "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==" + }, + "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==", + "dev": true + }, + "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==" + }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "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 + }, + "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 + }, + "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 + }, + "responselike": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", + "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", + "dev": true, + "requires": { + "lowercase-keys": "^3.0.0" + } + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "rlp": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", + "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", + "dev": true, + "requires": { + "bn.js": "^5.2.0" + } + }, + "rollup": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.5.tgz", + "integrity": "sha512-E4vQW0H/mbNMw2yLSqJyjtkHY9dslf/p0zuT1xehNRqUTBOFMqEjguDvqhXr7N7r/4ttb2jr4T41d3dncmIgbQ==", + "dev": true, + "requires": { + "@rollup/rollup-android-arm-eabi": "4.9.5", + "@rollup/rollup-android-arm64": "4.9.5", + "@rollup/rollup-darwin-arm64": "4.9.5", + "@rollup/rollup-darwin-x64": "4.9.5", + "@rollup/rollup-linux-arm-gnueabihf": "4.9.5", + "@rollup/rollup-linux-arm64-gnu": "4.9.5", + "@rollup/rollup-linux-arm64-musl": "4.9.5", + "@rollup/rollup-linux-riscv64-gnu": "4.9.5", + "@rollup/rollup-linux-x64-gnu": "4.9.5", + "@rollup/rollup-linux-x64-musl": "4.9.5", + "@rollup/rollup-win32-arm64-msvc": "4.9.5", + "@rollup/rollup-win32-ia32-msvc": "4.9.5", + "@rollup/rollup-win32-x64-msvc": "4.9.5", + "@types/estree": "1.0.5", + "fsevents": "~2.3.2" + } + }, + "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, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "rust-verkle-wasm": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/rust-verkle-wasm/-/rust-verkle-wasm-0.0.1.tgz", + "integrity": "sha512-BN6fiTsxcd2dCECz/cHtGTt9cdLJR925nh7iAuRcj8ymKw7OOaPmCneQZ7JePOJ/ia27TjEL91VdOi88Yf+mcA==", + "dev": true + }, + "rustbn-wasm": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/rustbn-wasm/-/rustbn-wasm-0.2.0.tgz", + "integrity": "sha512-FThvYFNTqrEKGqXuseeg0zR7yROh/6U1617mCHF68OVqrN1tNKRN7Tdwy4WayPVsCmmK+eMxtIZX1qL6JxTkMg==", + "dev": true, + "requires": { + "@scure/base": "^1.1.1" + } + }, + "safe-4337-passkeys": { + "version": "file:examples/safe-4337-passkeys", + "requires": { + "@safe-global/safe-erc4337": "^0.3.0", + "@types/react": "^18.2.55", + "@types/react-dom": "^18.2.19", + "@vitejs/plugin-react-swc": "^3.6.0", + "@web3modal/ethers": "^4.0.5", + "ethers": "^6.11.1", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "typescript": "^5.3.3", + "vite": "^5.1.3" + }, + "dependencies": { + "@adraffy/ens-normalize": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz", + "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==" + }, + "@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "requires": { + "@noble/hashes": "1.3.2" + } + }, + "@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==" + }, + "@types/node": { + "version": "18.15.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", + "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==" + }, + "@web3modal/ethers": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@web3modal/ethers/-/ethers-4.0.5.tgz", + "integrity": "sha512-3SteVnMGxQ2LeH1QZ+kE2S+eRqeDweMFgHWCo0z5hxocoAmeduV2E+uIsbx0OH0eC7frHgO6Ghc31e8/9509Sw==", + "requires": { + "@coinbase/wallet-sdk": "3.9.1", + "@walletconnect/ethereum-provider": "2.11.1", + "@web3modal/polyfills": "4.0.5", + "@web3modal/scaffold": "4.0.5", + "@web3modal/scaffold-react": "4.0.5", + "@web3modal/scaffold-utils": "4.0.5", + "@web3modal/scaffold-vue": "4.0.5", + "@web3modal/siwe": "4.0.5", + "react": ">=17", + "react-dom": ">=17", + "valtio": "1.11.2", + "vue": ">=3" + } + }, + "ethers": { + "version": "6.11.1", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.11.1.tgz", + "integrity": "sha512-mxTAE6wqJQAbp5QAe/+o+rXOID7Nw91OZXvgpjDa1r4fAbq2Nu314oEZSbjoRLacuCzs7kUC3clEvkCQowffGg==", + "requires": { + "@adraffy/ens-normalize": "1.10.1", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@types/node": "18.15.13", + "aes-js": "4.0.0-beta.5", + "tslib": "2.4.0", + "ws": "8.5.0" + } + }, + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, + "ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "requires": {} + } + } + }, + "safe-array-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", + "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + } + }, + "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==" + }, + "safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + } + }, + "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==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sc-istanbul": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/sc-istanbul/-/sc-istanbul-0.4.6.tgz", + "integrity": "sha512-qJFF/8tW/zJsbyfh/iT/ZM5QNHE3CXxtLJbZsL+CzdJLBsPD7SedJZoUA4d8iAcN2IoMp/Dx80shOOd2x96X/g==", + "dev": true, + "requires": { + "abbrev": "1.0.x", + "async": "1.x", + "escodegen": "1.8.x", + "esprima": "2.7.x", + "glob": "^5.0.15", + "handlebars": "^4.0.1", + "js-yaml": "3.x", + "mkdirp": "0.5.x", + "nopt": "3.x", + "once": "1.x", + "resolve": "1.1.x", + "supports-color": "^3.1.0", + "which": "^1.1.1", + "wordwrap": "^1.0.0" + }, + "dependencies": { + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==", + "dev": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "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, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "dependencies": { + "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 + } + } + }, + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "requires": { + "loose-envify": "^1.1.0" + } + }, + "scrypt-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" + }, + "secp256k1": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", + "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", + "dev": true, + "requires": { + "elliptic": "^6.5.4", + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" + } + }, + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + }, + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, + "set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dev": true, + "requires": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + } + }, + "set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dev": true, + "requires": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "sha1": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/sha1/-/sha1-1.1.1.tgz", + "integrity": "sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA==", + "dev": true, + "requires": { + "charenc": ">= 0.0.1", + "crypt": ">= 0.0.1" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "shelljs": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "dev": true, + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==" + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "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==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "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==", + "dev": true + } + } + }, + "solc": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.7.3.tgz", + "integrity": "sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA==", + "dev": true, + "requires": { + "command-exists": "^1.2.8", + "commander": "3.0.2", + "follow-redirects": "^1.12.1", + "fs-extra": "^0.30.0", + "js-sha3": "0.8.0", + "memorystream": "^0.3.1", + "require-from-string": "^2.0.0", + "semver": "^5.5.0", + "tmp": "0.0.33" + }, + "dependencies": { + "fs-extra": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" + } + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true + } + } + }, + "solhint": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/solhint/-/solhint-4.1.1.tgz", + "integrity": "sha512-7G4iF8H5hKHc0tR+/uyZesSKtfppFIMvPSW+Ku6MSL25oVRuyFeqNhOsXHfkex64wYJyXs4fe+pvhB069I19Tw==", + "dev": true, + "requires": { + "@solidity-parser/parser": "^0.16.0", + "ajv": "^6.12.6", + "antlr4": "^4.11.0", + "ast-parents": "^0.0.1", + "chalk": "^4.1.2", + "commander": "^10.0.0", + "cosmiconfig": "^8.0.0", + "fast-diff": "^1.2.0", + "glob": "^8.0.3", + "ignore": "^5.2.4", + "js-yaml": "^4.1.0", + "latest-version": "^7.0.0", + "lodash": "^4.17.21", + "pluralize": "^8.0.0", + "prettier": "^2.8.3", + "semver": "^7.5.2", + "strip-ansi": "^6.0.1", + "table": "^6.8.1", + "text-table": "^0.2.0" + }, + "dependencies": { + "@solidity-parser/parser": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.16.2.tgz", + "integrity": "sha512-PI9NfoA3P8XK2VBkK5oIfRgKDsicwDZfkVq9ZTBCQYGOP1N2owgY2dyLGyU5/J/hQs8KRk55kdmvTLjy3Mu3vg==", + "dev": true, + "requires": { + "antlr4ts": "^0.5.0-alpha.4" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "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==", + "dev": true + }, + "commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true + }, + "glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "optional": true + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "solidity-comments-extractor": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/solidity-comments-extractor/-/solidity-comments-extractor-0.0.8.tgz", + "integrity": "sha512-htM7Vn6LhHreR+EglVMd2s+sZhcXAirB1Zlyrv5zBuTxieCvjfnRpd7iZk75m/u6NOlEyQ94C6TWbBn2cY7w8g==", + "dev": true + }, + "solidity-coverage": { + "version": "0.8.7", + "resolved": "https://registry.npmjs.org/solidity-coverage/-/solidity-coverage-0.8.7.tgz", + "integrity": "sha512-RzcPuNsIqVGq5F8rjQZPdI2EVdsRU7w2f1Uk1UY567n9eNcg5LSEQ3Q1WFoy9bi/2AD5SYbYK9SS/Nwh2oYbNw==", + "dev": true, + "requires": { + "@ethersproject/abi": "^5.0.9", + "@solidity-parser/parser": "^0.18.0", + "chalk": "^2.4.2", + "death": "^1.1.0", + "difflib": "^0.2.4", + "fs-extra": "^8.1.0", + "ghost-testrpc": "^0.0.2", + "global-modules": "^2.0.0", + "globby": "^10.0.1", + "jsonschema": "^1.2.4", + "lodash": "^4.17.15", + "mocha": "^10.2.0", + "node-emoji": "^1.10.0", + "pify": "^4.0.1", + "recursive-readdir": "^2.2.2", + "sc-istanbul": "^0.4.5", + "semver": "^7.3.4", + "shelljs": "^0.8.3", + "web3-utils": "^1.3.6" + }, + "dependencies": { + "@solidity-parser/parser": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.18.0.tgz", + "integrity": "sha512-yfORGUIPgLck41qyN7nbwJRAx17/jAIXCTanHOJZhB6PJ1iAk/84b/xlsVKFSyNyLXIj0dhppoE0+CRws7wlzA==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "globby": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", + "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "sonic-boom": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-2.8.0.tgz", + "integrity": "sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==", + "requires": { + "atomic-sleep": "^1.0.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" + }, + "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==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "split-on-first": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", + "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==" + }, + "split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==" + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "stacktrace-parser": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", + "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", + "dev": true, + "requires": { + "type-fest": "^0.7.1" + }, + "dependencies": { + "type-fest": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", + "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", + "dev": true + } + } + }, + "standard-as-callback": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz", + "integrity": "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==" + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + }, + "std-env": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz", + "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==" + }, + "stream-shift": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", + "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==" + }, + "strict-uri-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", + "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==" + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "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==" + } + } + }, + "string-format": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-format/-/string-format-2.0.0.tgz", + "integrity": "sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==", + "dev": true + }, + "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==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "string-width-cjs": { + "version": "npm:string-width@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, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "string.prototype.trim": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + } + }, + "string.prototype.trimend": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + } + }, + "string.prototype.trimstart": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-ansi-cjs": { + "version": "npm:strip-ansi@6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "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==", + "dev": true + }, + "strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==" + }, + "strip-hex-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", + "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==", + "dev": true, + "requires": { + "is-hex-prefixed": "1.0.0" + } + }, + "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 + }, + "sturdy-websocket": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/sturdy-websocket/-/sturdy-websocket-0.2.1.tgz", + "integrity": "sha512-NnzSOEKyv4I83qbuKw9ROtJrrT6Z/Xt7I0HiP/e6H6GnpeTDvzwGIGeJ8slai+VwODSHQDooW2CAilJwT9SpRg==" + }, + "superstruct": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-1.0.3.tgz", + "integrity": "sha512-8iTn3oSS8nRGn+C2pgXSKPI3jmpm6FExNazNpjvqS6ZUJQCej3PUXEKM8NjHBOs54ExM+LPW/FBRhymrdcCiSg==" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "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 + }, + "sync-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/sync-request/-/sync-request-6.1.0.tgz", + "integrity": "sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw==", + "dev": true, + "requires": { + "http-response-object": "^3.0.1", + "sync-rpc": "^1.2.1", + "then-request": "^6.0.0" + } + }, + "sync-rpc": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/sync-rpc/-/sync-rpc-1.3.6.tgz", + "integrity": "sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw==", + "dev": true, + "requires": { + "get-port": "^3.1.0" + } + }, + "synckit": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.8.tgz", + "integrity": "sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==", + "dev": true, + "requires": { + "@pkgr/core": "^0.1.0", + "tslib": "^2.6.2" + }, + "dependencies": { + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + } + } + }, + "system-architecture": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/system-architecture/-/system-architecture-0.1.0.tgz", + "integrity": "sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==" + }, + "table": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", + "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", + "dev": true, + "requires": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "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==", + "dev": true + } + } + }, + "table-layout": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz", + "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==", + "dev": true, + "requires": { + "array-back": "^4.0.1", + "deep-extend": "~0.6.0", + "typical": "^5.2.0", + "wordwrapjs": "^4.0.0" + }, + "dependencies": { + "array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "dev": true + }, + "typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true + } + } + }, + "text-table": { + "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 + }, + "then-request": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/then-request/-/then-request-6.0.2.tgz", + "integrity": "sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA==", + "dev": true, + "requires": { + "@types/concat-stream": "^1.6.0", + "@types/form-data": "0.0.33", + "@types/node": "^8.0.0", + "@types/qs": "^6.2.31", + "caseless": "~0.12.0", + "concat-stream": "^1.6.0", + "form-data": "^2.2.0", + "http-basic": "^8.1.1", + "http-response-object": "^3.0.1", + "promise": "^8.0.0", + "qs": "^6.4.0" + }, + "dependencies": { + "@types/node": { + "version": "8.10.66", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz", + "integrity": "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==", + "dev": true + }, + "form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + } + } + }, + "thread-stream": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-0.15.2.tgz", + "integrity": "sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==", + "requires": { + "real-require": "^0.1.0" + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-regex-range": { + "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==", + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "ts-api-utils": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.2.1.tgz", + "integrity": "sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==", + "dev": true, + "requires": {} + }, + "ts-command-line-args": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/ts-command-line-args/-/ts-command-line-args-2.5.1.tgz", + "integrity": "sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "command-line-args": "^5.1.1", + "command-line-usage": "^6.1.0", + "string-format": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "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==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "ts-essentials": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-7.0.3.tgz", + "integrity": "sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==", + "dev": true, + "requires": {} + }, + "ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "dev": true, + "requires": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "dependencies": { + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + } + } + }, + "tsconfig-paths": { + "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, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "tsort": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tsort/-/tsort-0.0.1.tgz", + "integrity": "sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==", + "dev": true + }, + "tsx": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.7.1.tgz", + "integrity": "sha512-8d6VuibXHtlN5E3zFkgY8u4DX7Y3Z27zvvPKVmLon/D4AjuKzarkUBTLDBgj9iTQ0hg5xM7c/mYiRVM+HETf0g==", + "dev": true, + "requires": { + "esbuild": "~0.19.10", + "fsevents": "~2.3.3", + "get-tsconfig": "^4.7.2" + } + }, + "tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "dev": true + }, + "tweetnacl-util": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", + "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==", + "dev": true + }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "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 + }, + "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 + }, + "typechain": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/typechain/-/typechain-8.3.2.tgz", + "integrity": "sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q==", + "dev": true, + "requires": { + "@types/prettier": "^2.1.1", + "debug": "^4.3.1", + "fs-extra": "^7.0.0", + "glob": "7.1.7", + "js-sha3": "^0.8.0", + "lodash": "^4.17.15", + "mkdirp": "^1.0.4", + "prettier": "^2.3.1", + "ts-command-line-args": "^2.2.0", + "ts-essentials": "^7.0.1" + }, + "dependencies": { + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "requires": { + "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" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true + } + } + }, + "typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + } + }, + "typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + } + }, + "typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + } + }, + "typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true + }, + "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==", + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "typescript": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==" + }, + "typical": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", + "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", + "dev": true + }, + "ufo": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.4.0.tgz", + "integrity": "sha512-Hhy+BhRBleFjpJ2vchUNN40qgkh0366FWJGqVLYBHev0vpHTrXSA0ryT+74UiW6KWsldNurQMKGqCm1M2zBciQ==" + }, + "uglify-js": { + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "dev": true, + "optional": true, + "peer": true + }, + "uint8arrays": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", + "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", + "requires": { + "multiformats": "^9.4.2" + } + }, + "unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + } + }, + "uncrypto": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/uncrypto/-/uncrypto-0.1.3.tgz", + "integrity": "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==" + }, + "undici": { + "version": "5.28.3", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.3.tgz", + "integrity": "sha512-3ItfzbrhDlINjaP0duwnNsKpDQk3acHI3gVJ1z4fmwMK31k5G9OVIAMLSIaP6w4FaGkaAkN6zaQO9LUvZ1t7VA==", + "dev": true, + "requires": { + "@fastify/busboy": "^2.0.0" + } + }, + "undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "unenv": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/unenv/-/unenv-1.9.0.tgz", + "integrity": "sha512-QKnFNznRxmbOF1hDgzpqrlIf6NC5sbZ2OJ+5Wl3OX8uM+LUJXbj4TXvLJCtwbPTmbMHCLIz6JLKNinNsMShK9g==", + "requires": { + "consola": "^3.2.3", + "defu": "^6.1.3", + "mime": "^3.0.0", + "node-fetch-native": "^1.6.1", + "pathe": "^1.1.1" + } + }, + "unfetch": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.2.0.tgz", + "integrity": "sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==" + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true + }, + "unstorage": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.10.1.tgz", + "integrity": "sha512-rWQvLRfZNBpF+x8D3/gda5nUCQL2PgXy2jNG4U7/Rc9BGEv9+CAJd0YyGCROUBKs9v49Hg8huw3aih5Bf5TAVw==", + "requires": { + "anymatch": "^3.1.3", + "chokidar": "^3.5.3", + "destr": "^2.0.2", + "h3": "^1.8.2", + "ioredis": "^5.3.2", + "listhen": "^1.5.5", + "lru-cache": "^10.0.2", + "mri": "^1.2.0", + "node-fetch-native": "^1.4.1", + "ofetch": "^1.3.3", + "ufo": "^1.3.1" + } + }, + "untun": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/untun/-/untun-0.1.3.tgz", + "integrity": "sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ==", + "requires": { + "citty": "^0.1.5", + "consola": "^3.2.3", + "pathe": "^1.1.1" + } + }, + "uqr": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/uqr/-/uqr-0.1.2.tgz", + "integrity": "sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==" + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "use-sync-external-store": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "requires": {} + }, + "utf-8-validate": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", + "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", + "requires": { + "node-gyp-build": "^4.3.0" + } + }, + "utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", + "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "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 + }, + "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==", + "dev": true + }, + "valtio": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/valtio/-/valtio-1.11.2.tgz", + "integrity": "sha512-1XfIxnUXzyswPAPXo1P3Pdx2mq/pIqZICkWN60Hby0d9Iqb+MEIpqgYVlbflvHdrp2YR/q3jyKWRPJJ100yxaw==", + "requires": { + "proxy-compare": "2.5.1", + "use-sync-external-store": "1.2.0" + } + }, + "viem": { + "version": "1.21.4", + "resolved": "https://registry.npmjs.org/viem/-/viem-1.21.4.tgz", + "integrity": "sha512-BNVYdSaUjeS2zKQgPs+49e5JKocfo60Ib2yiXOWBT6LuVxY1I/6fFX3waEtpXvL1Xn4qu+BVitVtMh9lyThyhQ==", + "requires": { + "@adraffy/ens-normalize": "1.10.0", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@scure/bip32": "1.3.2", + "@scure/bip39": "1.2.1", + "abitype": "0.9.8", + "isows": "1.0.3", + "ws": "8.13.0" + }, + "dependencies": { + "@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "requires": { + "@noble/hashes": "1.3.2" + } + }, + "@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==" + }, + "@scure/bip32": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.2.tgz", + "integrity": "sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA==", + "requires": { + "@noble/curves": "~1.2.0", + "@noble/hashes": "~1.3.2", + "@scure/base": "~1.1.2" + } + }, + "@scure/bip39": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.1.tgz", + "integrity": "sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==", + "requires": { + "@noble/hashes": "~1.3.0", + "@scure/base": "~1.1.0" + } + }, + "abitype": { + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/abitype/-/abitype-0.9.8.tgz", + "integrity": "sha512-puLifILdm+8sjyss4S+fsUN09obiT1g2YW6CtcQF+QDzxR0euzgEB29MZujC6zMk2a6SVmtttq1fc6+YFA7WYQ==", + "requires": {} + }, + "ws": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "requires": {} + } + } + }, + "vite": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.3.tgz", + "integrity": "sha512-UfmUD36DKkqhi/F75RrxvPpry+9+tTkrXfMNZD+SboZqBCMsxKtO52XeGzzuh7ioz+Eo/SYDBbdb0Z7vgcDJew==", + "dev": true, + "requires": { + "esbuild": "^0.19.3", + "fsevents": "~2.3.3", + "postcss": "^8.4.35", + "rollup": "^4.2.0" + } + }, + "vue": { + "version": "3.4.19", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.19.tgz", + "integrity": "sha512-W/7Fc9KUkajFU8dBeDluM4sRGc/aa4YJnOYck8dkjgZoXtVsn3OeTGni66FV1l3+nvPA7VBFYtPioaGKUmEADw==", + "requires": { + "@vue/compiler-dom": "3.4.19", + "@vue/compiler-sfc": "3.4.19", + "@vue/runtime-dom": "3.4.19", + "@vue/server-renderer": "3.4.19", + "@vue/shared": "3.4.19" + } + }, + "web3-utils": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.3.tgz", + "integrity": "sha512-OqcUrEE16fDBbGoQtZXWdavsPzbGIDc5v3VrRTZ0XrIpefC/viZ1ZU9bGEemazyS0catk/3rkOOxpzTfY+XsyQ==", + "dev": true, + "requires": { + "@ethereumjs/util": "^8.1.0", + "bn.js": "^5.2.1", + "ethereum-bloom-filters": "^1.0.6", + "ethereum-cryptography": "^2.1.2", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" + }, + "dependencies": { + "@noble/curves": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.1.0.tgz", + "integrity": "sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==", + "dev": true, + "requires": { + "@noble/hashes": "1.3.1" + } + }, + "@noble/hashes": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", + "integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==", + "dev": true + }, + "@scure/bip32": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.1.tgz", + "integrity": "sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A==", + "dev": true, + "requires": { + "@noble/curves": "~1.1.0", + "@noble/hashes": "~1.3.1", + "@scure/base": "~1.1.0" + } + }, + "@scure/bip39": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.1.tgz", + "integrity": "sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==", + "dev": true, + "requires": { + "@noble/hashes": "~1.3.0", + "@scure/base": "~1.1.0" + } + }, + "ethereum-cryptography": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.1.2.tgz", + "integrity": "sha512-Z5Ba0T0ImZ8fqXrJbpHcbpAvIswRte2wGNR/KePnu8GbbvgJ47lMxT/ZZPG6i9Jaht4azPDop4HaM00J0J59ug==", + "dev": true, + "requires": { + "@noble/curves": "1.1.0", + "@noble/hashes": "1.3.1", + "@scure/bip32": "1.3.1", + "@scure/bip39": "1.2.1" + } + } + } + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "websocket": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", + "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", + "requires": { + "bufferutil": "^4.0.1", + "debug": "^2.2.0", + "es5-ext": "^0.10.50", + "typedarray-to-buffer": "^3.1.5", + "utf-8-validate": "^5.0.2", + "yaeti": "^0.0.6" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } + } + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==" + }, + "which-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.4", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + } + }, + "widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dev": true, + "requires": { + "string-width": "^4.0.0" + } + }, + "word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true + }, + "wordwrapjs": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", + "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", + "dev": true, + "requires": { + "reduce-flatten": "^2.0.0", + "typical": "^5.2.0" + }, + "dependencies": { + "typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true + } + } + }, + "workerpool": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", + "dev": true + }, + "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, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "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==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "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==", + "dev": true + } + } + }, + "wrap-ansi-cjs": { + "version": "npm:wrap-ansi@7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "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==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "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==", + "dev": true + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "requires": {} + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yaeti": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", + "integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==" + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "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" + } + }, + "yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true + }, + "yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "requires": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + } + }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true + }, + "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 + }, + "zksync-ethers": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/zksync-ethers/-/zksync-ethers-5.4.0.tgz", + "integrity": "sha512-UG6czQ/xGqe7iv/Pvs3r1W/ardflSUyCZ5ZbpINNunFArxVEPVobjNLNIJjD0ZRFnEi8LGXSnBPmBnurwk4FRQ==", + "dev": true, + "requires": { + "ethers": "~5.7.0" + }, + "dependencies": { + "@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==", + "dev": true, + "requires": { + "@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" + } + }, + "@ethersproject/hdnode": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", + "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", + "dev": true, + "requires": { + "@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" + } + }, + "@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==", + "dev": true, + "requires": { + "@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" + } + }, + "@ethersproject/pbkdf2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", + "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/sha2": "^5.7.0" + } + }, + "@ethersproject/solidity": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", + "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", + "dev": true, + "requires": { + "@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" + } + }, + "@ethersproject/units": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", + "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", + "dev": true, + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@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==", + "dev": true, + "requires": { + "@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" + } + }, + "@ethersproject/wordlists": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", + "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", + "dev": true, + "requires": { + "@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" + } + }, + "aes-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", + "dev": true + }, + "ethers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "dev": true, + "requires": { + "@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" + } + } + } + }, + "zod": { + "version": "3.22.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz", + "integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==" + } } } From 5931a275c9f8638cb8c62b366744f4c9fd72533d Mon Sep 17 00:00:00 2001 From: Nicholas Rodrigues Lordello Date: Tue, 19 Mar 2024 10:43:53 +0100 Subject: [PATCH 07/12] Safe 4337 Module v0.3.0 (#331) This PR does the final touches for the Safe 4337 module v0.3.0. Namely, it: - uploads the audit report - updates the final address the module is expected to land on --- modules/4337/CHANGELOG.md | 2 +- modules/4337/README.md | 1 + ...rt-v2.0.pdf => audit-report-ackee-v2.0.pdf} | Bin modules/4337/docs/v0.2.0/audit.md | 2 ++ modules/4337/docs/v0.3.0/audit-report-v3.0.pdf | Bin 0 -> 982169 bytes modules/4337/docs/v0.3.0/audit.md | 13 +++++++++++++ 6 files changed, 17 insertions(+), 1 deletion(-) rename modules/4337/docs/v0.2.0/{audit-report-v2.0.pdf => audit-report-ackee-v2.0.pdf} (100%) create mode 100644 modules/4337/docs/v0.3.0/audit-report-v3.0.pdf create mode 100644 modules/4337/docs/v0.3.0/audit.md diff --git a/modules/4337/CHANGELOG.md b/modules/4337/CHANGELOG.md index fd6ca87a9..a9c1d8bc1 100644 --- a/modules/4337/CHANGELOG.md +++ b/modules/4337/CHANGELOG.md @@ -17,7 +17,7 @@ The official deployments support the EntryPoint v0.7.0 with the canonical deploy ## Expected addresses - `SafeModuleSetup` at `0x2dd68b007B46fBe91B9A7c3EDa5A7a1063cB5b47` -- `Safe4337Module` at `0xfaa6F2eC82BdA7C22220522869E854a3446053A5` +- `Safe4337Module` at `0x75cf11467937ce3F2f357CE24ffc3DBF8fD5c226` ## Changes diff --git a/modules/4337/README.md b/modules/4337/README.md index e56685439..63538a7ed 100644 --- a/modules/4337/README.md +++ b/modules/4337/README.md @@ -244,6 +244,7 @@ npx hardhat --network etherscan-verify - [For version 0.1.0 by Ackee Blockchain](docs/v0.1.0/audit.md) - [For version 0.2.0 by Multiple Auditors](docs/v0.2.0/audit.md) +- [For version 0.3.0 by Ackee Blockchain](docs/v0.3.0/audit.md) ## Security and Liability diff --git a/modules/4337/docs/v0.2.0/audit-report-v2.0.pdf b/modules/4337/docs/v0.2.0/audit-report-ackee-v2.0.pdf similarity index 100% rename from modules/4337/docs/v0.2.0/audit-report-v2.0.pdf rename to modules/4337/docs/v0.2.0/audit-report-ackee-v2.0.pdf diff --git a/modules/4337/docs/v0.2.0/audit.md b/modules/4337/docs/v0.2.0/audit.md index 4c6235720..e70384eff 100644 --- a/modules/4337/docs/v0.2.0/audit.md +++ b/modules/4337/docs/v0.2.0/audit.md @@ -34,6 +34,8 @@ The final audit was performed on commit [3853f34f31837e0a0aee47a4452564278f8c62b No issues were reported related to the module's business logic, but we have implemented some of the suggested optimisations from the audit report into the codebase. These changes will be included in the next release of the 4337 module. For more information about the audit findings, please refer to the report. +Changes from the audit were implemented in commit [c2bdf0059770916ad178a45c2ad6f2cb88f85ff7](https://github.com/safe-global/safe-modules/tree/c2bdf0059770916ad178a45c2ad6f2cb88f85ff7). + ### Files - [Final audit report](audit-report-openzeppelin.pdf) diff --git a/modules/4337/docs/v0.3.0/audit-report-v3.0.pdf b/modules/4337/docs/v0.3.0/audit-report-v3.0.pdf new file mode 100644 index 0000000000000000000000000000000000000000..7f0fb092eec5e8b45c8279d486fee5af9ad7595e GIT binary patch literal 982169 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 z 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∈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

EkR)KtodKuYWxHM6R_QYUwuBk=vuFY@*z`dMAl^ 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≠PzlcULC*(kS7cq< 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≻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. + +## Notes + +The final audit was performed on commit [7b3ea24cf06dca2bc88405fd1c991b2338f565f8](https://github.com/safe-global/safe-modules/tree/7b3ea24cf06dca2bc88405fd1c991b2338f565f8). + +### Files + +- [Final audit report](audit-report-v3.0.pdf) From 24e22f85ce795a82a0db0c94f7a7defd2a3fe5d4 Mon Sep 17 00:00:00 2001 From: Shebin John Date: Tue, 19 Mar 2024 16:03:21 +0530 Subject: [PATCH 08/12] Rebuild `package-lock.json` (#332) This PR solves the problem created due to the problem mentioned in https://github.com/npm/cli/issues/4828 We are rebuilding the lock files so it also works with Apple Silicon Macs. --- package-lock.json | 10718 +++++++++++++++++++++++++------------------- 1 file changed, 6102 insertions(+), 4616 deletions(-) diff --git a/package-lock.json b/package-lock.json index a3b7a5529..881396fcd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,7 +1,7 @@ { "name": "@safe-global/safe-modules", "version": "1.0.0", - "lockfileVersion": 3, + "lockfileVersion": 2, "requires": true, "packages": { "": { @@ -51,7 +51,8 @@ }, "examples/4337-gas-metering/node_modules/@noble/curves": { "version": "1.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", "dependencies": { "@noble/hashes": "1.3.2" }, @@ -61,7 +62,8 @@ }, "examples/4337-gas-metering/node_modules/@noble/hashes": { "version": "1.3.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", "engines": { "node": ">= 16" }, @@ -71,7 +73,8 @@ }, "examples/4337-gas-metering/node_modules/@scure/bip32": { "version": "1.3.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.2.tgz", + "integrity": "sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA==", "dependencies": { "@noble/curves": "~1.2.0", "@noble/hashes": "~1.3.2", @@ -83,7 +86,8 @@ }, "examples/4337-gas-metering/node_modules/@scure/bip39": { "version": "1.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.1.tgz", + "integrity": "sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==", "dependencies": { "@noble/hashes": "~1.3.0", "@scure/base": "~1.1.0" @@ -94,7 +98,8 @@ }, "examples/4337-gas-metering/node_modules/abitype": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/abitype/-/abitype-1.0.0.tgz", + "integrity": "sha512-NMeMah//6bJ56H5XRj8QCV4AwuW6hB6zqz2LnhhLdcWVQOsXki6/Pn3APeqxCma62nXIcmZWdu1DlHWS74umVQ==", "funding": { "url": "https://github.com/sponsors/wevm" }, @@ -113,20 +118,22 @@ }, "examples/4337-gas-metering/node_modules/permissionless": { "version": "0.0.35", - "license": "MIT", + "resolved": "https://registry.npmjs.org/permissionless/-/permissionless-0.0.35.tgz", + "integrity": "sha512-wWnFJW9bCiIBvLVkZ7aPbX0w5LIeelb5dsBOKHIEaRf9xKaxNrpRWCsBRHHjiL0lhvqPlHvEmjJ71Y2mxPyDpg==", "peerDependencies": { "viem": "^2.0.0" } }, "examples/4337-gas-metering/node_modules/viem": { "version": "2.7.9", + "resolved": "https://registry.npmjs.org/viem/-/viem-2.7.9.tgz", + "integrity": "sha512-iDfc8TwaZFp1K95zlsxYh6Cs0OWCt35Tqs8uYgXKSxtz7w075mZ0H5SJ8zSyJGoEaticVDhtdmRRX6TtcW9EeQ==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/wevm" } ], - "license": "MIT", "dependencies": { "@adraffy/ens-normalize": "1.10.0", "@noble/curves": "1.2.0", @@ -148,7 +155,8 @@ }, "examples/4337-gas-metering/node_modules/ws": { "version": "8.13.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", "engines": { "node": ">=10.0.0" }, @@ -224,45 +232,45 @@ "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==" }, "examples/4337-passkeys/node_modules/@web3modal/common": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/@web3modal/common/-/common-4.0.13.tgz", - "integrity": "sha512-71fVfEy9k7B6xVgswY220Xy4Tl4iCINc1E4mr2P5NfEPkSwhmXm/oO2QBIpefml/cJ7Zt4oFbta8NzyN+V5bQw==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@web3modal/common/-/common-4.1.1.tgz", + "integrity": "sha512-InaJY+PfjtcT4ewySMDTCON2jGuk5kKVuleIz04BWNU92Gm2S4hU7knLhIzPshpyv31Hv3/kO2NFhaxx3CLD+w==", "dependencies": { "dayjs": "1.11.10" } }, "examples/4337-passkeys/node_modules/@web3modal/core": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/@web3modal/core/-/core-4.0.13.tgz", - "integrity": "sha512-8zCu+oZ3xwCQtUevjP09BPCkvJo2tRnBcOzMDhkFzqty2nTE4GBuaI2Bgp/gcrLJNN/RLPQ8BcEdrV2k95MOIg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@web3modal/core/-/core-4.1.1.tgz", + "integrity": "sha512-+FT73nYHKqF0VlkB9lo6mvfR/WjB4dz24JPwKb2Vq05JVyOcnbt5S06IeTtjI7zgKv3MyKzDzxh6z1ScgbTaRA==", "dependencies": { - "@web3modal/common": "4.0.13", - "@web3modal/wallet": "4.0.13", + "@web3modal/common": "4.1.1", + "@web3modal/wallet": "4.1.1", "valtio": "1.11.2" } }, "examples/4337-passkeys/node_modules/@web3modal/ethers": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/@web3modal/ethers/-/ethers-4.0.13.tgz", - "integrity": "sha512-K0GOrJNOB9CPCay5JLlsS+QQDpIVgd2NC9RSWSML/OMwE+klZQaWvkI7WJlWXjXY3wg2uvJRRxE7rarllSlPkA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@web3modal/ethers/-/ethers-4.1.1.tgz", + "integrity": "sha512-GLGYAGmJgAnlNnjEehLFIaPKzyQIQky9UO4gzxNfEl7Mt3p9gHwY5idZzzLlNL+omZMtL8EeZRnsbDOKoYoyaQ==", "dependencies": { "@coinbase/wallet-sdk": "3.9.1", "@walletconnect/ethereum-provider": "2.11.1", - "@web3modal/polyfills": "4.0.13", - "@web3modal/scaffold": "4.0.13", - "@web3modal/scaffold-react": "4.0.13", - "@web3modal/scaffold-utils": "4.0.13", - "@web3modal/scaffold-vue": "4.0.13", + "@web3modal/polyfills": "4.1.1", + "@web3modal/scaffold": "4.1.1", + "@web3modal/scaffold-react": "4.1.1", + "@web3modal/scaffold-utils": "4.1.1", + "@web3modal/scaffold-vue": "4.1.1", "valtio": "1.11.2" }, "optionalDependencies": { - "@web3modal/siwe": "4.0.13", + "@web3modal/siwe": "4.1.1", "react": ">=17", "react-dom": ">=17", "vue": ">=3" }, "peerDependencies": { - "@web3modal/siwe": "4.0.13", + "@web3modal/siwe": "4.1.1", "ethers": ">=6.0.0", "react": ">=17", "react-dom": ">=17", @@ -284,28 +292,29 @@ } }, "examples/4337-passkeys/node_modules/@web3modal/polyfills": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/@web3modal/polyfills/-/polyfills-4.0.13.tgz", - "integrity": "sha512-Pvb2uF18+h3r+kKa6ELn5Vg7lQRNoBmZ9GuH//AY1lX6AII75hPH78hKh78EscZctVFInbVxx8RBTFwfbXUzQA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@web3modal/polyfills/-/polyfills-4.1.1.tgz", + "integrity": "sha512-HQ90relyjjLfTj5XJhhDV9l3Mp10Rvv/MN+GCvzEx/xY7Tz4yhmKZUX3c519pz2BeVYjea+xwwu6OoOwd3GAXQ==", "dependencies": { "buffer": "6.0.3" } }, "examples/4337-passkeys/node_modules/@web3modal/scaffold": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/@web3modal/scaffold/-/scaffold-4.0.13.tgz", - "integrity": "sha512-ur543j3KunFUIoSAT4GGwAX0GxVPHNkuCEUGJL52KSfXG6rqHlPoVMeGyZKN4Mo2FyQCh76vFgm9Vv2GribuDQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@web3modal/scaffold/-/scaffold-4.1.1.tgz", + "integrity": "sha512-GBryCiyl+taz5DPq0expxzfMVcrpKjWvEBSAqT1tPUSthnzOWnVF77XlUAYgFZqzPsEu9lQ1dHCdqZx7WWMCXA==", "dependencies": { - "@web3modal/common": "4.0.13", - "@web3modal/core": "4.0.13", - "@web3modal/ui": "4.0.13", + "@web3modal/common": "4.1.1", + "@web3modal/core": "4.1.1", + "@web3modal/ui": "4.1.1", "lit": "3.1.0" }, "optionalDependencies": { - "@web3modal/siwe": "4.0.13" + "@web3modal/siwe": "4.1.1" }, "peerDependencies": { - "@web3modal/siwe": ">=4.0.13" + "@web3modal/siwe": "4.1.1", + "@web3modal/wallet": "4.1.1" }, "peerDependenciesMeta": { "@web3modal/siwe": { @@ -314,11 +323,11 @@ } }, "examples/4337-passkeys/node_modules/@web3modal/scaffold-react": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/@web3modal/scaffold-react/-/scaffold-react-4.0.13.tgz", - "integrity": "sha512-275GNgj7sYYdhP1V3u5xaoxirIgumvAORkSguj2qahrc911NTfWP1foXaCE1cMj4TolV8r2esok8Jmh5r4SETg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@web3modal/scaffold-react/-/scaffold-react-4.1.1.tgz", + "integrity": "sha512-g+iVswup3MRlDTnwJoIayLDVhFyCVTNTfVaEYaxvr8ADKNb90t3nzY742ZVQOdYitvrWrAMboVaOB6LuLCvrsA==", "dependencies": { - "@web3modal/scaffold": "4.0.13" + "@web3modal/scaffold": "4.1.1" }, "peerDependencies": { "react": ">=17", @@ -326,73 +335,51 @@ } }, "examples/4337-passkeys/node_modules/@web3modal/scaffold-utils": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/@web3modal/scaffold-utils/-/scaffold-utils-4.0.13.tgz", - "integrity": "sha512-V/iJ0ec92oZSBopxWaPpy8k2HZ4kUihhGDXfV11A9GQVIg7+JY2m+Q8vUBrgHExmb38GZWgqAGUeG/YlTdLmQw==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@web3modal/scaffold-utils/-/scaffold-utils-4.1.1.tgz", + "integrity": "sha512-v9TlKchCPTOGitduI3hUm7PReWcxt55aifYHuCFklwgFatBlUZb/JrXpiCUhp6RpOfnSIA5gV65eyEucIbKY5A==", "dependencies": { - "@web3modal/core": "4.0.13", - "@web3modal/polyfills": "4.0.13", + "@web3modal/core": "4.1.1", + "@web3modal/polyfills": "4.1.1", "valtio": "1.11.2" } }, "examples/4337-passkeys/node_modules/@web3modal/scaffold-vue": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/@web3modal/scaffold-vue/-/scaffold-vue-4.0.13.tgz", - "integrity": "sha512-G50zVC4vqd//bNDc8+K08EmAUs9pXSgmWj8CarPu4X5x69p0dMPXzDuTMQJ/Lw2WZ2WBvycwY8dyvvzI6Ff1Xw==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@web3modal/scaffold-vue/-/scaffold-vue-4.1.1.tgz", + "integrity": "sha512-8qDnRmOR1jMlEB6fuFZ2CiWFYtq6M1OGKcN2DGz4c0dggivsa10cjUXqJqrsic6nUxWKPWou0+osIlJ9hR1YBA==", "dependencies": { - "@web3modal/scaffold": "4.0.13" + "@web3modal/scaffold": "4.1.1" }, "peerDependencies": { "vue": ">=3" } }, - "examples/4337-passkeys/node_modules/@web3modal/scaffold/node_modules/lit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lit/-/lit-3.1.0.tgz", - "integrity": "sha512-rzo/hmUqX8zmOdamDAeydfjsGXbbdtAFqMhmocnh2j9aDYqbu0fjXygjCa0T99Od9VQ/2itwaGrjZz/ZELVl7w==", - "dependencies": { - "@lit/reactive-element": "^2.0.0", - "lit-element": "^4.0.0", - "lit-html": "^3.1.0" - } - }, "examples/4337-passkeys/node_modules/@web3modal/siwe": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/@web3modal/siwe/-/siwe-4.0.13.tgz", - "integrity": "sha512-wMEOJxgWQK97mdI5IWAR4uA8NHLOjOM3PabiQYEw7hKACwK4C2bJTS1Lp6ddO3a3P2WU4GxrtoqBnpbc6Z+XgQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@web3modal/siwe/-/siwe-4.1.1.tgz", + "integrity": "sha512-qQ4NKxrlD0gcFqh1G3yLlyRYABoBU7uXw3RQqpf1BiJSSMT2ePBfOwsCTJ6OPuT1RjKt9JNBADctua/sqEItCw==", "optional": true, "dependencies": { - "@web3modal/core": "4.0.13", - "@web3modal/scaffold-utils": "4.0.13" - }, - "peerDependencies": { - "lit": ">=3", - "valtio": ">=1 <2" + "@web3modal/core": "4.1.1", + "@web3modal/scaffold-utils": "4.1.1", + "lit": "3.1.0", + "valtio": "1.11.2" } }, "examples/4337-passkeys/node_modules/@web3modal/ui": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/@web3modal/ui/-/ui-4.0.13.tgz", - "integrity": "sha512-G2SBYI1e7jIOjtbk5E/CoN0TyHj4mFG0L0FAsqJWGDONbwq+rYEA7pjyIY5Tobh7vgadQZvrANb5KUJfI6tCZQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@web3modal/ui/-/ui-4.1.1.tgz", + "integrity": "sha512-6ntwIdi3VHR1HLIiyoannOAcckDs3XYrxxIu8cflba6UyuASJ6AH/AY3ULE88fvE55jM/Lra3uuOYj8yE5QjUw==", "dependencies": { "lit": "3.1.0", "qrcode": "1.5.3" } }, - "examples/4337-passkeys/node_modules/@web3modal/ui/node_modules/lit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lit/-/lit-3.1.0.tgz", - "integrity": "sha512-rzo/hmUqX8zmOdamDAeydfjsGXbbdtAFqMhmocnh2j9aDYqbu0fjXygjCa0T99Od9VQ/2itwaGrjZz/ZELVl7w==", - "dependencies": { - "@lit/reactive-element": "^2.0.0", - "lit-element": "^4.0.0", - "lit-html": "^3.1.0" - } - }, "examples/4337-passkeys/node_modules/@web3modal/wallet": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/@web3modal/wallet/-/wallet-4.0.13.tgz", - "integrity": "sha512-Luqnu/zYWruBk4w5cQM6I8fxKvVJ8b5TiMm7r0PNTyKuS5MNIeVE6BBtT5PR/S1q5XM5BKh/nQ8DBky8GhuSPA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@web3modal/wallet/-/wallet-4.1.1.tgz", + "integrity": "sha512-KgITukYJXDete4MeH95jditHtQ1gvB+q97td0cjxA+xwzLCgihDfHZEq1kuVg5Fj40ECUV4O6IBc++cNeL9EXQ==", "dependencies": { "zod": "3.22.4" } @@ -425,15 +412,13 @@ } }, "examples/4337-passkeys/node_modules/lit": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lit/-/lit-3.1.2.tgz", - "integrity": "sha512-VZx5iAyMtX7CV4K8iTLdCkMaYZ7ipjJZ0JcSdJ0zIdGxxyurjIn7yuuSxNBD7QmjvcNJwr0JS4cAdAtsy7gZ6w==", - "optional": true, - "peer": true, + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lit/-/lit-3.1.0.tgz", + "integrity": "sha512-rzo/hmUqX8zmOdamDAeydfjsGXbbdtAFqMhmocnh2j9aDYqbu0fjXygjCa0T99Od9VQ/2itwaGrjZz/ZELVl7w==", "dependencies": { - "@lit/reactive-element": "^2.0.4", - "lit-element": "^4.0.4", - "lit-html": "^3.1.2" + "@lit/reactive-element": "^2.0.0", + "lit-element": "^4.0.0", + "lit-html": "^3.1.0" } }, "examples/4337-passkeys/node_modules/lit-element": { @@ -532,13 +517,15 @@ }, "modules/4337/node_modules/@adraffy/ens-normalize": { "version": "1.10.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz", + "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==", + "dev": true }, "modules/4337/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==", "dev": true, - "license": "MIT", "engines": { "node": ">= 16" }, @@ -548,8 +535,9 @@ }, "modules/4337/node_modules/@nomicfoundation/hardhat-chai-matchers": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-2.0.3.tgz", + "integrity": "sha512-A40s7EAK4Acr8UP1Yudgi9GGD9Cca/K3LHt3DzmRIje14lBfHtg9atGQ7qK56vdPcTwKmeaGn30FzxMUfPGEMw==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "@types/chai-as-promised": "^7.1.3", @@ -566,8 +554,9 @@ }, "modules/4337/node_modules/@nomicfoundation/hardhat-ethers": { "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ethers/-/hardhat-ethers-3.0.5.tgz", + "integrity": "sha512-RNFe8OtbZK6Ila9kIlHp0+S80/0Bu/3p41HUpaRIoHLm6X3WekTd83vob3rE54Duufu1edCiBDxspBzi2rxHHw==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "debug": "^4.1.1", @@ -580,8 +569,9 @@ }, "modules/4337/node_modules/@nomicfoundation/hardhat-toolbox": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-toolbox/-/hardhat-toolbox-4.0.0.tgz", + "integrity": "sha512-jhcWHp0aHaL0aDYj8IJl80v4SZXWMS1A2XxXa1CA6pBiFfJKuZinCkO6wb+POAt0LIfXB3gA3AgdcOccrcwBwA==", "dev": true, - "license": "MIT", "peerDependencies": { "@nomicfoundation/hardhat-chai-matchers": "^2.0.0", "@nomicfoundation/hardhat-ethers": "^3.0.0", @@ -604,8 +594,9 @@ }, "modules/4337/node_modules/@simplewebauthn/server": { "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@simplewebauthn/server/-/server-9.0.0.tgz", + "integrity": "sha512-pm3UWhZrneBoSDQmtYTScZeOhcKbPch/zmMgfJZJY3sE1l0VAQsAKlIjoLGRrw2vXYSL7Eslhh0Qdb301IPxTQ==", "dev": true, - "license": "MIT", "dependencies": { "@hexagon/base64": "^1.1.27", "@peculiar/asn1-android": "^2.3.10", @@ -623,8 +614,9 @@ }, "modules/4337/node_modules/@typechain/ethers-v6": { "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@typechain/ethers-v6/-/ethers-v6-0.5.1.tgz", + "integrity": "sha512-F+GklO8jBWlsaVV+9oHaPh5NJdd6rAKN4tklGfInX1Q7h0xPgVLP39Jl3eCulPB5qexI71ZFHwbljx4ZXNfouA==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "lodash": "^4.17.15", @@ -638,8 +630,9 @@ }, "modules/4337/node_modules/@typechain/hardhat": { "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@typechain/hardhat/-/hardhat-9.1.0.tgz", + "integrity": "sha512-mtaUlzLlkqTlfPwB3FORdejqBskSnh+Jl8AIJGjXNAQfRQ4ofHADPl1+oU7Z3pAJzmZbUXII8MhOLQltcHgKnA==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "fs-extra": "^9.1.0" @@ -653,8 +646,9 @@ }, "modules/4337/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==", "dev": true, - "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -666,14 +660,17 @@ }, "modules/4337/node_modules/commander": { "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "dev": true, - "license": "MIT", "engines": { "node": ">= 12" } }, "modules/4337/node_modules/ethers": { "version": "6.11.1", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.11.1.tgz", + "integrity": "sha512-mxTAE6wqJQAbp5QAe/+o+rXOID7Nw91OZXvgpjDa1r4fAbq2Nu314oEZSbjoRLacuCzs7kUC3clEvkCQowffGg==", "dev": true, "funding": [ { @@ -685,7 +682,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@adraffy/ens-normalize": "1.10.1", "@noble/curves": "1.2.0", @@ -701,8 +697,9 @@ }, "modules/4337/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==", "dev": true, - "license": "MIT", "dependencies": { "@noble/hashes": "1.3.2" }, @@ -712,13 +709,15 @@ }, "modules/4337/node_modules/ethers/node_modules/@types/node": { "version": "18.15.13", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", + "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==", + "dev": true }, "modules/4337/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==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "at-least-node": "^1.0.0", @@ -732,8 +731,9 @@ }, "modules/4337/node_modules/jsonfile": { "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "universalify": "^2.0.0" @@ -744,16 +744,18 @@ }, "modules/4337/node_modules/semver": { "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver" } }, "modules/4337/node_modules/solc": { "version": "0.8.24", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.8.24.tgz", + "integrity": "sha512-G5yUqjTUPc8Np74sCFwfsevhBPlUifUOfhYrgyu6CmYlC6feSw0YS6eZW47XDT23k3JYdKx5nJ+Q7whCEmNcoA==", "dev": true, - "license": "MIT", "dependencies": { "command-exists": "^1.2.8", "commander": "^8.1.0", @@ -772,13 +774,15 @@ }, "modules/4337/node_modules/tslib": { "version": "2.4.0", - "dev": true, - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true }, "modules/4337/node_modules/universalify": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">= 10.0.0" @@ -786,8 +790,9 @@ }, "modules/4337/node_modules/ws": { "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", "dev": true, - "license": "MIT", "engines": { "node": ">=10.0.0" }, @@ -806,8 +811,9 @@ }, "modules/4337/node_modules/yargs": { "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, - "license": "MIT", "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -823,8 +829,9 @@ }, "modules/4337/node_modules/yargs-parser": { "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, - "license": "ISC", "engines": { "node": ">=12" } @@ -863,13 +870,15 @@ }, "modules/allowances/node_modules/@adraffy/ens-normalize": { "version": "1.10.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz", + "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==", + "dev": true }, "modules/allowances/node_modules/@noble/curves": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", "dev": true, - "license": "MIT", "dependencies": { "@noble/hashes": "1.3.2" }, @@ -879,8 +888,9 @@ }, "modules/allowances/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==", "dev": true, - "license": "MIT", "engines": { "node": ">= 16" }, @@ -890,8 +900,9 @@ }, "modules/allowances/node_modules/@nomicfoundation/hardhat-chai-matchers": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-2.0.6.tgz", + "integrity": "sha512-Te1Uyo9oJcTCF0Jy9dztaLpshmlpjLf2yPtWXlXuLjMt3RRSmJLm/+rKVTW6gfadAEs12U/it6D0ZRnnRGiICQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/chai-as-promised": "^7.1.3", "chai-as-promised": "^7.1.1", @@ -907,8 +918,9 @@ }, "modules/allowances/node_modules/@nomicfoundation/hardhat-ethers": { "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ethers/-/hardhat-ethers-3.0.5.tgz", + "integrity": "sha512-RNFe8OtbZK6Ila9kIlHp0+S80/0Bu/3p41HUpaRIoHLm6X3WekTd83vob3rE54Duufu1edCiBDxspBzi2rxHHw==", "dev": true, - "license": "MIT", "dependencies": { "debug": "^4.1.1", "lodash.isequal": "^4.5.0" @@ -920,8 +932,9 @@ }, "modules/allowances/node_modules/@nomicfoundation/hardhat-toolbox": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-toolbox/-/hardhat-toolbox-4.0.0.tgz", + "integrity": "sha512-jhcWHp0aHaL0aDYj8IJl80v4SZXWMS1A2XxXa1CA6pBiFfJKuZinCkO6wb+POAt0LIfXB3gA3AgdcOccrcwBwA==", "dev": true, - "license": "MIT", "peerDependencies": { "@nomicfoundation/hardhat-chai-matchers": "^2.0.0", "@nomicfoundation/hardhat-ethers": "^3.0.0", @@ -944,8 +957,9 @@ }, "modules/allowances/node_modules/@typechain/ethers-v6": { "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@typechain/ethers-v6/-/ethers-v6-0.5.1.tgz", + "integrity": "sha512-F+GklO8jBWlsaVV+9oHaPh5NJdd6rAKN4tklGfInX1Q7h0xPgVLP39Jl3eCulPB5qexI71ZFHwbljx4ZXNfouA==", "dev": true, - "license": "MIT", "dependencies": { "lodash": "^4.17.15", "ts-essentials": "^7.0.1" @@ -958,8 +972,9 @@ }, "modules/allowances/node_modules/@typechain/hardhat": { "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@typechain/hardhat/-/hardhat-9.1.0.tgz", + "integrity": "sha512-mtaUlzLlkqTlfPwB3FORdejqBskSnh+Jl8AIJGjXNAQfRQ4ofHADPl1+oU7Z3pAJzmZbUXII8MhOLQltcHgKnA==", "dev": true, - "license": "MIT", "dependencies": { "fs-extra": "^9.1.0" }, @@ -972,6 +987,8 @@ }, "modules/allowances/node_modules/ethers": { "version": "6.11.1", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.11.1.tgz", + "integrity": "sha512-mxTAE6wqJQAbp5QAe/+o+rXOID7Nw91OZXvgpjDa1r4fAbq2Nu314oEZSbjoRLacuCzs7kUC3clEvkCQowffGg==", "dev": true, "funding": [ { @@ -983,7 +1000,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@adraffy/ens-normalize": "1.10.1", "@noble/curves": "1.2.0", @@ -999,13 +1015,15 @@ }, "modules/allowances/node_modules/ethers/node_modules/@types/node": { "version": "18.15.13", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", + "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==", + "dev": true }, "modules/allowances/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==", "dev": true, - "license": "MIT", "dependencies": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", @@ -1018,8 +1036,9 @@ }, "modules/allowances/node_modules/jsonfile": { "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, - "license": "MIT", "dependencies": { "universalify": "^2.0.0" }, @@ -1029,21 +1048,24 @@ }, "modules/allowances/node_modules/tslib": { "version": "2.4.0", - "dev": true, - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true }, "modules/allowances/node_modules/universalify": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, - "license": "MIT", "engines": { "node": ">= 10.0.0" } }, "modules/allowances/node_modules/ws": { "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", "dev": true, - "license": "MIT", "engines": { "node": ">=10.0.0" }, @@ -1083,14 +1105,16 @@ }, "modules/passkey/node_modules/@adraffy/ens-normalize": { "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz", + "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==", "dev": true, - "license": "MIT", "peer": true }, "modules/passkey/node_modules/@noble/curves": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", "dev": true, - "license": "MIT", "dependencies": { "@noble/hashes": "1.3.2" }, @@ -1100,8 +1124,9 @@ }, "modules/passkey/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==", "dev": true, - "license": "MIT", "engines": { "node": ">= 16" }, @@ -1111,8 +1136,9 @@ }, "modules/passkey/node_modules/@nomicfoundation/hardhat-chai-matchers": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-2.0.6.tgz", + "integrity": "sha512-Te1Uyo9oJcTCF0Jy9dztaLpshmlpjLf2yPtWXlXuLjMt3RRSmJLm/+rKVTW6gfadAEs12U/it6D0ZRnnRGiICQ==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "@types/chai-as-promised": "^7.1.3", @@ -1129,8 +1155,9 @@ }, "modules/passkey/node_modules/@nomicfoundation/hardhat-ethers": { "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ethers/-/hardhat-ethers-3.0.5.tgz", + "integrity": "sha512-RNFe8OtbZK6Ila9kIlHp0+S80/0Bu/3p41HUpaRIoHLm6X3WekTd83vob3rE54Duufu1edCiBDxspBzi2rxHHw==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "debug": "^4.1.1", @@ -1143,8 +1170,9 @@ }, "modules/passkey/node_modules/@nomicfoundation/hardhat-toolbox": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-toolbox/-/hardhat-toolbox-4.0.0.tgz", + "integrity": "sha512-jhcWHp0aHaL0aDYj8IJl80v4SZXWMS1A2XxXa1CA6pBiFfJKuZinCkO6wb+POAt0LIfXB3gA3AgdcOccrcwBwA==", "dev": true, - "license": "MIT", "peerDependencies": { "@nomicfoundation/hardhat-chai-matchers": "^2.0.0", "@nomicfoundation/hardhat-ethers": "^3.0.0", @@ -1167,8 +1195,9 @@ }, "modules/passkey/node_modules/@typechain/ethers-v6": { "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@typechain/ethers-v6/-/ethers-v6-0.5.1.tgz", + "integrity": "sha512-F+GklO8jBWlsaVV+9oHaPh5NJdd6rAKN4tklGfInX1Q7h0xPgVLP39Jl3eCulPB5qexI71ZFHwbljx4ZXNfouA==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "lodash": "^4.17.15", @@ -1182,8 +1211,9 @@ }, "modules/passkey/node_modules/@typechain/hardhat": { "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@typechain/hardhat/-/hardhat-9.1.0.tgz", + "integrity": "sha512-mtaUlzLlkqTlfPwB3FORdejqBskSnh+Jl8AIJGjXNAQfRQ4ofHADPl1+oU7Z3pAJzmZbUXII8MhOLQltcHgKnA==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "fs-extra": "^9.1.0" @@ -1197,14 +1227,16 @@ }, "modules/passkey/node_modules/@types/node": { "version": "18.15.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", + "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==", "dev": true, - "license": "MIT", "peer": true }, "modules/passkey/node_modules/dotenv": { "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=12" }, @@ -1214,6 +1246,8 @@ }, "modules/passkey/node_modules/ethers": { "version": "6.11.1", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.11.1.tgz", + "integrity": "sha512-mxTAE6wqJQAbp5QAe/+o+rXOID7Nw91OZXvgpjDa1r4fAbq2Nu314oEZSbjoRLacuCzs7kUC3clEvkCQowffGg==", "dev": true, "funding": [ { @@ -1225,7 +1259,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "peer": true, "dependencies": { "@adraffy/ens-normalize": "1.10.1", @@ -1242,8 +1275,9 @@ }, "modules/passkey/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==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "at-least-node": "^1.0.0", @@ -1257,8 +1291,9 @@ }, "modules/passkey/node_modules/jsonfile": { "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "universalify": "^2.0.0" @@ -1269,14 +1304,16 @@ }, "modules/passkey/node_modules/tslib": { "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", "dev": true, - "license": "0BSD", "peer": true }, "modules/passkey/node_modules/universalify": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">= 10.0.0" @@ -1284,8 +1321,9 @@ }, "modules/passkey/node_modules/ws": { "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=10.0.0" @@ -1303,18 +1341,28 @@ } } }, + "modules/test": { + "version": "1.0.0", + "extraneous": true, + "license": "ISC", + "dependencies": { + "hardhat": "^2.19.4" + } + }, "node_modules/@aashutoshrathi/word-wrap": { "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/@account-abstraction/contracts": { "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@account-abstraction/contracts/-/contracts-0.7.0.tgz", + "integrity": "sha512-Bt/66ilu3u8I9+vFZ9fTd+cWs55fdb9J5YKfrhsrFafH1drkzwuCSL/xEot1GGyXXNJLQuXbMRztQPyelNbY1A==", "dev": true, - "license": "MIT", "dependencies": { "@openzeppelin/contracts": "^5.0.0", "@uniswap/v3-periphery": "^1.4.3" @@ -1322,11 +1370,13 @@ }, "node_modules/@adraffy/ens-normalize": { "version": "1.10.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.0.tgz", + "integrity": "sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==" }, "node_modules/@alchemy/aa-accounts": { "version": "2.4.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@alchemy/aa-accounts/-/aa-accounts-2.4.0.tgz", + "integrity": "sha512-+RGBzhkeh6nXFOV02Kb6vg5B6thWzNDes2jPTG39vq3YkF6Q97jAEMtM9e2kq/iP9cJlHHk6duSOD/hcLUnKfg==", "dependencies": { "@alchemy/aa-core": "^2.3.1", "viem": "^1.21.4" @@ -1334,7 +1384,8 @@ }, "node_modules/@alchemy/aa-alchemy": { "version": "2.4.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@alchemy/aa-alchemy/-/aa-alchemy-2.4.0.tgz", + "integrity": "sha512-SuvU1/ivQ4e+M6qq3N/m6dlZ8i84LmmEnCCL4HTXgyqbok6ITNOrIWfeK3SmocADR0WQ+FPnEAB4Dp8oeQjKdA==", "dependencies": { "@alchemy/aa-core": "^2.3.1", "viem": "^1.21.4" @@ -1346,7 +1397,8 @@ }, "node_modules/@alchemy/aa-core": { "version": "2.3.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@alchemy/aa-core/-/aa-core-2.3.1.tgz", + "integrity": "sha512-iADsVGbhm4rbvFwcauKwD8u5AbzoE+8d8iQpagGHkPDpcNVzFP/FHv48jvdg9M52kf4h2XGdrQviT02bdJFTKw==", "dependencies": { "abitype": "^0.8.3", "eventemitter3": "^5.0.1", @@ -1356,8 +1408,9 @@ }, "node_modules/@babel/code-frame": { "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/highlight": "^7.23.4", "chalk": "^2.4.2" @@ -1368,16 +1421,18 @@ }, "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==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.22.20", "chalk": "^2.4.2", @@ -1389,7 +1444,8 @@ }, "node_modules/@babel/parser": { "version": "7.23.9", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz", + "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==", "bin": { "parser": "bin/babel-parser.js" }, @@ -1397,21 +1453,88 @@ "node": ">=6.0.0" } }, + "node_modules/@cbor-extract/cbor-extract-darwin-arm64": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-darwin-arm64/-/cbor-extract-darwin-arm64-2.2.0.tgz", + "integrity": "sha512-P7swiOAdF7aSi0H+tHtHtr6zrpF3aAq/W9FXx5HektRvLTM2O89xCyXF3pk7pLc7QpaY7AoaE8UowVf9QBdh3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@cbor-extract/cbor-extract-darwin-x64": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-darwin-x64/-/cbor-extract-darwin-x64-2.2.0.tgz", + "integrity": "sha512-1liF6fgowph0JxBbYnAS7ZlqNYLf000Qnj4KjqPNW4GViKrEql2MgZnAsExhY9LSy8dnvA4C0qHEBgPrll0z0w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@cbor-extract/cbor-extract-linux-arm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-arm/-/cbor-extract-linux-arm-2.2.0.tgz", + "integrity": "sha512-QeBcBXk964zOytiedMPQNZr7sg0TNavZeuUCD6ON4vEOU/25+pLhNN6EDIKJ9VLTKaZ7K7EaAriyYQ1NQ05s/Q==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@cbor-extract/cbor-extract-linux-arm64": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-arm64/-/cbor-extract-linux-arm64-2.2.0.tgz", + "integrity": "sha512-rQvhNmDuhjTVXSPFLolmQ47/ydGOFXtbR7+wgkSY0bdOxCFept1hvg59uiLPT2fVDuJFuEy16EImo5tE2x3RsQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, "node_modules/@cbor-extract/cbor-extract-linux-x64": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-x64/-/cbor-extract-linux-x64-2.2.0.tgz", + "integrity": "sha512-cWLAWtT3kNLHSvP4RKDzSTX9o0wvQEEAj4SKvhWuOVZxiDAeQazr9A+PSiRILK1VYMLeDml89ohxCnUNQNQNCw==", "cpu": [ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" ] }, + "node_modules/@cbor-extract/cbor-extract-win32-x64": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-win32-x64/-/cbor-extract-win32-x64-2.2.0.tgz", + "integrity": "sha512-l2M+Z8DO2vbvADOBNLbbh9y5ST1RY5sqkWOg/58GkUPBYou/cuNZ68SGQ644f1CvZ8kcOxyZtw06+dxWHIoN/w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@coinbase/wallet-sdk": { "version": "3.9.1", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@coinbase/wallet-sdk/-/wallet-sdk-3.9.1.tgz", + "integrity": "sha512-cGUE8wm1/cMI8irRMVOqbFWYcnNugqCtuy2lnnHfgloBg+GRLs9RsrkOUDMdv/StfUeeKhCDyYudsXXvcL1xIA==", "dependencies": { "bn.js": "^5.2.1", "buffer": "^6.0.3", @@ -1426,7 +1549,8 @@ }, "node_modules/@cspotcode/source-map-support": { "version": "0.8.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "dependencies": { "@jridgewell/trace-mapping": "0.3.9" }, @@ -1434,419 +1558,586 @@ "node": ">=12" } }, - "node_modules/@esbuild/linux-x64": { + "node_modules/@esbuild/aix-ppc64": { "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", + "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", "cpu": [ - "x64" + "ppc64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ - "linux" + "aix" ], "engines": { "node": ">=12" } }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", + "node_modules/@esbuild/android-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", + "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "cpu": [ + "arm" + ], "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + "node": ">=12" } }, - "node_modules/@eslint-community/regexpp": { - "version": "4.10.0", + "node_modules/@esbuild/android-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", + "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=12" } }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", + "node_modules/@esbuild/android-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", + "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "cpu": [ + "x64" + ], "dev": true, - "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" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=12" } }, - "node_modules/@eslint/js": { - "version": "8.56.0", + "node_modules/@esbuild/darwin-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", + "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@ethereumjs/common": { - "version": "3.2.0", - "license": "MIT", - "dependencies": { - "@ethereumjs/util": "^8.1.0", - "crc-32": "^1.2.0" + "node": ">=12" } }, - "node_modules/@ethereumjs/rlp": { - "version": "4.0.1", - "license": "MPL-2.0", - "bin": { - "rlp": "bin/rlp" - }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", + "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=14" + "node": ">=12" } }, - "node_modules/@ethereumjs/tx": { - "version": "4.2.0", - "license": "MPL-2.0", - "dependencies": { - "@ethereumjs/common": "^3.2.0", - "@ethereumjs/rlp": "^4.0.1", - "@ethereumjs/util": "^8.1.0", - "ethereum-cryptography": "^2.0.0" - }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", + "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=14" + "node": ">=12" } }, - "node_modules/@ethereumjs/tx/node_modules/@noble/hashes": { - "version": "1.3.3", - "license": "MIT", + "node_modules/@esbuild/freebsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", + "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "node": ">=12" } }, - "node_modules/@ethereumjs/tx/node_modules/@scure/bip32": { - "version": "1.3.3", - "license": "MIT", - "dependencies": { - "@noble/curves": "~1.3.0", - "@noble/hashes": "~1.3.2", - "@scure/base": "~1.1.4" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "node_modules/@esbuild/linux-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", + "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@ethereumjs/tx/node_modules/@scure/bip39": { - "version": "1.2.2", - "license": "MIT", - "dependencies": { - "@noble/hashes": "~1.3.2", - "@scure/base": "~1.1.4" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "node_modules/@esbuild/linux-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", + "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@ethereumjs/tx/node_modules/ethereum-cryptography": { - "version": "2.1.3", - "license": "MIT", - "dependencies": { - "@noble/curves": "1.3.0", - "@noble/hashes": "1.3.3", - "@scure/bip32": "1.3.3", - "@scure/bip39": "1.2.2" + "node_modules/@esbuild/linux-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", + "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@ethereumjs/util": { - "version": "8.1.0", - "license": "MPL-2.0", - "dependencies": { - "@ethereumjs/rlp": "^4.0.1", - "ethereum-cryptography": "^2.0.0", - "micro-ftch": "^0.3.1" - }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", + "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=14" + "node": ">=12" } }, - "node_modules/@ethereumjs/util/node_modules/@noble/curves": { - "version": "1.1.0", - "license": "MIT", - "dependencies": { - "@noble/hashes": "1.3.1" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "node_modules/@esbuild/linux-mips64el": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", + "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@ethereumjs/util/node_modules/@noble/hashes": { - "version": "1.3.1", - "license": "MIT", + "node_modules/@esbuild/linux-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", + "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "node": ">=12" } }, - "node_modules/@ethereumjs/util/node_modules/@scure/bip32": { - "version": "1.3.1", - "license": "MIT", - "dependencies": { - "@noble/curves": "~1.1.0", - "@noble/hashes": "~1.3.1", - "@scure/base": "~1.1.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "node_modules/@esbuild/linux-riscv64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", + "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@ethereumjs/util/node_modules/@scure/bip39": { - "version": "1.2.1", - "license": "MIT", - "dependencies": { - "@noble/hashes": "~1.3.0", - "@scure/base": "~1.1.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "node_modules/@esbuild/linux-s390x": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", + "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@ethereumjs/util/node_modules/ethereum-cryptography": { - "version": "2.1.2", - "license": "MIT", - "dependencies": { - "@noble/curves": "1.1.0", - "@noble/hashes": "1.3.1", - "@scure/bip32": "1.3.1", - "@scure/bip39": "1.2.1" + "node_modules/@esbuild/linux-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", + "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@ethersproject/abi": { - "version": "5.7.0", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } + "node_modules/@esbuild/netbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", + "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "cpu": [ + "x64" ], - "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" + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@ethersproject/abstract-provider": { - "version": "5.7.0", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } + "node_modules/@esbuild/openbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", + "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "cpu": [ + "x64" ], - "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" + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@ethersproject/abstract-signer": { - "version": "5.7.0", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } + "node_modules/@esbuild/sunos-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", + "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "cpu": [ + "x64" ], - "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" + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@ethersproject/address": { - "version": "5.7.0", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } + "node_modules/@esbuild/win32-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", + "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "cpu": [ + "arm64" ], - "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" + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@ethersproject/base64": { - "version": "5.7.0", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } + "node_modules/@esbuild/win32-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", + "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "cpu": [ + "ia32" ], - "license": "MIT", - "dependencies": { - "@ethersproject/bytes": "^5.7.0" + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@ethersproject/basex": { - "version": "5.7.0", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } + "node_modules/@esbuild/win32-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", + "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "cpu": [ + "x64" ], - "license": "MIT", - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/properties": "^5.7.0" + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@ethersproject/bignumber": { - "version": "5.7.0", - "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/@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, "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "bn.js": "^5.2.1" + "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/@ethersproject/bytes": { - "version": "5.7.0", - "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/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@ethersproject/constants": { - "version": "5.7.0", - "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/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, "dependencies": { - "@ethersproject/bignumber": "^5.7.0" + "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/@ethersproject/contracts": { - "version": "5.4.0", - "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, + "node_modules/@eslint/js": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", + "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@ethereumjs/common": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-3.2.0.tgz", + "integrity": "sha512-pksvzI0VyLgmuEF2FA/JR/4/y6hcPq8OUail3/AvycBaW1d5VSauOZzqGvJ3RTmR4MU35lWE8KseKOsEhrFRBA==", "dependencies": { - "@ethersproject/abi": "^5.4.0", - "@ethersproject/abstract-provider": "^5.4.0", - "@ethersproject/abstract-signer": "^5.4.0", - "@ethersproject/address": "^5.4.0", - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/constants": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/transactions": "^5.4.0" + "@ethereumjs/util": "^8.1.0", + "crc-32": "^1.2.0" } }, - "node_modules/@ethersproject/hash": { + "node_modules/@ethereumjs/rlp": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz", + "integrity": "sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==", + "bin": { + "rlp": "bin/rlp" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@ethereumjs/tx": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-4.2.0.tgz", + "integrity": "sha512-1nc6VO4jtFd172BbSnTnDQVr9IYBFl1y4xPzZdtkrkKIncBCkdbgfdRV+MiTkJYAtTxvV12GRZLqBFT1PNK6Yw==", + "dependencies": { + "@ethereumjs/common": "^3.2.0", + "@ethereumjs/rlp": "^4.0.1", + "@ethereumjs/util": "^8.1.0", + "ethereum-cryptography": "^2.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@ethereumjs/tx/node_modules/@noble/hashes": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", + "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@ethereumjs/tx/node_modules/@scure/bip32": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.3.tgz", + "integrity": "sha512-LJaN3HwRbfQK0X1xFSi0Q9amqOgzQnnDngIt+ZlsBC3Bm7/nE7K0kwshZHyaru79yIVRv/e1mQAjZyuZG6jOFQ==", + "dependencies": { + "@noble/curves": "~1.3.0", + "@noble/hashes": "~1.3.2", + "@scure/base": "~1.1.4" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@ethereumjs/tx/node_modules/@scure/bip39": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.2.tgz", + "integrity": "sha512-HYf9TUXG80beW+hGAt3TRM8wU6pQoYur9iNypTROm42dorCGmLnFe3eWjz3gOq6G62H2WRh0FCzAR1PI+29zIA==", + "dependencies": { + "@noble/hashes": "~1.3.2", + "@scure/base": "~1.1.4" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@ethereumjs/tx/node_modules/ethereum-cryptography": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.1.3.tgz", + "integrity": "sha512-BlwbIL7/P45W8FGW2r7LGuvoEZ+7PWsniMvQ4p5s2xCyw9tmaDlpfsN9HjAucbF+t/qpVHwZUisgfK24TCW8aA==", + "dependencies": { + "@noble/curves": "1.3.0", + "@noble/hashes": "1.3.3", + "@scure/bip32": "1.3.3", + "@scure/bip39": "1.2.2" + } + }, + "node_modules/@ethereumjs/util": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/util/-/util-8.1.0.tgz", + "integrity": "sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==", + "dependencies": { + "@ethereumjs/rlp": "^4.0.1", + "ethereum-cryptography": "^2.0.0", + "micro-ftch": "^0.3.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@ethereumjs/util/node_modules/@noble/curves": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.1.0.tgz", + "integrity": "sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==", + "dependencies": { + "@noble/hashes": "1.3.1" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@ethereumjs/util/node_modules/@noble/hashes": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", + "integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@ethereumjs/util/node_modules/@scure/bip32": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.1.tgz", + "integrity": "sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A==", + "dependencies": { + "@noble/curves": "~1.1.0", + "@noble/hashes": "~1.3.1", + "@scure/base": "~1.1.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@ethereumjs/util/node_modules/@scure/bip39": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.1.tgz", + "integrity": "sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==", + "dependencies": { + "@noble/hashes": "~1.3.0", + "@scure/base": "~1.1.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@ethereumjs/util/node_modules/ethereum-cryptography": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.1.2.tgz", + "integrity": "sha512-Z5Ba0T0ImZ8fqXrJbpHcbpAvIswRte2wGNR/KePnu8GbbvgJ47lMxT/ZZPG6i9Jaht4azPDop4HaM00J0J59ug==", + "dependencies": { + "@noble/curves": "1.1.0", + "@noble/hashes": "1.3.1", + "@scure/bip32": "1.3.1", + "@scure/bip39": "1.2.1" + } + }, + "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", @@ -1857,21 +2148,22 @@ "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/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/hdnode": { - "version": "5.4.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", @@ -1882,25 +2174,20 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", - "peer": true, "dependencies": { - "@ethersproject/abstract-signer": "^5.4.0", - "@ethersproject/basex": "^5.4.0", - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/pbkdf2": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/sha2": "^5.4.0", - "@ethersproject/signing-key": "^5.4.0", - "@ethersproject/strings": "^5.4.0", - "@ethersproject/transactions": "^5.4.0", - "@ethersproject/wordlists": "^5.4.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/@ethersproject/json-wallets": { - "version": "5.4.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", @@ -1911,31 +2198,18 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", - "peer": true, "dependencies": { - "@ethersproject/abstract-signer": "^5.4.0", - "@ethersproject/address": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/hdnode": "^5.4.0", - "@ethersproject/keccak256": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/pbkdf2": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/random": "^5.4.0", - "@ethersproject/strings": "^5.4.0", - "@ethersproject/transactions": "^5.4.0", - "aes-js": "3.0.0", - "scrypt-js": "3.0.1" + "@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/json-wallets/node_modules/aes-js": { - "version": "3.0.0", - "license": "MIT", - "peer": true - }, - "node_modules/@ethersproject/keccak256": { + "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", @@ -1946,14 +2220,18 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { + "@ethersproject/bignumber": "^5.7.0", "@ethersproject/bytes": "^5.7.0", - "js-sha3": "0.8.0" + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" } }, - "node_modules/@ethersproject/logger": { + "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", @@ -1964,27 +2242,14 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT" - }, - "node_modules/@ethersproject/networks": { - "version": "5.7.1", - "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" + "@ethersproject/bytes": "^5.7.0" } }, - "node_modules/@ethersproject/pbkdf2": { - "version": "5.4.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", @@ -1995,15 +2260,15 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", - "peer": true, "dependencies": { - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/sha2": "^5.4.0" + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/properties": "^5.7.0" } }, - "node_modules/@ethersproject/properties": { + "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", @@ -2014,13 +2279,16 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { - "@ethersproject/logger": "^5.7.0" + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" } }, - "node_modules/@ethersproject/providers": { - "version": "5.7.2", + "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", @@ -2031,51 +2299,14 @@ "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", - "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 - } + "@ethersproject/logger": "^5.7.0" } }, - "node_modules/@ethersproject/random": { + "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", @@ -2086,14 +2317,14 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0" + "@ethersproject/bignumber": "^5.7.0" } }, - "node_modules/@ethersproject/rlp": { - "version": "5.7.0", + "node_modules/@ethersproject/contracts": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.4.0.tgz", + "integrity": "sha512-hkO3L3IhS1Z3ZtHtaAG/T87nQ7KiPV+/qnvutag35I0IkiQ8G3ZpCQ9NNOpSCzn4pWSW4CfzmtE02FcqnLI+hw==", "funding": [ { "type": "individual", @@ -2104,14 +2335,24 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", + "peer": true, "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0" + "@ethersproject/abi": "^5.4.0", + "@ethersproject/abstract-provider": "^5.4.0", + "@ethersproject/abstract-signer": "^5.4.0", + "@ethersproject/address": "^5.4.0", + "@ethersproject/bignumber": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/constants": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "@ethersproject/transactions": "^5.4.0" } }, - "node_modules/@ethersproject/sha2": { + "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", @@ -2122,15 +2363,22 @@ "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", - "hash.js": "1.1.7" + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" } }, - "node_modules/@ethersproject/signing-key": { - "version": "5.7.0", + "node_modules/@ethersproject/hdnode": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.4.0.tgz", + "integrity": "sha512-pKxdS0KAaeVGfZPp1KOiDLB0jba11tG6OP1u11QnYfb7pXn6IZx0xceqWRr6ygke8+Kw74IpOoSi7/DwANhy8Q==", "funding": [ { "type": "individual", @@ -2141,18 +2389,26 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", + "peer": true, "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" + "@ethersproject/abstract-signer": "^5.4.0", + "@ethersproject/basex": "^5.4.0", + "@ethersproject/bignumber": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/pbkdf2": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "@ethersproject/sha2": "^5.4.0", + "@ethersproject/signing-key": "^5.4.0", + "@ethersproject/strings": "^5.4.0", + "@ethersproject/transactions": "^5.4.0", + "@ethersproject/wordlists": "^5.4.0" } }, - "node_modules/@ethersproject/solidity": { + "node_modules/@ethersproject/json-wallets": { "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.4.0.tgz", + "integrity": "sha512-igWcu3fx4aiczrzEHwG1xJZo9l1cFfQOWzTqwRw/xcvxTk58q4f9M7cjh51EKphMHvrJtcezJ1gf1q1AUOfEQQ==", "funding": [ { "type": "individual", @@ -2163,18 +2419,33 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "peer": true, "dependencies": { - "@ethersproject/bignumber": "^5.4.0", + "@ethersproject/abstract-signer": "^5.4.0", + "@ethersproject/address": "^5.4.0", "@ethersproject/bytes": "^5.4.0", + "@ethersproject/hdnode": "^5.4.0", "@ethersproject/keccak256": "^5.4.0", - "@ethersproject/sha2": "^5.4.0", - "@ethersproject/strings": "^5.4.0" + "@ethersproject/logger": "^5.4.0", + "@ethersproject/pbkdf2": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "@ethersproject/random": "^5.4.0", + "@ethersproject/strings": "^5.4.0", + "@ethersproject/transactions": "^5.4.0", + "aes-js": "3.0.0", + "scrypt-js": "3.0.1" } }, - "node_modules/@ethersproject/strings": { + "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==", + "peer": true + }, + "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", @@ -2185,15 +2456,15 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0" + "js-sha3": "0.8.0" } }, - "node_modules/@ethersproject/transactions": { + "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", @@ -2203,22 +2474,12 @@ "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.4.0", + "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", @@ -2229,16 +2490,14 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", - "peer": true, "dependencies": { - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/constants": "^5.4.0", - "@ethersproject/logger": "^5.4.0" + "@ethersproject/logger": "^5.7.0" } }, - "node_modules/@ethersproject/wallet": { + "node_modules/@ethersproject/pbkdf2": { "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.4.0.tgz", + "integrity": "sha512-x94aIv6tiA04g6BnazZSLoRXqyusawRyZWlUhKip2jvoLpzJuLb//KtMM6PEovE47pMbW+Qe1uw+68ameJjB7g==", "funding": [ { "type": "individual", @@ -2249,28 +2508,16 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "peer": true, "dependencies": { - "@ethersproject/abstract-provider": "^5.4.0", - "@ethersproject/abstract-signer": "^5.4.0", - "@ethersproject/address": "^5.4.0", - "@ethersproject/bignumber": "^5.4.0", "@ethersproject/bytes": "^5.4.0", - "@ethersproject/hash": "^5.4.0", - "@ethersproject/hdnode": "^5.4.0", - "@ethersproject/json-wallets": "^5.4.0", - "@ethersproject/keccak256": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/random": "^5.4.0", - "@ethersproject/signing-key": "^5.4.0", - "@ethersproject/transactions": "^5.4.0", - "@ethersproject/wordlists": "^5.4.0" + "@ethersproject/sha2": "^5.4.0" } }, - "node_modules/@ethersproject/web": { - "version": "5.7.1", + "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", @@ -2281,17 +2528,14 @@ "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" + "@ethersproject/logger": "^5.7.0" } }, - "node_modules/@ethersproject/wordlists": { - "version": "5.4.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", @@ -2302,81 +2546,76 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", - "peer": true, "dependencies": { - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/hash": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/strings": "^5.4.0" - } - }, - "node_modules/@fastify/busboy": { - "version": "2.1.0", - "license": "MIT", - "engines": { - "node": ">=14" + "@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/@gelatonetwork/relay-sdk": { - "version": "5.5.6", - "resolved": "https://registry.npmjs.org/@gelatonetwork/relay-sdk/-/relay-sdk-5.5.6.tgz", - "integrity": "sha512-wGUbBhz9iJUhagzW/+rik5nQ+X6YVDMQcH0PWxvSNB4Swu/EnPjqTVOJzf3CnS+pvCMNLChOEUw4caRbZXyq0w==", - "dev": true, - "dependencies": { - "axios": "0.27.2", - "ethers": "6.7.0", - "isomorphic-ws": "^5.0.0", - "ws": "^8.5.0" - }, + "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==", "engines": { - "node": ">=14.0.0" + "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/@gelatonetwork/relay-sdk/node_modules/@adraffy/ens-normalize": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.9.2.tgz", - "integrity": "sha512-0h+FrQDqe2Wn+IIGFkTCd4aAwTJ+7834Ek1COohCyV26AXhwQ7WQaz+4F/nLOeVl/3BtWHOHLPsq46V8YB46Eg==", - "dev": true - }, - "node_modules/@gelatonetwork/relay-sdk/node_modules/@noble/hashes": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.2.tgz", - "integrity": "sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA==", - "dev": 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://paulmillr.com/funding/" + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" } - ] - }, - "node_modules/@gelatonetwork/relay-sdk/node_modules/@types/node": { - "version": "18.15.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", - "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==", - "dev": true - }, - "node_modules/@gelatonetwork/relay-sdk/node_modules/axios": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", - "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", - "dev": true, + ], "dependencies": { - "follow-redirects": "^1.14.9", - "form-data": "^4.0.0" + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" } }, - "node_modules/@gelatonetwork/relay-sdk/node_modules/ethers": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.7.0.tgz", - "integrity": "sha512-pxt5hK82RNwcTX2gOZP81t6qVPVspnkpeivwEgQuK9XUvbNtghBnT8GNIb/gPh+WnVSfi8cXC9XlfT8sqc6D6w==", - "dev": 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://github.com/sponsors/ethers-io/" + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" }, { "type": "individual", @@ -2384,395 +2623,708 @@ } ], "dependencies": { - "@adraffy/ens-normalize": "1.9.2", - "@noble/hashes": "1.1.2", - "@noble/secp256k1": "1.7.1", - "@types/node": "18.15.13", - "aes-js": "4.0.0-beta.5", - "tslib": "2.4.0", - "ws": "8.5.0" - }, - "engines": { - "node": ">=14.0.0" + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" } }, - "node_modules/@gelatonetwork/relay-sdk/node_modules/ethers/node_modules/ws": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", - "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true + "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" }, - "utf-8-validate": { - "optional": true + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" } }, - "node_modules/@gelatonetwork/relay-sdk/node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", - "dev": true - }, - "node_modules/@gelatonetwork/relay-sdk/node_modules/ws": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", - "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": 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" }, - "utf-8-validate": { - "optional": true + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" } + ], + "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/@hexagon/base64": { - "version": "1.1.28", - "dev": true, - "license": "MIT" - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.13", - "dev": true, - "license": "Apache-2.0", + "node_modules/@ethersproject/solidity": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.4.0.tgz", + "integrity": "sha512-XFQTZ7wFSHOhHcV1DpcWj7VXECEiSrBuv7JErJvB9Uo+KfCdc3QtUZV+Vjh/AAaYgezUEKbCtE6Khjm44seevQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "peer": true, "dependencies": { - "@humanwhocodes/object-schema": "^2.0.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" + "@ethersproject/bignumber": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/keccak256": "^5.4.0", + "@ethersproject/sha2": "^5.4.0", + "@ethersproject/strings": "^5.4.0" } }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "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" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.1", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@ioredis/commands": { - "version": "1.2.0", - "license": "MIT" - }, - "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, + "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" + } + ], "dependencies": { - "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": ">=12" + "@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/@isaacs/cliui/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, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "node_modules/@ethersproject/units": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.4.0.tgz", + "integrity": "sha512-Z88krX40KCp+JqPCP5oPv5p750g+uU6gopDYRTBGcDvOASh6qhiEYCRatuM/suC4S2XW9Zz90QI35MfSrTIaFg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "peer": true, + "dependencies": { + "@ethersproject/bignumber": "^5.4.0", + "@ethersproject/constants": "^5.4.0", + "@ethersproject/logger": "^5.4.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": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node_modules/@ethersproject/wallet": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.4.0.tgz", + "integrity": "sha512-wU29majLjM6AjCjpat21mPPviG+EpK7wY1+jzKD0fg3ui5fgedf2zEu1RDgpfIMsfn8fJHJuzM4zXZ2+hSHaSQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "peer": true, + "dependencies": { + "@ethersproject/abstract-provider": "^5.4.0", + "@ethersproject/abstract-signer": "^5.4.0", + "@ethersproject/address": "^5.4.0", + "@ethersproject/bignumber": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/hash": "^5.4.0", + "@ethersproject/hdnode": "^5.4.0", + "@ethersproject/json-wallets": "^5.4.0", + "@ethersproject/keccak256": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "@ethersproject/random": "^5.4.0", + "@ethersproject/signing-key": "^5.4.0", + "@ethersproject/transactions": "^5.4.0", + "@ethersproject/wordlists": "^5.4.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, + "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" + } + ], "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" + "@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/@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, + "node_modules/@ethersproject/wordlists": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.4.0.tgz", + "integrity": "sha512-FemEkf6a+EBKEPxlzeVgUaVSodU7G0Na89jqKjmWMlDB0tomoU8RlEMgUvXyqtrg8N4cwpLh8nyRnm1Nay1isA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "peer": true, "dependencies": { - "ansi-regex": "^6.0.1" - }, + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/hash": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "@ethersproject/strings": "^5.4.0" + } + }, + "node_modules/@fastify/busboy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.0.tgz", + "integrity": "sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "node": ">=14" } }, - "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==", + "node_modules/@gelatonetwork/relay-sdk": { + "version": "5.5.6", + "resolved": "https://registry.npmjs.org/@gelatonetwork/relay-sdk/-/relay-sdk-5.5.6.tgz", + "integrity": "sha512-wGUbBhz9iJUhagzW/+rik5nQ+X6YVDMQcH0PWxvSNB4Swu/EnPjqTVOJzf3CnS+pvCMNLChOEUw4caRbZXyq0w==", "dev": true, "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" + "axios": "0.27.2", + "ethers": "6.7.0", + "isomorphic-ws": "^5.0.0", + "ws": "^8.5.0" }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "license": "MIT", "engines": { - "node": ">=6.0.0" + "node": ">=14.0.0" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "license": "MIT" + "node_modules/@gelatonetwork/relay-sdk/node_modules/@adraffy/ens-normalize": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.9.2.tgz", + "integrity": "sha512-0h+FrQDqe2Wn+IIGFkTCd4aAwTJ+7834Ek1COohCyV26AXhwQ7WQaz+4F/nLOeVl/3BtWHOHLPsq46V8YB46Eg==", + "dev": true }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } + "node_modules/@gelatonetwork/relay-sdk/node_modules/@noble/hashes": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.2.tgz", + "integrity": "sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] }, - "node_modules/@levischuck/tiny-cbor": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@levischuck/tiny-cbor/-/tiny-cbor-0.2.2.tgz", - "integrity": "sha512-f5CnPw997Y2GQ8FAvtuVVC19FX8mwNNC+1XJcIi16n/LTJifKO6QBgGLgN3YEmqtGMk17SKSuoWES3imJVxAVw==", + "node_modules/@gelatonetwork/relay-sdk/node_modules/@types/node": { + "version": "18.15.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", + "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==", "dev": true }, - "node_modules/@lit-labs/ssr-dom-shim": { - "version": "1.2.0", - "license": "BSD-3-Clause" - }, - "node_modules/@lit/reactive-element": { - "version": "1.6.3", - "license": "BSD-3-Clause", + "node_modules/@gelatonetwork/relay-sdk/node_modules/axios": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "dev": true, "dependencies": { - "@lit-labs/ssr-dom-shim": "^1.0.0" + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" } }, - "node_modules/@metamask/eth-json-rpc-provider": { - "version": "1.0.1", + "node_modules/@gelatonetwork/relay-sdk/node_modules/ethers": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.7.0.tgz", + "integrity": "sha512-pxt5hK82RNwcTX2gOZP81t6qVPVspnkpeivwEgQuK9XUvbNtghBnT8GNIb/gPh+WnVSfi8cXC9XlfT8sqc6D6w==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/ethers-io/" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "dependencies": { - "@metamask/json-rpc-engine": "^7.0.0", - "@metamask/safe-event-emitter": "^3.0.0", - "@metamask/utils": "^5.0.1" + "@adraffy/ens-normalize": "1.9.2", + "@noble/hashes": "1.1.2", + "@noble/secp256k1": "1.7.1", + "@types/node": "18.15.13", + "aes-js": "4.0.0-beta.5", + "tslib": "2.4.0", + "ws": "8.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@metamask/eth-sig-util": { - "version": "4.0.1", - "license": "ISC", - "dependencies": { - "ethereumjs-abi": "^0.6.8", - "ethereumjs-util": "^6.2.1", - "ethjs-util": "^0.1.6", - "tweetnacl": "^1.0.3", - "tweetnacl-util": "^0.15.1" - }, + "node_modules/@gelatonetwork/relay-sdk/node_modules/ethers/node_modules/ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "dev": true, "engines": { - "node": ">=12.0.0" + "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/@metamask/json-rpc-engine": { - "version": "7.3.2", - "license": "ISC", - "dependencies": { - "@metamask/rpc-errors": "^6.1.0", - "@metamask/safe-event-emitter": "^3.0.0", - "@metamask/utils": "^8.3.0" - }, + "node_modules/@gelatonetwork/relay-sdk/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@gelatonetwork/relay-sdk/node_modules/ws": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "dev": true, "engines": { - "node": ">=16.0.0" + "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/@metamask/json-rpc-engine/node_modules/@metamask/utils": { - "version": "8.3.0", - "license": "ISC", + "node_modules/@hexagon/base64": { + "version": "1.1.28", + "resolved": "https://registry.npmjs.org/@hexagon/base64/-/base64-1.1.28.tgz", + "integrity": "sha512-lhqDEAvWixy3bZ+UOYbPwUbBkwBq5C1LAJ/xPC8Oi+lL54oyakv/npbA0aU2hgCsx/1NUd4IBvV03+aUBWxerw==", + "dev": true + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", + "dev": true, "dependencies": { - "@ethereumjs/tx": "^4.2.0", - "@noble/hashes": "^1.3.1", - "@scure/base": "^1.1.3", - "@types/debug": "^4.1.7", - "debug": "^4.3.4", - "pony-cause": "^2.1.10", - "semver": "^7.5.4", - "superstruct": "^1.0.3" + "@humanwhocodes/object-schema": "^2.0.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" }, "engines": { - "node": ">=16.0.0" + "node": ">=10.10.0" } }, - "node_modules/@metamask/json-rpc-engine/node_modules/@noble/hashes": { - "version": "1.3.3", - "license": "MIT", + "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, "engines": { - "node": ">= 16" + "node": ">=12.22" }, "funding": { - "url": "https://paulmillr.com/funding/" + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@metamask/json-rpc-engine/node_modules/lru-cache": { - "version": "6.0.0", - "license": "ISC", + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", + "dev": true + }, + "node_modules/@ioredis/commands": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.2.0.tgz", + "integrity": "sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==" + }, + "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": { - "yallist": "^4.0.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": ">=10" + "node": ">=12" } }, - "node_modules/@metamask/json-rpc-engine/node_modules/semver": { - "version": "7.6.0", - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, + "node_modules/@isaacs/cliui/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, "engines": { - "node": ">=10" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/@metamask/rpc-errors": { - "version": "6.1.0", - "license": "MIT", - "dependencies": { - "@metamask/utils": "^8.1.0", - "fast-safe-stringify": "^2.0.6" - }, + "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": ">=16.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@metamask/rpc-errors/node_modules/@metamask/utils": { - "version": "8.3.0", - "license": "ISC", + "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": { - "@ethereumjs/tx": "^4.2.0", - "@noble/hashes": "^1.3.1", - "@scure/base": "^1.1.3", - "@types/debug": "^4.1.7", - "debug": "^4.3.4", - "pony-cause": "^2.1.10", - "semver": "^7.5.4", - "superstruct": "^1.0.3" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@metamask/rpc-errors/node_modules/@noble/hashes": { - "version": "1.3.3", - "license": "MIT", - "engines": { - "node": ">= 16" + "node": ">=12" }, "funding": { - "url": "https://paulmillr.com/funding/" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@metamask/rpc-errors/node_modules/lru-cache": { - "version": "6.0.0", - "license": "ISC", + "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": { - "yallist": "^4.0.0" + "ansi-regex": "^6.0.1" }, "engines": { - "node": ">=10" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/@metamask/rpc-errors/node_modules/semver": { - "version": "7.6.0", - "license": "ISC", + "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": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "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/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "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==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@levischuck/tiny-cbor": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@levischuck/tiny-cbor/-/tiny-cbor-0.2.2.tgz", + "integrity": "sha512-f5CnPw997Y2GQ8FAvtuVVC19FX8mwNNC+1XJcIi16n/LTJifKO6QBgGLgN3YEmqtGMk17SKSuoWES3imJVxAVw==", + "dev": true + }, + "node_modules/@lit-labs/ssr-dom-shim": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.2.0.tgz", + "integrity": "sha512-yWJKmpGE6lUURKAaIltoPIE/wrbY3TEkqQt+X0m+7fQNnAv0keydnYvbiJFP1PnMhizmIWRWOG5KLhYyc/xl+g==" + }, + "node_modules/@lit/reactive-element": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.6.3.tgz", + "integrity": "sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==", + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.0.0" + } + }, + "node_modules/@metamask/eth-json-rpc-provider": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@metamask/eth-json-rpc-provider/-/eth-json-rpc-provider-1.0.1.tgz", + "integrity": "sha512-whiUMPlAOrVGmX8aKYVPvlKyG4CpQXiNNyt74vE1xb5sPvmx5oA7B/kOi/JdBvhGQq97U1/AVdXEdk2zkP8qyA==", + "dependencies": { + "@metamask/json-rpc-engine": "^7.0.0", + "@metamask/safe-event-emitter": "^3.0.0", + "@metamask/utils": "^5.0.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@metamask/eth-sig-util": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz", + "integrity": "sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==", + "dependencies": { + "ethereumjs-abi": "^0.6.8", + "ethereumjs-util": "^6.2.1", + "ethjs-util": "^0.1.6", + "tweetnacl": "^1.0.3", + "tweetnacl-util": "^0.15.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@metamask/json-rpc-engine": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@metamask/json-rpc-engine/-/json-rpc-engine-7.3.2.tgz", + "integrity": "sha512-dVjBPlni4CoiBpESVqrxh6k4OR14w6GRXKSSXHFuITjuhALE42gNCkXTpL4cjNeOBUgTba3eGe5EI8cyc2QLRg==", + "dependencies": { + "@metamask/rpc-errors": "^6.1.0", + "@metamask/safe-event-emitter": "^3.0.0", + "@metamask/utils": "^8.3.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@metamask/json-rpc-engine/node_modules/@metamask/utils": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-8.3.0.tgz", + "integrity": "sha512-WFVcMPEkKKRCJ8DDkZUTVbLlpwgRn98F4VM/WzN89HM8PmHMnCyk/oG0AmK/seOxtik7uC7Bbi2YBC5Z5XB2zw==", + "dependencies": { + "@ethereumjs/tx": "^4.2.0", + "@noble/hashes": "^1.3.1", + "@scure/base": "^1.1.3", + "@types/debug": "^4.1.7", + "debug": "^4.3.4", + "pony-cause": "^2.1.10", + "semver": "^7.5.4", + "superstruct": "^1.0.3" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@metamask/json-rpc-engine/node_modules/@noble/hashes": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", + "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@metamask/json-rpc-engine/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==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@metamask/json-rpc-engine/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@metamask/rpc-errors": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@metamask/rpc-errors/-/rpc-errors-6.1.0.tgz", + "integrity": "sha512-JQElKxai26FpDyRKO/yH732wI+BV90i1u6pOuDOpdADSbppB2g1pPh3AGST1zkZqEE9eIKIUw8UdBQ4rp3VTSg==", + "dependencies": { + "@metamask/utils": "^8.1.0", + "fast-safe-stringify": "^2.0.6" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@metamask/rpc-errors/node_modules/@metamask/utils": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-8.3.0.tgz", + "integrity": "sha512-WFVcMPEkKKRCJ8DDkZUTVbLlpwgRn98F4VM/WzN89HM8PmHMnCyk/oG0AmK/seOxtik7uC7Bbi2YBC5Z5XB2zw==", + "dependencies": { + "@ethereumjs/tx": "^4.2.0", + "@noble/hashes": "^1.3.1", + "@scure/base": "^1.1.3", + "@types/debug": "^4.1.7", + "debug": "^4.3.4", + "pony-cause": "^2.1.10", + "semver": "^7.5.4", + "superstruct": "^1.0.3" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@metamask/rpc-errors/node_modules/@noble/hashes": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", + "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@metamask/rpc-errors/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==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@metamask/rpc-errors/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/@metamask/safe-event-emitter": { "version": "3.0.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/@metamask/safe-event-emitter/-/safe-event-emitter-3.0.0.tgz", + "integrity": "sha512-j6Z47VOmVyGMlnKXZmL0fyvWfEYtKWCA9yGZkU3FCsGZUT5lHGmvaV9JA5F2Y+010y7+ROtR3WMXIkvl/nVzqQ==", "engines": { "node": ">=12.0.0" } }, "node_modules/@metamask/utils": { "version": "5.0.2", - "license": "ISC", + "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-5.0.2.tgz", + "integrity": "sha512-yfmE79bRQtnMzarnKfX7AEJBwFTxvTyw3nBQlu/5rmGXrjAeAMltoGxO62TFurxrQAFMNa/fEjIHNvungZp0+g==", "dependencies": { "@ethereumjs/tx": "^4.1.2", "@types/debug": "^4.1.7", @@ -2786,7 +3338,8 @@ }, "node_modules/@metamask/utils/node_modules/lru-cache": { "version": "6.0.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dependencies": { "yallist": "^4.0.0" }, @@ -2796,7 +3349,8 @@ }, "node_modules/@metamask/utils/node_modules/semver": { "version": "7.6.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -2809,7 +3363,8 @@ }, "node_modules/@motionone/animation": { "version": "10.17.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@motionone/animation/-/animation-10.17.0.tgz", + "integrity": "sha512-ANfIN9+iq1kGgsZxs+Nz96uiNcPLGTXwfNo2Xz/fcJXniPYpaz/Uyrfa+7I5BPLxCP82sh7quVDudf1GABqHbg==", "dependencies": { "@motionone/easing": "^10.17.0", "@motionone/types": "^10.17.0", @@ -2819,11 +3374,13 @@ }, "node_modules/@motionone/animation/node_modules/tslib": { "version": "2.6.2", - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@motionone/dom": { "version": "10.17.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@motionone/dom/-/dom-10.17.0.tgz", + "integrity": "sha512-cMm33swRlCX/qOPHWGbIlCl0K9Uwi6X5RiL8Ma6OrlJ/TP7Q+Np5GE4xcZkFptysFjMTi4zcZzpnNQGQ5D6M0Q==", "dependencies": { "@motionone/animation": "^10.17.0", "@motionone/generators": "^10.17.0", @@ -2835,11 +3392,13 @@ }, "node_modules/@motionone/dom/node_modules/tslib": { "version": "2.6.2", - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@motionone/easing": { "version": "10.17.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@motionone/easing/-/easing-10.17.0.tgz", + "integrity": "sha512-Bxe2wSuLu/qxqW4rBFS5m9tMLOw+QBh8v5A7Z5k4Ul4sTj5jAOfZG5R0bn5ywmk+Fs92Ij1feZ5pmC4TeXA8Tg==", "dependencies": { "@motionone/utils": "^10.17.0", "tslib": "^2.3.1" @@ -2847,11 +3406,13 @@ }, "node_modules/@motionone/easing/node_modules/tslib": { "version": "2.6.2", - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@motionone/generators": { "version": "10.17.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@motionone/generators/-/generators-10.17.0.tgz", + "integrity": "sha512-T6Uo5bDHrZWhIfxG/2Aut7qyWQyJIWehk6OB4qNvr/jwA/SRmixwbd7SOrxZi1z5rH3LIeFFBKK1xHnSbGPZSQ==", "dependencies": { "@motionone/types": "^10.17.0", "@motionone/utils": "^10.17.0", @@ -2860,11 +3421,13 @@ }, "node_modules/@motionone/generators/node_modules/tslib": { "version": "2.6.2", - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@motionone/svelte": { "version": "10.16.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@motionone/svelte/-/svelte-10.16.4.tgz", + "integrity": "sha512-zRVqk20lD1xqe+yEDZhMYgftsuHc25+9JSo+r0a0OWUJFocjSV9D/+UGhX4xgJsuwB9acPzXLr20w40VnY2PQA==", "dependencies": { "@motionone/dom": "^10.16.4", "tslib": "^2.3.1" @@ -2872,15 +3435,18 @@ }, "node_modules/@motionone/svelte/node_modules/tslib": { "version": "2.6.2", - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@motionone/types": { "version": "10.17.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@motionone/types/-/types-10.17.0.tgz", + "integrity": "sha512-EgeeqOZVdRUTEHq95Z3t8Rsirc7chN5xFAPMYFobx8TPubkEfRSm5xihmMUkbaR2ErKJTUw3347QDPTHIW12IA==" }, "node_modules/@motionone/utils": { "version": "10.17.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@motionone/utils/-/utils-10.17.0.tgz", + "integrity": "sha512-bGwrki4896apMWIj9yp5rAS2m0xyhxblg6gTB/leWDPt+pb410W8lYWsxyurX+DH+gO1zsQsfx2su/c1/LtTpg==", "dependencies": { "@motionone/types": "^10.17.0", "hey-listen": "^1.0.8", @@ -2889,11 +3455,14 @@ }, "node_modules/@motionone/utils/node_modules/tslib": { "version": "2.6.2", - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@motionone/vue": { "version": "10.16.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@motionone/vue/-/vue-10.16.4.tgz", + "integrity": "sha512-z10PF9JV6SbjFq+/rYabM+8CVlMokgl8RFGvieSGNTmrkQanfHn+15XBrhG3BgUfvmTeSeyShfOHpG0i9zEdcg==", + "deprecated": "Motion One for Vue is deprecated. Use Oku Motion instead https://oku-ui.com/motion", "dependencies": { "@motionone/dom": "^10.16.4", "tslib": "^2.3.1" @@ -2901,11 +3470,13 @@ }, "node_modules/@motionone/vue/node_modules/tslib": { "version": "2.6.2", - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@noble/curves": { "version": "1.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.3.0.tgz", + "integrity": "sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==", "dependencies": { "@noble/hashes": "1.3.3" }, @@ -2915,7 +3486,8 @@ }, "node_modules/@noble/curves/node_modules/@noble/hashes": { "version": "1.3.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", + "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==", "engines": { "node": ">= 16" }, @@ -2925,27 +3497,30 @@ }, "node_modules/@noble/hashes": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", + "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", "funding": [ { "type": "individual", "url": "https://paulmillr.com/funding/" } - ], - "license": "MIT" + ] }, "node_modules/@noble/secp256k1": { "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz", + "integrity": "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==", "funding": [ { "type": "individual", "url": "https://paulmillr.com/funding/" } - ], - "license": "MIT" + ] }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -2956,14 +3531,16 @@ }, "node_modules/@nodelib/fs.stat": { "version": "2.0.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "engines": { "node": ">= 8" } }, "node_modules/@nodelib/fs.walk": { "version": "1.2.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -2973,43 +3550,61 @@ } }, "node_modules/@nomicfoundation/edr": { - "version": "0.2.1", - "license": "MIT", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr/-/edr-0.3.2.tgz", + "integrity": "sha512-HGWtjibAK1mo4I2A7nJ/fXqe/J9G54OrSPJnnkY2K8TiXotYLShGd9GvHkae3PuFjTJKm6ZgBy7tveJj5yrCfw==", "engines": { "node": ">= 18" }, "optionalDependencies": { - "@nomicfoundation/edr-darwin-arm64": "0.2.1", - "@nomicfoundation/edr-darwin-x64": "0.2.1", - "@nomicfoundation/edr-linux-arm64-gnu": "0.2.1", - "@nomicfoundation/edr-linux-arm64-musl": "0.2.1", - "@nomicfoundation/edr-linux-x64-gnu": "0.2.1", - "@nomicfoundation/edr-linux-x64-musl": "0.2.1", - "@nomicfoundation/edr-win32-arm64-msvc": "0.2.1", - "@nomicfoundation/edr-win32-ia32-msvc": "0.2.1", - "@nomicfoundation/edr-win32-x64-msvc": "0.2.1" + "@nomicfoundation/edr-darwin-arm64": "0.3.2", + "@nomicfoundation/edr-darwin-x64": "0.3.2", + "@nomicfoundation/edr-linux-arm64-gnu": "0.3.2", + "@nomicfoundation/edr-linux-arm64-musl": "0.3.2", + "@nomicfoundation/edr-linux-x64-gnu": "0.3.2", + "@nomicfoundation/edr-linux-x64-musl": "0.3.2", + "@nomicfoundation/edr-win32-arm64-msvc": "0.3.2", + "@nomicfoundation/edr-win32-ia32-msvc": "0.3.2", + "@nomicfoundation/edr-win32-x64-msvc": "0.3.2" + } + }, + "node_modules/@nomicfoundation/edr-darwin-arm64": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-arm64/-/edr-darwin-arm64-0.3.2.tgz", + "integrity": "sha512-l6wfSBUUbGJiCENT6272CDI8yoMuf0sZH56H5qz3HnAyVzenkOvmzyF6/lar54m986kdAQqWls4cLvDxiOuLxg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 18" } }, - "node_modules/@nomicfoundation/edr-linux-x64-gnu": { - "version": "0.2.1", + "node_modules/@nomicfoundation/edr-darwin-x64": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-x64/-/edr-darwin-x64-0.3.2.tgz", + "integrity": "sha512-OboExL7vEw+TRJQl3KkaEKU4K7PTdZPTInZ0fxMAtOpcWp7EKR+dQo68vc/iAOusB3xszHKxt7t+WpisItfdcg==", "cpu": [ "x64" ], - "license": "MIT", "optional": true, "os": [ - "linux" + "darwin" ], "engines": { "node": ">= 18" } }, - "node_modules/@nomicfoundation/edr-linux-x64-musl": { - "version": "0.2.1", + "node_modules/@nomicfoundation/edr-linux-arm64-gnu": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-gnu/-/edr-linux-arm64-gnu-0.3.2.tgz", + "integrity": "sha512-xtEK+1eg++3pHi6405NDXd80S3CGOFEGQIyVGCwjMGQFOLSzBGGCsrb/0GB4J19zd1o/8ftCd/HjZcbVAWWTLQ==", "cpu": [ - "x64" + "arm64" ], - "license": "MIT", "optional": true, "os": [ "linux" @@ -3018,16 +3613,108 @@ "node": ">= 18" } }, - "node_modules/@nomicfoundation/ethereumjs-common": { - "version": "4.0.4", - "license": "MIT", - "dependencies": { - "@nomicfoundation/ethereumjs-util": "9.0.4" - } - }, + "node_modules/@nomicfoundation/edr-linux-arm64-musl": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-musl/-/edr-linux-arm64-musl-0.3.2.tgz", + "integrity": "sha512-3cIsskJOXQ1yEVsImmCacY7O03tUTiWrmd54F05PnPFrDLkjbzodQ3b2gUWzfbzUZWl67ZTJd1CvVSzpe7XGzw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 18" + } + }, + "node_modules/@nomicfoundation/edr-linux-x64-gnu": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-gnu/-/edr-linux-x64-gnu-0.3.2.tgz", + "integrity": "sha512-ouPdphHNsyO7wqwa4hwahC5WqBglK/fIvMmhR/SXNZ9qruIpsA8ZZKIURaHMOv/2h2BbNGcyTX9uEk6+5rK/MQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 18" + } + }, + "node_modules/@nomicfoundation/edr-linux-x64-musl": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-musl/-/edr-linux-x64-musl-0.3.2.tgz", + "integrity": "sha512-sRhwhiPbkpJMOUwXW1FZw9ks6xWyQhIhM0E8o3TXEXKSPKTE6whQLEk1R37iFITaI36vb6rSwLKTU1cb32gCoA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 18" + } + }, + "node_modules/@nomicfoundation/edr-win32-arm64-msvc": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-win32-arm64-msvc/-/edr-win32-arm64-msvc-0.3.2.tgz", + "integrity": "sha512-IEwVealKfumu1HSSnama26yPuQC/uthRPK5IWtFsQUOGwOXaS1r9Bu7cGYH2jBHl3IT/JbxD4xzPq/2pM9uK0A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/edr-win32-ia32-msvc": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-win32-ia32-msvc/-/edr-win32-ia32-msvc-0.3.2.tgz", + "integrity": "sha512-jYMnf6SFgguqROswwdsjJ1wvneD/5c16pVu9OD4DxNqhKNP5bHEw6L2N4DcJ89tpXMpJ6AlOpc0QuwzddiZ3tA==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 18" + } + }, + "node_modules/@nomicfoundation/edr-win32-x64-msvc": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-win32-x64-msvc/-/edr-win32-x64-msvc-0.3.2.tgz", + "integrity": "sha512-Byn4QuWczRy/DUUQM3WjglgX/jGVUURVFaUsmIhnGg//MPlCLawubBGRqsrMuvaYedlIIJ4I2rgKvZlxdgHrqg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 18" + } + }, + "node_modules/@nomicfoundation/ethereumjs-common": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.4.tgz", + "integrity": "sha512-9Rgb658lcWsjiicr5GzNCjI1llow/7r0k50dLL95OJ+6iZJcVbi15r3Y0xh2cIO+zgX0WIHcbzIu6FeQf9KPrg==", + "dependencies": { + "@nomicfoundation/ethereumjs-util": "9.0.4" + } + }, "node_modules/@nomicfoundation/ethereumjs-rlp": { "version": "5.0.4", - "license": "MPL-2.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.4.tgz", + "integrity": "sha512-8H1S3s8F6QueOc/X92SdrA4RDenpiAEqMg5vJH99kcQaCy/a3Q6fgseo75mgWlbanGJXSlAPtnCeG9jvfTYXlw==", "bin": { "rlp": "bin/rlp.cjs" }, @@ -3037,7 +3724,8 @@ }, "node_modules/@nomicfoundation/ethereumjs-tx": { "version": "5.0.4", - "license": "MPL-2.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.4.tgz", + "integrity": "sha512-Xjv8wAKJGMrP1f0n2PeyfFCCojHd7iS3s/Ab7qzF1S64kxZ8Z22LCMynArYsVqiFx6rzYy548HNVEyI+AYN/kw==", "dependencies": { "@nomicfoundation/ethereumjs-common": "4.0.4", "@nomicfoundation/ethereumjs-rlp": "5.0.4", @@ -3058,7 +3746,8 @@ }, "node_modules/@nomicfoundation/ethereumjs-tx/node_modules/ethereum-cryptography": { "version": "0.1.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", "dependencies": { "@types/pbkdf2": "^3.0.0", "@types/secp256k1": "^4.0.1", @@ -3079,7 +3768,8 @@ }, "node_modules/@nomicfoundation/ethereumjs-util": { "version": "9.0.4", - "license": "MPL-2.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.4.tgz", + "integrity": "sha512-sLOzjnSrlx9Bb9EFNtHzK/FJFsfg2re6bsGqinFinH1gCqVfz9YYlXiMWwDM4C/L4ywuHFCYwfKTVr/QHQcU0Q==", "dependencies": { "@nomicfoundation/ethereumjs-rlp": "5.0.4", "ethereum-cryptography": "0.1.3" @@ -3098,7 +3788,8 @@ }, "node_modules/@nomicfoundation/ethereumjs-util/node_modules/ethereum-cryptography": { "version": "0.1.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", "dependencies": { "@types/pbkdf2": "^3.0.0", "@types/secp256k1": "^4.0.1", @@ -3119,7 +3810,8 @@ }, "node_modules/@nomicfoundation/hardhat-network-helpers": { "version": "1.0.10", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-network-helpers/-/hardhat-network-helpers-1.0.10.tgz", + "integrity": "sha512-R35/BMBlx7tWN5V6d/8/19QCwEmIdbnA4ZrsuXgvs8i2qFx5i7h6mH5pBS4Pwi4WigLH+upl6faYusrNPuzMrQ==", "dependencies": { "ethereumjs-util": "^7.1.4" }, @@ -3129,7 +3821,8 @@ }, "node_modules/@nomicfoundation/hardhat-network-helpers/node_modules/ethereum-cryptography": { "version": "0.1.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", "dependencies": { "@types/pbkdf2": "^3.0.0", "@types/secp256k1": "^4.0.1", @@ -3150,7 +3843,8 @@ }, "node_modules/@nomicfoundation/hardhat-network-helpers/node_modules/ethereumjs-util": { "version": "7.1.5", - "license": "MPL-2.0", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", + "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", "dependencies": { "@types/bn.js": "^5.1.0", "bn.js": "^5.1.2", @@ -3164,7 +3858,8 @@ }, "node_modules/@nomicfoundation/hardhat-verify": { "version": "2.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-verify/-/hardhat-verify-2.0.4.tgz", + "integrity": "sha512-B8ZjhOrmbbRWqJi65jvQblzjsfYktjqj2vmOm+oc2Vu8drZbT2cjeSCRHZKbS7lOtfW78aJZSFvw+zRLCiABJA==", "dependencies": { "@ethersproject/abi": "^5.1.2", "@ethersproject/address": "^5.0.2", @@ -3182,7 +3877,8 @@ }, "node_modules/@nomicfoundation/hardhat-verify/node_modules/cbor": { "version": "8.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/cbor/-/cbor-8.1.0.tgz", + "integrity": "sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==", "dependencies": { "nofilter": "^3.1.0" }, @@ -3192,7 +3888,8 @@ }, "node_modules/@nomicfoundation/solidity-analyzer": { "version": "0.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.1.tgz", + "integrity": "sha512-1LMtXj1puAxyFusBgUIy5pZk3073cNXYnXUpuNKFghHbIit/xZgbk0AokpUADbNm3gyD6bFWl3LRFh3dhVdREg==", "engines": { "node": ">= 12" }, @@ -3209,12 +3906,88 @@ "@nomicfoundation/solidity-analyzer-win32-x64-msvc": "0.1.1" } }, + "node_modules/@nomicfoundation/solidity-analyzer-darwin-arm64": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.1.tgz", + "integrity": "sha512-KcTodaQw8ivDZyF+D76FokN/HdpgGpfjc/gFCImdLUyqB6eSWVaZPazMbeAjmfhx3R0zm/NYVzxwAokFKgrc0w==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-darwin-x64": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.1.tgz", + "integrity": "sha512-XhQG4BaJE6cIbjAVtzGOGbK3sn1BO9W29uhk9J8y8fZF1DYz0Doj8QDMfpMu+A6TjPDs61lbsmeYodIDnfveSA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-freebsd-x64": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-freebsd-x64/-/solidity-analyzer-freebsd-x64-0.1.1.tgz", + "integrity": "sha512-GHF1VKRdHW3G8CndkwdaeLkVBi5A9u2jwtlS7SLhBc8b5U/GcoL39Q+1CSO3hYqePNP+eV5YI7Zgm0ea6kMHoA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-linux-arm64-gnu": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.1.tgz", + "integrity": "sha512-g4Cv2fO37ZsUENQ2vwPnZc2zRenHyAxHcyBjKcjaSmmkKrFr64yvzeNO8S3GBFCo90rfochLs99wFVGT/0owpg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-linux-arm64-musl": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.1.tgz", + "integrity": "sha512-WJ3CE5Oek25OGE3WwzK7oaopY8xMw9Lhb0mlYuJl/maZVo+WtP36XoQTb7bW/i8aAdHW5Z+BqrHMux23pvxG3w==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, "node_modules/@nomicfoundation/solidity-analyzer-linux-x64-gnu": { "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.1.tgz", + "integrity": "sha512-5WN7leSr5fkUBBjE4f3wKENUy9HQStu7HmWqbtknfXkkil+eNWiBV275IOlpXku7v3uLsXTOKpnnGHJYI2qsdA==", "cpu": [ "x64" ], - "license": "MIT", "optional": true, "os": [ "linux" @@ -3225,10 +3998,11 @@ }, "node_modules/@nomicfoundation/solidity-analyzer-linux-x64-musl": { "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.1.tgz", + "integrity": "sha512-KdYMkJOq0SYPQMmErv/63CwGwMm5XHenEna9X9aB8mQmhDBrYrlAOSsIPgFCUSL0hjxE3xHP65/EPXR/InD2+w==", "cpu": [ "x64" ], - "license": "MIT", "optional": true, "os": [ "linux" @@ -3237,14 +4011,62 @@ "node": ">= 10" } }, + "node_modules/@nomicfoundation/solidity-analyzer-win32-arm64-msvc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-arm64-msvc/-/solidity-analyzer-win32-arm64-msvc-0.1.1.tgz", + "integrity": "sha512-VFZASBfl4qiBYwW5xeY20exWhmv6ww9sWu/krWSesv3q5hA0o1JuzmPHR4LPN6SUZj5vcqci0O6JOL8BPw+APg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-win32-ia32-msvc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-ia32-msvc/-/solidity-analyzer-win32-ia32-msvc-0.1.1.tgz", + "integrity": "sha512-JnFkYuyCSA70j6Si6cS1A9Gh1aHTEb8kOTBApp/c7NRTFGNMH8eaInKlyuuiIbvYFhlXW4LicqyYuWNNq9hkpQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-win32-x64-msvc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.1.tgz", + "integrity": "sha512-HrVJr6+WjIXGnw3Q9u6KQcbZCtk0caVWhCdFADySvRyUxJ8PnzlaP+MhwNE8oyT8OZ6ejHBRrrgjSqDCFXGirw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, "node_modules/@openzeppelin/contracts": { "version": "5.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-5.0.2.tgz", + "integrity": "sha512-ytPc6eLGcHHnapAZ9S+5qsdomhjo6QBHTDRRBFfTxXIpsicMhVPouPgmUPebZZZGX7vt9USA+Z+0M0dSVtSUEA==", + "dev": true }, "node_modules/@parcel/watcher": { "version": "2.4.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.4.0.tgz", + "integrity": "sha512-XJLGVL0DEclX5pcWa2N9SX1jCGTDd8l972biNooLFtjneuGqodupPQh6XseXIBBeVIMaaJ7bTcs3qGvXwsp4vg==", + "hasInstallScript": true, "dependencies": { "detect-libc": "^1.0.3", "is-glob": "^4.0.3", @@ -3273,15 +4095,16 @@ "@parcel/watcher-win32-x64": "2.4.0" } }, - "node_modules/@parcel/watcher-linux-x64-glibc": { + "node_modules/@parcel/watcher-android-arm64": { "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.4.0.tgz", + "integrity": "sha512-+fPtO/GsbYX1LJnCYCaDVT3EOBjvSFdQN9Mrzh9zWAOOfvidPWyScTrHIZHHfJBvlHzNA0Gy0U3NXFA/M7PHUA==", "cpu": [ - "x64" + "arm64" ], - "license": "MIT", "optional": true, "os": [ - "linux" + "android" ], "engines": { "node": ">= 10.0.0" @@ -3291,15 +4114,16 @@ "url": "https://opencollective.com/parcel" } }, - "node_modules/@parcel/watcher-linux-x64-musl": { + "node_modules/@parcel/watcher-darwin-arm64": { "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.4.0.tgz", + "integrity": "sha512-T/At5pansFuQ8VJLRx0C6C87cgfqIYhW2N/kBfLCUvDhCah0EnLLwaD/6MW3ux+rpgkpQAnMELOCTKlbwncwiA==", "cpu": [ - "x64" + "arm64" ], - "license": "MIT", "optional": true, "os": [ - "linux" + "darwin" ], "engines": { "node": ">= 10.0.0" @@ -3309,17 +4133,17 @@ "url": "https://opencollective.com/parcel" } }, - "node_modules/@parcel/watcher-wasm": { + "node_modules/@parcel/watcher-darwin-x64": { "version": "2.4.0", - "bundleDependencies": [ - "napi-wasm" + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.4.0.tgz", + "integrity": "sha512-vZMv9jl+szz5YLsSqEGCMSllBl1gU1snfbRL5ysJU03MEa6gkVy9OMcvXV1j4g0++jHEcvzhs3Z3LpeEbVmY6Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" ], - "license": "MIT", - "dependencies": { - "is-glob": "^4.0.3", - "micromatch": "^4.0.5", - "napi-wasm": "^1.1.0" - }, "engines": { "node": ">= 10.0.0" }, @@ -3328,32 +4152,226 @@ "url": "https://opencollective.com/parcel" } }, - "node_modules/@parcel/watcher-wasm/node_modules/napi-wasm": { - "version": "1.1.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/@parcel/watcher/node_modules/detect-libc": { - "version": "1.0.3", - "license": "Apache-2.0", - "bin": { - "detect-libc": "bin/detect-libc.js" - }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.4.0.tgz", + "integrity": "sha512-dHTRMIplPDT1M0+BkXjtMN+qLtqq24sLDUhmU+UxxLP2TEY2k8GIoqIJiVrGWGomdWsy5IO27aDV1vWyQ6gfHA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=0.10" + "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", - "license": "MIT", - "engines": { - "node": "^16 || ^18 || >= 20" - } + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.4.0.tgz", + "integrity": "sha512-9NQXD+qk46RwATNC3/UB7HWurscY18CnAPMTFcI9Y8CTbtm63/eex1SNt+BHFinEQuLBjaZwR2Lp+n7pmEJPpQ==", + "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.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.4.0.tgz", + "integrity": "sha512-QuJTAQdsd7PFW9jNGaV9Pw+ZMWV9wKThEzzlY3Lhnnwy7iW23qtQFPql8iEaSFMCVI5StNNmONUopk+MFKpiKg==", + "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.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.4.0.tgz", + "integrity": "sha512-oyN+uA9xcTDo/45bwsd6TFHa7Lc7hKujyMlvwrCLvSckvWogndCEoVYFNfZ6JJ2KNL/6fFiGPcbjp8jJmEh5Ng==", + "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.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.4.0.tgz", + "integrity": "sha512-KphV8awJmxU3q52JQvJot0QMu07CIyEjV+2Tb2ZtbucEgqyRcxOBDMsqp1JNq5nuDXtcCC0uHQICeiEz38dPBQ==", + "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.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.4.0.tgz", + "integrity": "sha512-7jzcOonpXNWcSijPpKD5IbC6xC7yTibjJw9jviVzZostYLGxbz8LDJLUnLzLzhASPlPGgpeKLtFUMjAAzM+gSA==", + "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.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-wasm/-/watcher-wasm-2.4.0.tgz", + "integrity": "sha512-MNgQ4WCbBybqQ97KwR/hqJGYTg3+s8qHpgIyFWB2qJOBvoJWbXuJGmm4ZkPLq2bMaANqCZqrXwmKYagZTkMKZA==", + "bundleDependencies": [ + "napi-wasm" + ], + "dependencies": { + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "napi-wasm": "^1.1.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-wasm/node_modules/napi-wasm": { + "version": "1.1.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.4.0.tgz", + "integrity": "sha512-NOej2lqlq8bQNYhUMnOD0nwvNql8ToQF+1Zhi9ULZoG+XTtJ9hNnCFfyICxoZLXor4bBPTOnzs/aVVoefYnjIg==", + "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.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.4.0.tgz", + "integrity": "sha512-IO/nM+K2YD/iwjWAfHFMBPz4Zqn6qBDqZxY4j2n9s+4+OuTSRM/y/irksnuqcspom5DjkSeF9d0YbO+qpys+JA==", + "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.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.4.0.tgz", + "integrity": "sha512-pAUyUVjfFjWaf/pShmJpJmNxZhbMvJASUpdes9jL6bTEJ+gDxPRSpXTIemNyNsb9AtbiGXs9XduP1reThmd+dA==", + "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/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "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", + "integrity": "sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g==", + "engines": { + "node": "^16 || ^18 || >= 20" + } }, "node_modules/@peculiar/asn1-android": { "version": "2.3.10", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-android/-/asn1-android-2.3.10.tgz", + "integrity": "sha512-z9Rx9cFJv7UUablZISe7uksNbFJCq13hO0yEAOoIpAymALTLlvUOSLnGiQS7okPaM5dP42oTLhezH6XDXRXjGw==", "dev": true, - "license": "MIT", "dependencies": { "@peculiar/asn1-schema": "^2.3.8", "asn1js": "^3.0.5", @@ -3362,13 +4380,15 @@ }, "node_modules/@peculiar/asn1-android/node_modules/tslib": { "version": "2.6.2", - "dev": true, - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@peculiar/asn1-ecc": { "version": "2.3.8", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-ecc/-/asn1-ecc-2.3.8.tgz", + "integrity": "sha512-Ah/Q15y3A/CtxbPibiLM/LKcMbnLTdUdLHUgdpB5f60sSvGkXzxJCu5ezGTFHogZXWNX3KSmYqilCrfdmBc6pQ==", "dev": true, - "license": "MIT", "dependencies": { "@peculiar/asn1-schema": "^2.3.8", "@peculiar/asn1-x509": "^2.3.8", @@ -3378,13 +4398,15 @@ }, "node_modules/@peculiar/asn1-ecc/node_modules/tslib": { "version": "2.6.2", - "dev": true, - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@peculiar/asn1-rsa": { "version": "2.3.8", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-rsa/-/asn1-rsa-2.3.8.tgz", + "integrity": "sha512-ES/RVEHu8VMYXgrg3gjb1m/XG0KJWnV4qyZZ7mAg7rrF3VTmRbLxO8mk+uy0Hme7geSMebp+Wvi2U6RLLEs12Q==", "dev": true, - "license": "MIT", "dependencies": { "@peculiar/asn1-schema": "^2.3.8", "@peculiar/asn1-x509": "^2.3.8", @@ -3394,13 +4416,15 @@ }, "node_modules/@peculiar/asn1-rsa/node_modules/tslib": { "version": "2.6.2", - "dev": true, - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@peculiar/asn1-schema": { "version": "2.3.8", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.3.8.tgz", + "integrity": "sha512-ULB1XqHKx1WBU/tTFIA+uARuRoBVZ4pNdOA878RDrRbBfBGcSzi5HBkdScC6ZbHn8z7L8gmKCgPC1LHRrP46tA==", "dev": true, - "license": "MIT", "dependencies": { "asn1js": "^3.0.5", "pvtsutils": "^1.3.5", @@ -3409,13 +4433,15 @@ }, "node_modules/@peculiar/asn1-schema/node_modules/tslib": { "version": "2.6.2", - "dev": true, - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@peculiar/asn1-x509": { "version": "2.3.8", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509/-/asn1-x509-2.3.8.tgz", + "integrity": "sha512-voKxGfDU1c6r9mKiN5ZUsZWh3Dy1BABvTM3cimf0tztNwyMJPhiXY94eRTgsMQe6ViLfT6EoXxkWVzcm3mFAFw==", "dev": true, - "license": "MIT", "dependencies": { "@peculiar/asn1-schema": "^2.3.8", "asn1js": "^3.0.5", @@ -3426,8 +4452,9 @@ }, "node_modules/@peculiar/asn1-x509/node_modules/tslib": { "version": "2.6.2", - "dev": true, - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", @@ -3441,8 +4468,9 @@ }, "node_modules/@pkgr/core": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.0.tgz", + "integrity": "sha512-Zwq5OCzuwJC2jwqmpEQt7Ds1DTi6BWSwoGkbb1n9pO3hzb35BoJELx7c0T23iDkBGkh2e7tvOtjF3tr3OaQHDQ==", "dev": true, - "license": "MIT", "engines": { "node": "^12.20.0 || ^14.18.0 || >=16.0.0" }, @@ -3452,16 +4480,18 @@ }, "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", "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==", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "4.2.10" }, @@ -3471,13 +4501,15 @@ }, "node_modules/@pnpm/network.ca-file/node_modules/graceful-fs": { "version": "4.2.10", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true }, "node_modules/@pnpm/npm-conf": { "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.2.2.tgz", + "integrity": "sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==", "dev": true, - "license": "MIT", "dependencies": { "@pnpm/config.env-replace": "^1.1.0", "@pnpm/network.ca-file": "^1.0.1", @@ -3487,65 +4519,213 @@ "node": ">=12" } }, - "node_modules/@rollup/rollup-linux-x64-gnu": { + "node_modules/@rollup/rollup-android-arm-eabi": { "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.5.tgz", + "integrity": "sha512-idWaG8xeSRCfRq9KpRysDHJ/rEHBEXcHuJ82XY0yYFIWnLMjZv9vF/7DOq8djQ2n3Lk6+3qfSH8AqlmHlmi1MA==", "cpu": [ - "x64" + "arm" ], "dev": true, - "license": "MIT", "optional": true, "os": [ - "linux" + "android" ] }, - "node_modules/@rollup/rollup-linux-x64-musl": { + "node_modules/@rollup/rollup-android-arm64": { "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.5.tgz", + "integrity": "sha512-f14d7uhAMtsCGjAYwZGv6TwuS3IFaM4ZnGMUn3aCBgkcHAYErhV1Ad97WzBvS2o0aaDv4mVz+syiN0ElMyfBPg==", "cpu": [ - "x64" + "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ - "linux" + "android" ] }, - "node_modules/@safe-global/safe-4337": { - "resolved": "modules/4337", - "link": true + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.5.tgz", + "integrity": "sha512-ndoXeLx455FffL68OIUrVr89Xu1WLzAG4n65R8roDlCoYiQcGGg6MALvs2Ap9zs7AHg8mpHtMpwC8jBBjZrT/w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@safe-global/safe-4337-local-bundler": { - "resolved": "packages/4337-local-bundler", - "link": true + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.5.tgz", + "integrity": "sha512-UmElV1OY2m/1KEEqTlIjieKfVwRg0Zwg4PLgNf0s3glAHXBN99KLpw5A5lrSYCa1Kp63czTpVll2MAqbZYIHoA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@safe-global/safe-4337-provider": { - "resolved": "packages/4337-provider", - "link": true + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.5.tgz", + "integrity": "sha512-Q0LcU61v92tQB6ae+udZvOyZ0wfpGojtAKrrpAaIqmJ7+psq4cMIhT/9lfV6UQIpeItnq/2QDROhNLo00lOD1g==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@safe-global/safe-allowance-module": { + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.5.tgz", + "integrity": "sha512-dkRscpM+RrR2Ee3eOQmRWFjmV/payHEOrjyq1VZegRUa5OrZJ2MAxBNs05bZuY0YCtpqETDy1Ix4i/hRqX98cA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.5.tgz", + "integrity": "sha512-QaKFVOzzST2xzY4MAmiDmURagWLFh+zZtttuEnuNn19AiZ0T3fhPyjPPGwLNdiDT82ZE91hnfJsUiDwF9DClIQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.5.tgz", + "integrity": "sha512-HeGqmRJuyVg6/X6MpE2ur7GbymBPS8Np0S/vQFHDmocfORT+Zt76qu+69NUoxXzGqVP1pzaY6QIi0FJWLC3OPA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.5.tgz", + "integrity": "sha512-Dq1bqBdLaZ1Gb/l2e5/+o3B18+8TI9ANlA1SkejZqDgdU/jK/ThYaMPMJpVMMXy2uRHvGKbkz9vheVGdq3cJfA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.5.tgz", + "integrity": "sha512-ezyFUOwldYpj7AbkwyW9AJ203peub81CaAIVvckdkyH8EvhEIoKzaMFJj0G4qYJ5sw3BpqhFrsCc30t54HV8vg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.5.tgz", + "integrity": "sha512-aHSsMnUw+0UETB0Hlv7B/ZHOGY5bQdwMKJSzGfDfvyhnpmVxLMGnQPGNE9wgqkLUs3+gbG1Qx02S2LLfJ5GaRQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.5.tgz", + "integrity": "sha512-AiqiLkb9KSf7Lj/o1U3SEP9Zn+5NuVKgFdRIZkvd4N0+bYrTOovVd0+LmYCPQGbocT4kvFyK+LXCDiXPBF3fyA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.5.tgz", + "integrity": "sha512-1q+mykKE3Vot1kaFJIDoUFv5TuW+QQVaf2FmTT9krg86pQrGStOSJJ0Zil7CFagyxDuouTepzt5Y5TVzyajOdQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@safe-global/safe-4337": { + "resolved": "modules/4337", + "link": true + }, + "node_modules/@safe-global/safe-4337-local-bundler": { + "resolved": "packages/4337-local-bundler", + "link": true + }, + "node_modules/@safe-global/safe-4337-provider": { + "resolved": "packages/4337-provider", + "link": true + }, + "node_modules/@safe-global/safe-allowance-module": { "resolved": "modules/allowances", "link": true }, "node_modules/@safe-global/safe-contracts": { "version": "1.4.1", - "license": "LGPL-3.0", + "resolved": "https://registry.npmjs.org/@safe-global/safe-contracts/-/safe-contracts-1.4.1.tgz", + "integrity": "sha512-fP1jewywSwsIniM04NsqPyVRFKPMAuirC3ftA/TA4X3Zc5EnwQp/UCJUU2PL/37/z/jMo8UUaJ+pnFNWmMU7dQ==", "peerDependencies": { "ethers": "5.4.0" } }, "node_modules/@safe-global/safe-deployments": { "version": "1.32.0", + "resolved": "https://registry.npmjs.org/@safe-global/safe-deployments/-/safe-deployments-1.32.0.tgz", + "integrity": "sha512-7RXmnBrUzJ9+Iat74yx3Gel0kygmsaWjJhqr+0Fy8mkP5ly/6dTZ/2ize1pv3j9Yal04NTOqXbaJG4JnbTANQw==", "dev": true, - "license": "MIT", "dependencies": { "semver": "^7.3.7" } }, "node_modules/@safe-global/safe-deployments/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==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -3555,8 +4735,9 @@ }, "node_modules/@safe-global/safe-deployments/node_modules/semver": { "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -3581,25 +4762,28 @@ }, "node_modules/@safe-global/safe-singleton-factory": { "version": "1.0.19", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@safe-global/safe-singleton-factory/-/safe-singleton-factory-1.0.19.tgz", + "integrity": "sha512-TwTmeEpwR+8E8XOWR93cOWK7NbepURpCqr6eOTwwkVZj1hS95Kkd0G2WmP1GokUlMS6xm9BxiIr1gYjOFGp8QQ==", + "dev": true }, "node_modules/@scure/base": { "version": "1.1.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.5.tgz", + "integrity": "sha512-Brj9FiG2W1MRQSTB212YVPRrcbjkv48FoZi/u4l/zds/ieRrqsh7aUf6CLwkAq61oKXr/ZlTzlY66gLIj3TFTQ==", "funding": { "url": "https://paulmillr.com/funding/" } }, "node_modules/@scure/bip32": { "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", + "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", "funding": [ { "type": "individual", "url": "https://paulmillr.com/funding/" } ], - "license": "MIT", "dependencies": { "@noble/hashes": "~1.2.0", "@noble/secp256k1": "~1.7.0", @@ -3608,13 +4792,14 @@ }, "node_modules/@scure/bip39": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", + "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", "funding": [ { "type": "individual", "url": "https://paulmillr.com/funding/" } ], - "license": "MIT", "dependencies": { "@noble/hashes": "~1.2.0", "@scure/base": "~1.1.0" @@ -3622,7 +4807,8 @@ }, "node_modules/@sentry/core": { "version": "5.30.0", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz", + "integrity": "sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==", "dependencies": { "@sentry/hub": "5.30.0", "@sentry/minimal": "5.30.0", @@ -3636,7 +4822,8 @@ }, "node_modules/@sentry/hub": { "version": "5.30.0", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-5.30.0.tgz", + "integrity": "sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==", "dependencies": { "@sentry/types": "5.30.0", "@sentry/utils": "5.30.0", @@ -3648,7 +4835,8 @@ }, "node_modules/@sentry/minimal": { "version": "5.30.0", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.30.0.tgz", + "integrity": "sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==", "dependencies": { "@sentry/hub": "5.30.0", "@sentry/types": "5.30.0", @@ -3660,7 +4848,8 @@ }, "node_modules/@sentry/node": { "version": "5.30.0", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-5.30.0.tgz", + "integrity": "sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==", "dependencies": { "@sentry/core": "5.30.0", "@sentry/hub": "5.30.0", @@ -3678,7 +4867,8 @@ }, "node_modules/@sentry/tracing": { "version": "5.30.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-5.30.0.tgz", + "integrity": "sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==", "dependencies": { "@sentry/hub": "5.30.0", "@sentry/minimal": "5.30.0", @@ -3692,14 +4882,16 @@ }, "node_modules/@sentry/types": { "version": "5.30.0", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-5.30.0.tgz", + "integrity": "sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==", "engines": { "node": ">=6" } }, "node_modules/@sentry/utils": { "version": "5.30.0", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-5.30.0.tgz", + "integrity": "sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==", "dependencies": { "@sentry/types": "5.30.0", "tslib": "^1.9.3" @@ -3730,13 +4922,15 @@ }, "node_modules/@simplewebauthn/types": { "version": "9.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@simplewebauthn/types/-/types-9.0.1.tgz", + "integrity": "sha512-tGSRP1QvsAvsJmnOlRQyw/mvK9gnPtjEc5fg2+m8n+QUa+D7rvrKkOYyfpy42GTs90X3RDOnqJgfHt+qO67/+w==", + "dev": true }, "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", "engines": { "node": ">=14.16" }, @@ -3746,29 +4940,34 @@ }, "node_modules/@solidity-parser/parser": { "version": "0.14.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.14.5.tgz", + "integrity": "sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg==", "dependencies": { "antlr4ts": "^0.5.0-alpha.4" } }, "node_modules/@stablelib/aead": { "version": "1.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@stablelib/aead/-/aead-1.0.1.tgz", + "integrity": "sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg==" }, "node_modules/@stablelib/binary": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@stablelib/binary/-/binary-1.0.1.tgz", + "integrity": "sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==", "dependencies": { "@stablelib/int": "^1.0.1" } }, "node_modules/@stablelib/bytes": { "version": "1.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@stablelib/bytes/-/bytes-1.0.1.tgz", + "integrity": "sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ==" }, "node_modules/@stablelib/chacha": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@stablelib/chacha/-/chacha-1.0.1.tgz", + "integrity": "sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg==", "dependencies": { "@stablelib/binary": "^1.0.1", "@stablelib/wipe": "^1.0.1" @@ -3776,7 +4975,8 @@ }, "node_modules/@stablelib/chacha20poly1305": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@stablelib/chacha20poly1305/-/chacha20poly1305-1.0.1.tgz", + "integrity": "sha512-MmViqnqHd1ymwjOQfghRKw2R/jMIGT3wySN7cthjXCBdO+qErNPUBnRzqNpnvIwg7JBCg3LdeCZZO4de/yEhVA==", "dependencies": { "@stablelib/aead": "^1.0.1", "@stablelib/binary": "^1.0.1", @@ -3788,11 +4988,13 @@ }, "node_modules/@stablelib/constant-time": { "version": "1.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@stablelib/constant-time/-/constant-time-1.0.1.tgz", + "integrity": "sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg==" }, "node_modules/@stablelib/ed25519": { "version": "1.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@stablelib/ed25519/-/ed25519-1.0.3.tgz", + "integrity": "sha512-puIMWaX9QlRsbhxfDc5i+mNPMY+0TmQEskunY1rZEBPi1acBCVQAhnsk/1Hk50DGPtVsZtAWQg4NHGlVaO9Hqg==", "dependencies": { "@stablelib/random": "^1.0.2", "@stablelib/sha512": "^1.0.1", @@ -3801,11 +5003,13 @@ }, "node_modules/@stablelib/hash": { "version": "1.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@stablelib/hash/-/hash-1.0.1.tgz", + "integrity": "sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg==" }, "node_modules/@stablelib/hkdf": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@stablelib/hkdf/-/hkdf-1.0.1.tgz", + "integrity": "sha512-SBEHYE16ZXlHuaW5RcGk533YlBj4grMeg5TooN80W3NpcHRtLZLLXvKyX0qcRFxf+BGDobJLnwkvgEwHIDBR6g==", "dependencies": { "@stablelib/hash": "^1.0.1", "@stablelib/hmac": "^1.0.1", @@ -3814,7 +5018,8 @@ }, "node_modules/@stablelib/hmac": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@stablelib/hmac/-/hmac-1.0.1.tgz", + "integrity": "sha512-V2APD9NSnhVpV/QMYgCVMIYKiYG6LSqw1S65wxVoirhU/51ACio6D4yDVSwMzuTJXWZoVHbDdINioBwKy5kVmA==", "dependencies": { "@stablelib/constant-time": "^1.0.1", "@stablelib/hash": "^1.0.1", @@ -3823,18 +5028,21 @@ }, "node_modules/@stablelib/int": { "version": "1.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@stablelib/int/-/int-1.0.1.tgz", + "integrity": "sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w==" }, "node_modules/@stablelib/keyagreement": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@stablelib/keyagreement/-/keyagreement-1.0.1.tgz", + "integrity": "sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg==", "dependencies": { "@stablelib/bytes": "^1.0.1" } }, "node_modules/@stablelib/poly1305": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@stablelib/poly1305/-/poly1305-1.0.1.tgz", + "integrity": "sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA==", "dependencies": { "@stablelib/constant-time": "^1.0.1", "@stablelib/wipe": "^1.0.1" @@ -3842,7 +5050,8 @@ }, "node_modules/@stablelib/random": { "version": "1.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@stablelib/random/-/random-1.0.2.tgz", + "integrity": "sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w==", "dependencies": { "@stablelib/binary": "^1.0.1", "@stablelib/wipe": "^1.0.1" @@ -3850,7 +5059,8 @@ }, "node_modules/@stablelib/sha256": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@stablelib/sha256/-/sha256-1.0.1.tgz", + "integrity": "sha512-GIIH3e6KH+91FqGV42Kcj71Uefd/QEe7Dy42sBTeqppXV95ggCcxLTk39bEr+lZfJmp+ghsR07J++ORkRELsBQ==", "dependencies": { "@stablelib/binary": "^1.0.1", "@stablelib/hash": "^1.0.1", @@ -3859,7 +5069,8 @@ }, "node_modules/@stablelib/sha512": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@stablelib/sha512/-/sha512-1.0.1.tgz", + "integrity": "sha512-13gl/iawHV9zvDKciLo1fQ8Bgn2Pvf7OV6amaRVKiq3pjQ3UmEpXxWiAfV8tYjUpeZroBxtyrwtdooQT/i3hzw==", "dependencies": { "@stablelib/binary": "^1.0.1", "@stablelib/hash": "^1.0.1", @@ -3868,11 +5079,13 @@ }, "node_modules/@stablelib/wipe": { "version": "1.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@stablelib/wipe/-/wipe-1.0.1.tgz", + "integrity": "sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg==" }, "node_modules/@stablelib/x25519": { "version": "1.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@stablelib/x25519/-/x25519-1.0.3.tgz", + "integrity": "sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw==", "dependencies": { "@stablelib/keyagreement": "^1.0.1", "@stablelib/random": "^1.0.2", @@ -3881,9 +5094,10 @@ }, "node_modules/@swc/core": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.4.1.tgz", + "integrity": "sha512-3y+Y8js+e7BbM16iND+6Rcs3jdiL28q3iVtYsCviYSSpP2uUVKkp5sJnCY4pg8AaVvyN7CGQHO7gLEZQ5ByozQ==", "devOptional": true, "hasInstallScript": true, - "license": "Apache-2.0", "dependencies": { "@swc/counter": "^0.1.2", "@swc/types": "^0.1.5" @@ -3916,120 +5130,265 @@ } } }, - "node_modules/@swc/core-linux-x64-gnu": { + "node_modules/@swc/core-darwin-arm64": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.4.1.tgz", + "integrity": "sha512-ePyfx0348UbR4DOAW24TedeJbafnzha8liXFGuQ4bdXtEVXhLfPngprrxKrAddCuv42F9aTxydlF6+adD3FBhA==", "cpu": [ - "x64" + "arm64" ], "dev": true, - "license": "Apache-2.0 AND MIT", "optional": true, "os": [ - "linux" + "darwin" ], "engines": { "node": ">=10" } }, - "node_modules/@swc/core-linux-x64-musl": { + "node_modules/@swc/core-darwin-x64": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.4.1.tgz", + "integrity": "sha512-eLf4JSe6VkCMdDowjM8XNC5rO+BrgfbluEzAVtKR8L2HacNYukieumN7EzpYCi0uF1BYwu1ku6tLyG2r0VcGxA==", "cpu": [ "x64" ], "dev": true, - "license": "Apache-2.0 AND MIT", "optional": true, "os": [ - "linux" + "darwin" ], "engines": { "node": ">=10" } }, - "node_modules/@swc/counter": { - "version": "0.1.2", - "devOptional": true, - "license": "Apache-2.0" - }, - "node_modules/@swc/types": { - "version": "0.1.5", - "devOptional": true, - "license": "Apache-2.0" - }, - "node_modules/@szmarczak/http-timer": { - "version": "5.0.1", + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.4.1.tgz", + "integrity": "sha512-K8VtTLWMw+rkN/jDC9o/Q9SMmzdiHwYo2CfgkwVT29NsGccwmNhCQx6XoYiPKyKGIFKt4tdQnJHKUFzxUqQVtQ==", + "cpu": [ + "arm" + ], "dev": true, - "license": "MIT", - "dependencies": { - "defer-to-connect": "^2.0.1" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=14.16" + "node": ">=10" } }, - "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "license": "MIT" - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "license": "MIT" - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "license": "MIT" - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.4", - "license": "MIT" - }, - "node_modules/@types/bn.js": { - "version": "5.1.5", - "license": "MIT", - "dependencies": { - "@types/node": "*" + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.4.1.tgz", + "integrity": "sha512-0e8p4g0Bfkt8lkiWgcdiENH3RzkcqKtpRXIVNGOmVc0OBkvc2tpm2WTx/eoCnes2HpTT4CTtR3Zljj4knQ4Fvw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" } }, - "node_modules/@types/chai": { - "version": "4.3.11", - "license": "MIT" - }, - "node_modules/@types/chai-as-promised": { + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.4.1.tgz", + "integrity": "sha512-b/vWGQo2n7lZVUnSQ7NBq3Qrj85GrAPPiRbpqaIGwOytiFSk8VULFihbEUwDe0rXgY4LDm8z8wkgADZcLnmdUA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.4.1.tgz", + "integrity": "sha512-AFMQlvkKEdNi1Vk2GFTxxJzbICttBsOQaXa98kFTeWTnFFIyiIj2w7Sk8XRTEJ/AjF8ia8JPKb1zddBWr9+bEQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.4.1.tgz", + "integrity": "sha512-QX2MxIECX1gfvUVZY+jk528/oFkS9MAl76e3ZRvG2KC/aKlCQL0KSzcTSm13mOxkDKS30EaGRDRQWNukGpMeRg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.4.1.tgz", + "integrity": "sha512-OklkJYXXI/tntD2zaY8i3iZldpyDw5q+NAP3k9OlQ7wXXf37djRsHLV0NW4+ZNHBjE9xp2RsXJ0jlOJhfgGoFA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.4.1.tgz", + "integrity": "sha512-MBuc3/QfKX9FnLOU7iGN+6yHRTQaPQ9WskiC8s8JFiKQ+7I2p25tay2RplR9dIEEGgVAu6L7auv96LbNTh+FaA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.4.1.tgz", + "integrity": "sha512-lu4h4wFBb/bOK6N2MuZwg7TrEpwYXgpQf5R7ObNSXL65BwZ9BG8XRzD+dLJmALu8l5N08rP/TrpoKRoGT4WSxw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/counter": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.2.tgz", + "integrity": "sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw==", + "devOptional": true + }, + "node_modules/@swc/types": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.5.tgz", + "integrity": "sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==", + "devOptional": true + }, + "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, + "dependencies": { + "defer-to-connect": "^2.0.1" + }, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==" + }, + "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==" + }, + "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==" + }, + "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==" + }, + "node_modules/@types/bn.js": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.5.tgz", + "integrity": "sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/chai": { + "version": "4.3.11", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.11.tgz", + "integrity": "sha512-qQR1dr2rGIHYlJulmr8Ioq3De0Le9E4MJ5AiaeAETJJpndT1uUNHsGFK3L/UIu+rbkQSdj8J/w2bCsBZc/Y5fQ==" + }, + "node_modules/@types/chai-as-promised": { "version": "7.1.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.8.tgz", + "integrity": "sha512-ThlRVIJhr69FLlh6IctTXFkmhtP3NpMZ2QGq69StYLyKZFp/HOp1VdKZj7RvfNWYYcJ1xlbLGLLWj1UvP5u/Gw==", "dependencies": { "@types/chai": "*" } }, "node_modules/@types/concat-stream": { "version": "1.6.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-1.6.1.tgz", + "integrity": "sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==", "dependencies": { "@types/node": "*" } }, "node_modules/@types/debug": { "version": "4.1.12", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", "dependencies": { "@types/ms": "*" } }, "node_modules/@types/estree": { "version": "1.0.5", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true }, "node_modules/@types/form-data": { "version": "0.0.33", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-0.0.33.tgz", + "integrity": "sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw==", "dependencies": { "@types/node": "*" } }, "node_modules/@types/glob": { "version": "7.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", "dependencies": { "@types/minimatch": "*", "@types/node": "*" @@ -4037,66 +5396,79 @@ }, "node_modules/@types/http-cache-semantics": { "version": "4.0.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==", + "dev": true }, "node_modules/@types/json-schema": { "version": "7.0.15", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true }, "node_modules/@types/json5": { "version": "0.0.29", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true }, "node_modules/@types/lru-cache": { "version": "5.1.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==" }, "node_modules/@types/minimatch": { "version": "5.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==" }, "node_modules/@types/mocha": { "version": "10.0.6", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.6.tgz", + "integrity": "sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg==" }, "node_modules/@types/ms": { "version": "0.7.34", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" }, "node_modules/@types/node": { "version": "20.11.18", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.18.tgz", + "integrity": "sha512-ABT5VWnnYneSBcNWYSCuR05M826RoMyMSGiFivXGx6ZUIsXb9vn4643IEwkg2zbEOSgAiSogtapN2fgc4mAPlw==", "dependencies": { "undici-types": "~5.26.4" } }, "node_modules/@types/pbkdf2": { "version": "3.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==", "dependencies": { "@types/node": "*" } }, "node_modules/@types/prettier": { "version": "2.7.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", + "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==" }, "node_modules/@types/prop-types": { "version": "15.7.11", - "devOptional": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", + "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==", + "devOptional": true }, "node_modules/@types/qs": { "version": "6.9.11", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.11.tgz", + "integrity": "sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==" }, "node_modules/@types/react": { "version": "18.2.55", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.55.tgz", + "integrity": "sha512-Y2Tz5P4yz23brwm2d7jNon39qoAtMMmalOQv6+fEFt1mT+FcM3D841wDpoUvFXhaYenuROCy3FZYqdTjM7qVyA==", "devOptional": true, - "license": "MIT", "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -4105,50 +5477,58 @@ }, "node_modules/@types/react-dom": { "version": "18.2.19", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.19.tgz", + "integrity": "sha512-aZvQL6uUbIJpjZk4U8JZGbau9KDeAwMfmhyWorxgBkqDIEf6ROjRozcmPIicqsUwPUjbkDfHKgGee1Lq65APcA==", "dev": true, - "license": "MIT", "dependencies": { "@types/react": "*" } }, "node_modules/@types/scheduler": { "version": "0.16.8", - "devOptional": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", + "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==", + "devOptional": true }, "node_modules/@types/secp256k1": { "version": "4.0.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.6.tgz", + "integrity": "sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==", "dependencies": { "@types/node": "*" } }, "node_modules/@types/semver": { "version": "7.5.7", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.7.tgz", + "integrity": "sha512-/wdoPq1QqkSj9/QOeKkFquEuPzQbHTWAMPH/PaUMB+JuR31lXhlWXRZ52IpfDYVlDOUBvX09uBrPwxGT1hjNBg==", + "dev": true }, "node_modules/@types/trusted-types": { "version": "2.0.7", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==" }, "node_modules/@types/yargs": { "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", "dev": true, - "license": "MIT", "dependencies": { "@types/yargs-parser": "*" } }, "node_modules/@types/yargs-parser": { "version": "21.0.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.0.1.tgz", + "integrity": "sha512-OLvgeBv3vXlnnJGIAgCLYKjgMEU+wBGj07MQ/nxAaON+3mLzX7mJbhRYrVGiVvFiXtwFlkcBa/TtmglHy0UbzQ==", "dev": true, - "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.5.1", "@typescript-eslint/scope-manager": "7.0.1", @@ -4181,8 +5561,9 @@ }, "node_modules/@typescript-eslint/eslint-plugin/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==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -4192,8 +5573,9 @@ }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -4206,8 +5588,9 @@ }, "node_modules/@typescript-eslint/parser": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.0.1.tgz", + "integrity": "sha512-8GcRRZNzaHxKzBPU3tKtFNing571/GwPBeCvmAUw0yBtfE2XVd0zFKJIMSWkHJcPQi0ekxjIts6L/rrZq5cxGQ==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/scope-manager": "7.0.1", "@typescript-eslint/types": "7.0.1", @@ -4233,8 +5616,9 @@ }, "node_modules/@typescript-eslint/scope-manager": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.0.1.tgz", + "integrity": "sha512-v7/T7As10g3bcWOOPAcbnMDuvctHzCFYCG/8R4bK4iYzdFqsZTbXGln0cZNVcwQcwewsYU2BJLay8j0/4zOk4w==", "dev": true, - "license": "MIT", "dependencies": { "@typescript-eslint/types": "7.0.1", "@typescript-eslint/visitor-keys": "7.0.1" @@ -4249,8 +5633,9 @@ }, "node_modules/@typescript-eslint/type-utils": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.0.1.tgz", + "integrity": "sha512-YtT9UcstTG5Yqy4xtLiClm1ZpM/pWVGFnkAa90UfdkkZsR1eP2mR/1jbHeYp8Ay1l1JHPyGvoUYR6o3On5Nhmw==", "dev": true, - "license": "MIT", "dependencies": { "@typescript-eslint/typescript-estree": "7.0.1", "@typescript-eslint/utils": "7.0.1", @@ -4275,8 +5660,9 @@ }, "node_modules/@typescript-eslint/types": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.0.1.tgz", + "integrity": "sha512-uJDfmirz4FHib6ENju/7cz9SdMSkeVvJDK3VcMFvf/hAShg8C74FW+06MaQPODHfDJp/z/zHfgawIJRjlu0RLg==", "dev": true, - "license": "MIT", "engines": { "node": "^16.0.0 || >=18.0.0" }, @@ -4287,8 +5673,9 @@ }, "node_modules/@typescript-eslint/typescript-estree": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.0.1.tgz", + "integrity": "sha512-SO9wHb6ph0/FN5OJxH4MiPscGah5wjOd0RRpaLvuBv9g8565Fgu0uMySFEPqwPHiQU90yzJ2FjRYKGrAhS1xig==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/types": "7.0.1", "@typescript-eslint/visitor-keys": "7.0.1", @@ -4314,16 +5701,18 @@ }, "node_modules/@typescript-eslint/typescript-estree/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==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/@typescript-eslint/typescript-estree/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==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -4333,8 +5722,9 @@ }, "node_modules/@typescript-eslint/typescript-estree/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" }, @@ -4347,8 +5737,9 @@ }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -4361,8 +5752,9 @@ }, "node_modules/@typescript-eslint/utils": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.0.1.tgz", + "integrity": "sha512-oe4his30JgPbnv+9Vef1h48jm0S6ft4mNwi9wj7bX10joGn07QRfqIqFHoMiajrtoU88cIhXf8ahwgrcbNLgPA==", "dev": true, - "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", @@ -4385,8 +5777,9 @@ }, "node_modules/@typescript-eslint/utils/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==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -4396,8 +5789,9 @@ }, "node_modules/@typescript-eslint/utils/node_modules/semver": { "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -4410,8 +5804,9 @@ }, "node_modules/@typescript-eslint/visitor-keys": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.0.1.tgz", + "integrity": "sha512-hwAgrOyk++RTXrP4KzCg7zB2U0xt7RUU0ZdMSCsqF3eKUwkdXUMyTb0qdCuji7VIbcpG62kKTU9M1J1c9UpFBw==", "dev": true, - "license": "MIT", "dependencies": { "@typescript-eslint/types": "7.0.1", "eslint-visitor-keys": "^3.4.1" @@ -4426,37 +5821,42 @@ }, "node_modules/@ungap/structured-clone": { "version": "1.2.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true }, "node_modules/@uniswap/lib": { "version": "4.0.1-alpha", + "resolved": "https://registry.npmjs.org/@uniswap/lib/-/lib-4.0.1-alpha.tgz", + "integrity": "sha512-f6UIliwBbRsgVLxIaBANF6w09tYqc6Y/qXdsrbEmXHyFA7ILiKrIwRFXe1yOg8M3cksgVsO9N7yuL2DdCGQKBA==", "dev": true, - "license": "GPL-3.0-or-later", "engines": { "node": ">=10" } }, "node_modules/@uniswap/v2-core": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@uniswap/v2-core/-/v2-core-1.0.1.tgz", + "integrity": "sha512-MtybtkUPSyysqLY2U210NBDeCHX+ltHt3oADGdjqoThZaFRDKwM6k1Nb3F0A3hk5hwuQvytFWhrWHOEq6nVJ8Q==", "dev": true, - "license": "GPL-3.0-or-later", "engines": { "node": ">=10" } }, "node_modules/@uniswap/v3-core": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@uniswap/v3-core/-/v3-core-1.0.1.tgz", + "integrity": "sha512-7pVk4hEm00j9tc71Y9+ssYpO6ytkeI0y7WE9P6UcmNzhxPePwyAxImuhVsTqWK9YFvzgtvzJHi64pBl4jUzKMQ==", "dev": true, - "license": "BUSL-1.1", "engines": { "node": ">=10" } }, "node_modules/@uniswap/v3-periphery": { "version": "1.4.4", + "resolved": "https://registry.npmjs.org/@uniswap/v3-periphery/-/v3-periphery-1.4.4.tgz", + "integrity": "sha512-S4+m+wh8HbWSO3DKk4LwUCPZJTpCugIsHrWR86m/OrUyvSqGDTXKFfc2sMuGXCZrD1ZqO3rhQsKgdWg3Hbb2Kw==", "dev": true, - "license": "GPL-2.0-or-later", "dependencies": { "@openzeppelin/contracts": "3.4.2-solc-0.7", "@uniswap/lib": "^4.0.1-alpha", @@ -4470,13 +5870,15 @@ }, "node_modules/@uniswap/v3-periphery/node_modules/@openzeppelin/contracts": { "version": "3.4.2-solc-0.7", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-3.4.2-solc-0.7.tgz", + "integrity": "sha512-W6QmqgkADuFcTLzHL8vVoNBtkwjvQRpYIAom7KiUNoLKghyx3FgH0GBjt8NRvigV1ZmMOBllvE1By1C+bi8WpA==", + "dev": true }, "node_modules/@vitejs/plugin-react-swc": { "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.6.0.tgz", + "integrity": "sha512-XFRbsGgpGxGzEV5i5+vRiro1bwcIaZDIdBRP16qwm+jP68ue/S8FJTBEgOeojtVDYrbSua3XFp71kC8VJE6v+g==", "dev": true, - "license": "MIT", "dependencies": { "@swc/core": "^1.3.107" }, @@ -4486,7 +5888,8 @@ }, "node_modules/@vue/compiler-core": { "version": "3.4.19", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.19.tgz", + "integrity": "sha512-gj81785z0JNzRcU0Mq98E56e4ltO1yf8k5PQ+tV/7YHnbZkrM0fyFyuttnN8ngJZjbpofWE/m4qjKBiLl8Ju4w==", "dependencies": { "@babel/parser": "^7.23.9", "@vue/shared": "3.4.19", @@ -4497,7 +5900,8 @@ }, "node_modules/@vue/compiler-dom": { "version": "3.4.19", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.19.tgz", + "integrity": "sha512-vm6+cogWrshjqEHTzIDCp72DKtea8Ry/QVpQRYoyTIg9k7QZDX6D8+HGURjtmatfgM8xgCFtJJaOlCaRYRK3QA==", "dependencies": { "@vue/compiler-core": "3.4.19", "@vue/shared": "3.4.19" @@ -4505,7 +5909,8 @@ }, "node_modules/@vue/compiler-sfc": { "version": "3.4.19", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.19.tgz", + "integrity": "sha512-LQ3U4SN0DlvV0xhr1lUsgLCYlwQfUfetyPxkKYu7dkfvx7g3ojrGAkw0AERLOKYXuAGnqFsEuytkdcComei3Yg==", "dependencies": { "@babel/parser": "^7.23.9", "@vue/compiler-core": "3.4.19", @@ -4520,7 +5925,8 @@ }, "node_modules/@vue/compiler-ssr": { "version": "3.4.19", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.19.tgz", + "integrity": "sha512-P0PLKC4+u4OMJ8sinba/5Z/iDT84uMRRlrWzadgLA69opCpI1gG4N55qDSC+dedwq2fJtzmGald05LWR5TFfLw==", "dependencies": { "@vue/compiler-dom": "3.4.19", "@vue/shared": "3.4.19" @@ -4528,14 +5934,16 @@ }, "node_modules/@vue/reactivity": { "version": "3.4.19", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.19.tgz", + "integrity": "sha512-+VcwrQvLZgEclGZRHx4O2XhyEEcKaBi50WbxdVItEezUf4fqRh838Ix6amWTdX0CNb/b6t3Gkz3eOebfcSt+UA==", "dependencies": { "@vue/shared": "3.4.19" } }, "node_modules/@vue/runtime-core": { "version": "3.4.19", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.19.tgz", + "integrity": "sha512-/Z3tFwOrerJB/oyutmJGoYbuoadphDcJAd5jOuJE86THNZji9pYjZroQ2NFsZkTxOq0GJbb+s2kxTYToDiyZzw==", "dependencies": { "@vue/reactivity": "3.4.19", "@vue/shared": "3.4.19" @@ -4543,7 +5951,8 @@ }, "node_modules/@vue/runtime-dom": { "version": "3.4.19", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.19.tgz", + "integrity": "sha512-IyZzIDqfNCF0OyZOauL+F4yzjMPN2rPd8nhqPP2N1lBn3kYqJpPHHru+83Rkvo2lHz5mW+rEeIMEF9qY3PB94g==", "dependencies": { "@vue/runtime-core": "3.4.19", "@vue/shared": "3.4.19", @@ -4552,7 +5961,8 @@ }, "node_modules/@vue/server-renderer": { "version": "3.4.19", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.19.tgz", + "integrity": "sha512-eAj2p0c429RZyyhtMRnttjcSToch+kTWxFPHlzGMkR28ZbF1PDlTcmGmlDxccBuqNd9iOQ7xPRPAGgPVj+YpQw==", "dependencies": { "@vue/compiler-ssr": "3.4.19", "@vue/shared": "3.4.19" @@ -4563,11 +5973,13 @@ }, "node_modules/@vue/shared": { "version": "3.4.19", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.19.tgz", + "integrity": "sha512-/KliRRHMF6LoiThEy+4c1Z4KB/gbPrGjWwJR+crg2otgrf/egKzRaCPvJ51S5oetgsgXLfc4Rm5ZgrKHZrtMSw==" }, "node_modules/@walletconnect/core": { "version": "2.11.1", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@walletconnect/core/-/core-2.11.1.tgz", + "integrity": "sha512-T57Vd7YdbHPsy3tthBuwrhaZNafN0+PqjISFRNeJy/bsKdXxpJg2hGSARuOTpCO7V6VcaatqlaSMuG3DrnG5rA==", "dependencies": { "@walletconnect/heartbeat": "1.2.1", "@walletconnect/jsonrpc-provider": "1.0.13", @@ -4590,14 +6002,16 @@ }, "node_modules/@walletconnect/environment": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@walletconnect/environment/-/environment-1.0.1.tgz", + "integrity": "sha512-T426LLZtHj8e8rYnKfzsw1aG6+M0BT1ZxayMdv/p8yM0MU+eJDISqNY3/bccxRr4LrF9csq02Rhqt08Ibl0VRg==", "dependencies": { "tslib": "1.14.1" } }, "node_modules/@walletconnect/ethereum-provider": { "version": "2.11.1", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@walletconnect/ethereum-provider/-/ethereum-provider-2.11.1.tgz", + "integrity": "sha512-UfQH0ho24aa2M1xYmanbJv2ggQPebKmQytp2j20QEvURJ2R0v7YKWZ+0PfwOs6o6cuGw6gGxy/0WQXQRZSAsfg==", "dependencies": { "@walletconnect/jsonrpc-http-connection": "^1.0.7", "@walletconnect/jsonrpc-provider": "^1.0.13", @@ -4613,7 +6027,8 @@ }, "node_modules/@walletconnect/events": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@walletconnect/events/-/events-1.0.1.tgz", + "integrity": "sha512-NPTqaoi0oPBVNuLv7qPaJazmGHs5JGyO8eEAk5VGKmJzDR7AHzD4k6ilox5kxk1iwiOnFopBOOMLs86Oa76HpQ==", "dependencies": { "keyvaluestorage-interface": "^1.0.0", "tslib": "1.14.1" @@ -4621,7 +6036,8 @@ }, "node_modules/@walletconnect/heartbeat": { "version": "1.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@walletconnect/heartbeat/-/heartbeat-1.2.1.tgz", + "integrity": "sha512-yVzws616xsDLJxuG/28FqtZ5rzrTA4gUjdEMTbWB5Y8V1XHRmqq4efAxCw5ie7WjbXFSUyBHaWlMR+2/CpQC5Q==", "dependencies": { "@walletconnect/events": "^1.0.1", "@walletconnect/time": "^1.0.2", @@ -4630,7 +6046,8 @@ }, "node_modules/@walletconnect/jsonrpc-http-connection": { "version": "1.0.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-http-connection/-/jsonrpc-http-connection-1.0.7.tgz", + "integrity": "sha512-qlfh8fCfu8LOM9JRR9KE0s0wxP6ZG9/Jom8M0qsoIQeKF3Ni0FyV4V1qy/cc7nfI46SLQLSl4tgWSfLiE1swyQ==", "dependencies": { "@walletconnect/jsonrpc-utils": "^1.0.6", "@walletconnect/safe-json": "^1.0.1", @@ -4640,14 +6057,16 @@ }, "node_modules/@walletconnect/jsonrpc-http-connection/node_modules/cross-fetch": { "version": "3.1.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", + "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", "dependencies": { "node-fetch": "^2.6.12" } }, "node_modules/@walletconnect/jsonrpc-provider": { "version": "1.0.13", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-provider/-/jsonrpc-provider-1.0.13.tgz", + "integrity": "sha512-K73EpThqHnSR26gOyNEL+acEex3P7VWZe6KE12ZwKzAt2H4e5gldZHbjsu2QR9cLeJ8AXuO7kEMOIcRv1QEc7g==", "dependencies": { "@walletconnect/jsonrpc-utils": "^1.0.8", "@walletconnect/safe-json": "^1.0.2", @@ -4656,7 +6075,8 @@ }, "node_modules/@walletconnect/jsonrpc-types": { "version": "1.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-types/-/jsonrpc-types-1.0.3.tgz", + "integrity": "sha512-iIQ8hboBl3o5ufmJ8cuduGad0CQm3ZlsHtujv9Eu16xq89q+BG7Nh5VLxxUgmtpnrePgFkTwXirCTkwJH1v+Yw==", "dependencies": { "keyvaluestorage-interface": "^1.0.0", "tslib": "1.14.1" @@ -4664,7 +6084,8 @@ }, "node_modules/@walletconnect/jsonrpc-utils": { "version": "1.0.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-utils/-/jsonrpc-utils-1.0.8.tgz", + "integrity": "sha512-vdeb03bD8VzJUL6ZtzRYsFMq1eZQcM3EAzT0a3st59dyLfJ0wq+tKMpmGH7HlB7waD858UWgfIcudbPFsbzVdw==", "dependencies": { "@walletconnect/environment": "^1.0.1", "@walletconnect/jsonrpc-types": "^1.0.3", @@ -4673,7 +6094,8 @@ }, "node_modules/@walletconnect/jsonrpc-ws-connection": { "version": "1.0.14", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-ws-connection/-/jsonrpc-ws-connection-1.0.14.tgz", + "integrity": "sha512-Jsl6fC55AYcbkNVkwNM6Jo+ufsuCQRqViOQ8ZBPH9pRREHH9welbBiszuTLqEJiQcO/6XfFDl6bzCJIkrEi8XA==", "dependencies": { "@walletconnect/jsonrpc-utils": "^1.0.6", "@walletconnect/safe-json": "^1.0.2", @@ -4683,7 +6105,8 @@ }, "node_modules/@walletconnect/keyvaluestorage": { "version": "1.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.1.1.tgz", + "integrity": "sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA==", "dependencies": { "@walletconnect/safe-json": "^1.0.1", "idb-keyval": "^6.2.1", @@ -4700,7 +6123,8 @@ }, "node_modules/@walletconnect/logger": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@walletconnect/logger/-/logger-2.0.1.tgz", + "integrity": "sha512-SsTKdsgWm+oDTBeNE/zHxxr5eJfZmE9/5yp/Ku+zJtcTAjELb3DXueWkDXmE9h8uHIbJzIb5wj5lPdzyrjT6hQ==", "dependencies": { "pino": "7.11.0", "tslib": "1.14.1" @@ -4708,7 +6132,8 @@ }, "node_modules/@walletconnect/modal": { "version": "2.6.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@walletconnect/modal/-/modal-2.6.2.tgz", + "integrity": "sha512-eFopgKi8AjKf/0U4SemvcYw9zlLpx9njVN8sf6DAkowC2Md0gPU/UNEbH1Wwj407pEKnEds98pKWib1NN1ACoA==", "dependencies": { "@walletconnect/modal-core": "2.6.2", "@walletconnect/modal-ui": "2.6.2" @@ -4716,14 +6141,16 @@ }, "node_modules/@walletconnect/modal-core": { "version": "2.6.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@walletconnect/modal-core/-/modal-core-2.6.2.tgz", + "integrity": "sha512-cv8ibvdOJQv2B+nyxP9IIFdxvQznMz8OOr/oR/AaUZym4hjXNL/l1a2UlSQBXrVjo3xxbouMxLb3kBsHoYP2CA==", "dependencies": { "valtio": "1.11.2" } }, "node_modules/@walletconnect/modal-ui": { "version": "2.6.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@walletconnect/modal-ui/-/modal-ui-2.6.2.tgz", + "integrity": "sha512-rbdstM1HPGvr7jprQkyPggX7rP4XiCG85ZA+zWBEX0dVQg8PpAgRUqpeub4xQKDgY7pY/xLRXSiCVdWGqvG2HA==", "dependencies": { "@walletconnect/modal-core": "2.6.2", "lit": "2.8.0", @@ -4733,7 +6160,8 @@ }, "node_modules/@walletconnect/relay-api": { "version": "1.0.9", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@walletconnect/relay-api/-/relay-api-1.0.9.tgz", + "integrity": "sha512-Q3+rylJOqRkO1D9Su0DPE3mmznbAalYapJ9qmzDgK28mYF9alcP3UwG/og5V7l7CFOqzCLi7B8BvcBUrpDj0Rg==", "dependencies": { "@walletconnect/jsonrpc-types": "^1.0.2", "tslib": "1.14.1" @@ -4741,7 +6169,8 @@ }, "node_modules/@walletconnect/relay-auth": { "version": "1.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@walletconnect/relay-auth/-/relay-auth-1.0.4.tgz", + "integrity": "sha512-kKJcS6+WxYq5kshpPaxGHdwf5y98ZwbfuS4EE/NkQzqrDFm5Cj+dP8LofzWvjrrLkZq7Afy7WrQMXdLy8Sx7HQ==", "dependencies": { "@stablelib/ed25519": "^1.0.2", "@stablelib/random": "^1.0.1", @@ -4753,14 +6182,16 @@ }, "node_modules/@walletconnect/safe-json": { "version": "1.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@walletconnect/safe-json/-/safe-json-1.0.2.tgz", + "integrity": "sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==", "dependencies": { "tslib": "1.14.1" } }, "node_modules/@walletconnect/sign-client": { "version": "2.11.1", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@walletconnect/sign-client/-/sign-client-2.11.1.tgz", + "integrity": "sha512-s3oKSx6/F5X2WmkV1jfJImBFACf9Km5HpTb+n5q+mobJVpUQw/clvoVyIrNNppLhm1V1S/ylHXh0qCrDppDpCA==", "dependencies": { "@walletconnect/core": "2.11.1", "@walletconnect/events": "^1.0.1", @@ -4775,14 +6206,16 @@ }, "node_modules/@walletconnect/time": { "version": "1.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@walletconnect/time/-/time-1.0.2.tgz", + "integrity": "sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g==", "dependencies": { "tslib": "1.14.1" } }, "node_modules/@walletconnect/types": { "version": "2.11.1", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@walletconnect/types/-/types-2.11.1.tgz", + "integrity": "sha512-UbdbX+d6MOK0AXKxt5imV3KvAcLVpZUHylaRDIP5ffwVylM/p4DHnKppil1Qq5N+IGDr3RsUwLGFkKjqsQYRKw==", "dependencies": { "@walletconnect/events": "^1.0.1", "@walletconnect/heartbeat": "1.2.1", @@ -4794,7 +6227,8 @@ }, "node_modules/@walletconnect/universal-provider": { "version": "2.11.1", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@walletconnect/universal-provider/-/universal-provider-2.11.1.tgz", + "integrity": "sha512-BJvPYByIfbBYF4x8mqDV79ebQX0tD54pp8itsqrHWn0qKZeJyIH8sQ69yY0GnbJrzoFS3ZLULdC0yDxWDeuRGw==", "dependencies": { "@walletconnect/jsonrpc-http-connection": "^1.0.7", "@walletconnect/jsonrpc-provider": "1.0.13", @@ -4809,7 +6243,8 @@ }, "node_modules/@walletconnect/utils": { "version": "2.11.1", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@walletconnect/utils/-/utils-2.11.1.tgz", + "integrity": "sha512-wRFDHN86dZ05mCET1H3912odIeQa8j7cZKxl1FlWRpV2YsILj9HCYSX6Uq2brwO02Kv2vryke44G1r8XI/LViA==", "dependencies": { "@stablelib/chacha20poly1305": "1.0.1", "@stablelib/hkdf": "1.0.1", @@ -4829,14 +6264,16 @@ }, "node_modules/@walletconnect/window-getters": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@walletconnect/window-getters/-/window-getters-1.0.1.tgz", + "integrity": "sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q==", "dependencies": { "tslib": "1.14.1" } }, "node_modules/@walletconnect/window-metadata": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@walletconnect/window-metadata/-/window-metadata-1.0.1.tgz", + "integrity": "sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA==", "dependencies": { "@walletconnect/window-getters": "^1.0.1", "tslib": "1.14.1" @@ -4844,11 +6281,13 @@ }, "node_modules/abbrev": { "version": "1.0.9", - "license": "ISC" + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", + "integrity": "sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==" }, "node_modules/abitype": { "version": "0.8.11", - "license": "MIT", + "resolved": "https://registry.npmjs.org/abitype/-/abitype-0.8.11.tgz", + "integrity": "sha512-bM4v2dKvX08sZ9IU38IN5BKmN+ZkOSd2oI4a9f0ejHYZQYV6cDr7j+d95ga0z2XHG36Y4jzoG5Z7qDqxp7fi/A==", "peerDependencies": { "typescript": ">=5.0.4", "zod": "^3 >=3.19.1" @@ -4861,7 +6300,8 @@ }, "node_modules/acorn": { "version": "8.11.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "bin": { "acorn": "bin/acorn" }, @@ -4871,33 +6311,38 @@ }, "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/acorn-walk": { "version": "8.3.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.1.tgz", + "integrity": "sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==", "engines": { "node": ">=0.4.0" } }, "node_modules/adm-zip": { "version": "0.4.16", - "license": "MIT", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", + "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", "engines": { "node": ">=0.3.0" } }, "node_modules/aes-js": { "version": "4.0.0-beta.5", - "license": "MIT" + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", + "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==" }, "node_modules/agent-base": { "version": "6.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dependencies": { "debug": "4" }, @@ -4907,7 +6352,8 @@ }, "node_modules/aggregate-error": { "version": "3.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -4918,8 +6364,9 @@ }, "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": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -4933,7 +6380,8 @@ }, "node_modules/alchemy-sdk": { "version": "3.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/alchemy-sdk/-/alchemy-sdk-3.1.2.tgz", + "integrity": "sha512-xpCgQRLektp6imKdGdHyuVHvbMGpaSe22+qvg9jjGx0Wwkh0XgPzSfKwAzFDlkCGMMdazhKCsHu22XP0xh1noQ==", "dependencies": { "@ethersproject/abi": "^5.7.0", "@ethersproject/abstract-provider": "^5.7.0", @@ -4953,6 +6401,8 @@ }, "node_modules/alchemy-sdk/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", @@ -4963,7 +6413,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/abi": "^5.7.0", "@ethersproject/abstract-provider": "^5.7.0", @@ -4979,6 +6428,8 @@ }, "node_modules/alchemy-sdk/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", @@ -4989,7 +6440,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/abstract-signer": "^5.7.0", "@ethersproject/basex": "^5.7.0", @@ -5007,6 +6457,8 @@ }, "node_modules/alchemy-sdk/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", @@ -5017,7 +6469,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/abstract-signer": "^5.7.0", "@ethersproject/address": "^5.7.0", @@ -5036,6 +6487,8 @@ }, "node_modules/alchemy-sdk/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", @@ -5046,7 +6499,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/sha2": "^5.7.0" @@ -5054,6 +6506,8 @@ }, "node_modules/alchemy-sdk/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", @@ -5064,7 +6518,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/bignumber": "^5.7.0", "@ethersproject/constants": "^5.7.0", @@ -5073,6 +6526,8 @@ }, "node_modules/alchemy-sdk/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", @@ -5083,7 +6538,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/abstract-provider": "^5.7.0", "@ethersproject/abstract-signer": "^5.7.0", @@ -5104,6 +6558,8 @@ }, "node_modules/alchemy-sdk/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", @@ -5114,7 +6570,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/hash": "^5.7.0", @@ -5125,11 +6580,13 @@ }, "node_modules/alchemy-sdk/node_modules/aes-js": { "version": "3.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==" }, "node_modules/alchemy-sdk/node_modules/axios": { "version": "1.6.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", + "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", "dependencies": { "follow-redirects": "^1.15.4", "form-data": "^4.0.0", @@ -5138,7 +6595,8 @@ }, "node_modules/amdefine": { "version": "1.0.1", - "license": "BSD-3-Clause OR MIT", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==", "optional": true, "peer": true, "engines": { @@ -5147,21 +6605,24 @@ }, "node_modules/ansi-align": { "version": "3.0.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", "dependencies": { "string-width": "^4.1.0" } }, "node_modules/ansi-colors": { "version": "4.1.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "engines": { "node": ">=6" } }, "node_modules/ansi-escapes": { "version": "4.3.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dependencies": { "type-fest": "^0.21.3" }, @@ -5174,14 +6635,16 @@ }, "node_modules/ansi-regex": { "version": "5.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "engines": { "node": ">=8" } }, "node_modules/ansi-styles": { "version": "3.2.1", - "license": "MIT", + "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" }, @@ -5191,19 +6654,22 @@ }, "node_modules/antlr4": { "version": "4.13.1", + "resolved": "https://registry.npmjs.org/antlr4/-/antlr4-4.13.1.tgz", + "integrity": "sha512-kiXTspaRYvnIArgE97z5YVVf/cDVQABr3abFRR6mE7yesLMkgu4ujuyV/sgxafQ8wgve0DJQUJ38Z8tkgA2izA==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=16" } }, "node_modules/antlr4ts": { "version": "0.5.0-alpha.4", - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz", + "integrity": "sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==" }, "node_modules/anymatch": { "version": "3.1.3", - "license": "ISC", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -5214,23 +6680,27 @@ }, "node_modules/arg": { "version": "4.1.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" }, "node_modules/argparse": { "version": "2.0.1", - "license": "Python-2.0" + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "node_modules/array-back": { "version": "3.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", + "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", "engines": { "node": ">=6" } }, "node_modules/array-buffer-byte-length": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "is-array-buffer": "^3.0.1" @@ -5241,8 +6711,9 @@ }, "node_modules/array-includes": { "version": "3.1.7", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", + "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -5259,22 +6730,25 @@ }, "node_modules/array-union": { "version": "2.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "engines": { "node": ">=8" } }, "node_modules/array-uniq": { "version": "1.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", "engines": { "node": ">=0.10.0" } }, "node_modules/array.prototype.findlastindex": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", + "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -5291,8 +6765,9 @@ }, "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": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -5308,8 +6783,9 @@ }, "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": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -5325,8 +6801,9 @@ }, "node_modules/arraybuffer.prototype.slice": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", + "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", "dev": true, - "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.0", "call-bind": "^1.0.2", @@ -5345,12 +6822,14 @@ }, "node_modules/asap": { "version": "2.0.6", - "license": "MIT" + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" }, "node_modules/asn1js": { "version": "3.0.5", + "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.5.tgz", + "integrity": "sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "pvtsutils": "^1.3.2", "pvutils": "^1.1.3", @@ -5362,65 +6841,76 @@ }, "node_modules/asn1js/node_modules/tslib": { "version": "2.6.2", - "dev": true, - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/assertion-error": { "version": "1.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", "engines": { "node": "*" } }, "node_modules/ast-parents": { "version": "0.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ast-parents/-/ast-parents-0.0.1.tgz", + "integrity": "sha512-XHusKxKz3zoYk1ic8Un640joHbFMhbqneyoZfoKnEGtf2ey9Uh/IdpcQplODdO/kENaMIWsD0nJm4+wX3UNLHA==", + "dev": true }, "node_modules/astral-regex": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "engines": { "node": ">=8" } }, "node_modules/async": { "version": "1.5.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==" }, "node_modules/async-mutex": { "version": "0.2.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.2.6.tgz", + "integrity": "sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw==", "dependencies": { "tslib": "^2.0.0" } }, "node_modules/async-mutex/node_modules/tslib": { "version": "2.6.2", - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/asynckit": { "version": "0.4.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "node_modules/at-least-node": { "version": "1.0.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", "engines": { "node": ">= 4.0.0" } }, "node_modules/atomic-sleep": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", + "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", "engines": { "node": ">=8.0.0" } }, "node_modules/available-typed-arrays": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -5430,24 +6920,29 @@ }, "node_modules/axios": { "version": "0.21.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", "dependencies": { "follow-redirects": "^1.14.0" } }, "node_modules/balanced-match": { "version": "1.0.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/base-x": { "version": "3.0.9", - "license": "MIT", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", + "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", "dependencies": { "safe-buffer": "^5.0.1" } }, "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", @@ -5461,36 +6956,41 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "node_modules/base64-sol": { "version": "1.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/base64-sol/-/base64-sol-1.0.1.tgz", + "integrity": "sha512-ld3cCNMeXt4uJXmLZBHFGMvVpK9KsLVEhPpFRXnvSVAqABKbuNZg/+dsq3NuM+wxFLb/UrVkz7m1ciWmkMfTbg==", + "dev": true }, "node_modules/bech32": { "version": "1.1.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" }, "node_modules/binary-extensions": { "version": "2.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "engines": { "node": ">=8" } }, "node_modules/blakejs": { "version": "1.2.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", + "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==" }, "node_modules/bn.js": { "version": "5.2.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" }, "node_modules/boxen": { "version": "5.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", + "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", "dependencies": { "ansi-align": "^3.0.0", "camelcase": "^6.2.0", @@ -5510,7 +7010,8 @@ }, "node_modules/boxen/node_modules/ansi-styles": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { "color-convert": "^2.0.1" }, @@ -5523,7 +7024,8 @@ }, "node_modules/boxen/node_modules/chalk": { "version": "4.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -5537,7 +7039,8 @@ }, "node_modules/boxen/node_modules/color-convert": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { "color-name": "~1.1.4" }, @@ -5547,18 +7050,21 @@ }, "node_modules/boxen/node_modules/color-name": { "version": "1.1.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/boxen/node_modules/has-flag": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "engines": { "node": ">=8" } }, "node_modules/boxen/node_modules/supports-color": { "version": "7.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dependencies": { "has-flag": "^4.0.0" }, @@ -5568,7 +7074,8 @@ }, "node_modules/boxen/node_modules/type-fest": { "version": "0.20.2", - "license": "(MIT OR CC0-1.0)", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "engines": { "node": ">=10" }, @@ -5578,7 +7085,8 @@ }, "node_modules/brace-expansion": { "version": "1.1.11", - "license": "MIT", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -5586,7 +7094,8 @@ }, "node_modules/braces": { "version": "3.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dependencies": { "fill-range": "^7.0.1" }, @@ -5596,15 +7105,18 @@ }, "node_modules/brorand": { "version": "1.1.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" }, "node_modules/browser-stdout": { "version": "1.3.1", - "license": "ISC" + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==" }, "node_modules/browserify-aes": { "version": "1.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "dependencies": { "buffer-xor": "^1.0.3", "cipher-base": "^1.0.0", @@ -5616,14 +7128,16 @@ }, "node_modules/bs58": { "version": "4.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", "dependencies": { "base-x": "^3.0.2" } }, "node_modules/bs58check": { "version": "2.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", "dependencies": { "bs58": "^4.0.0", "create-hash": "^1.1.0", @@ -5632,6 +7146,8 @@ }, "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", @@ -5646,7 +7162,6 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" @@ -5654,16 +7169,19 @@ }, "node_modules/buffer-from": { "version": "1.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, "node_modules/buffer-xor": { "version": "1.0.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" }, "node_modules/bufferutil": { "version": "4.0.8", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.8.tgz", + "integrity": "sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==", "hasInstallScript": true, - "license": "MIT", "dependencies": { "node-gyp-build": "^4.3.0" }, @@ -5673,23 +7191,26 @@ }, "node_modules/bytes": { "version": "3.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "engines": { "node": ">= 0.8" } }, "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", "engines": { "node": ">=14.16" } }, "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", @@ -5705,7 +7226,8 @@ }, "node_modules/call-bind": { "version": "1.0.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "dependencies": { "function-bind": "^1.1.2", "get-intrinsic": "^1.2.1", @@ -5717,15 +7239,17 @@ }, "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/camelcase": { "version": "6.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "engines": { "node": ">=10" }, @@ -5735,12 +7259,14 @@ }, "node_modules/caseless": { "version": "0.12.0", - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" }, "node_modules/cbor": { "version": "9.0.2", + "resolved": "https://registry.npmjs.org/cbor/-/cbor-9.0.2.tgz", + "integrity": "sha512-JPypkxsB10s9QOWwa6zwPzqE1Md3vqpPc+cai4sAecuCsRyAtAl/pMyhPlMbT/xtPnm2dznJZYRLui57qiRhaQ==", "dev": true, - "license": "MIT", "dependencies": { "nofilter": "^3.1.0" }, @@ -5750,9 +7276,10 @@ }, "node_modules/cbor-extract": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cbor-extract/-/cbor-extract-2.2.0.tgz", + "integrity": "sha512-Ig1zM66BjLfTXpNgKpvBePq271BPOvu8MR0Jl080yG7Jsl+wAZunfrwiwA+9ruzm/WEdIV5QF/bjDZTqyAIVHA==", "dev": true, "hasInstallScript": true, - "license": "MIT", "optional": true, "dependencies": { "node-gyp-build-optional-packages": "5.1.1" @@ -5771,15 +7298,17 @@ }, "node_modules/cbor-x": { "version": "1.5.7", + "resolved": "https://registry.npmjs.org/cbor-x/-/cbor-x-1.5.7.tgz", + "integrity": "sha512-i6JEJLOXTK++wCpBI1EZUCE5tXxkA1N7Y0NZbPJ0XBcz0vRQlWESOhxb6EDST7SgP2uUf81UnB2Qv3VcxKvjoA==", "dev": true, - "license": "MIT", "optionalDependencies": { "cbor-extract": "^2.2.0" } }, "node_modules/chai": { "version": "4.4.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.0.tgz", + "integrity": "sha512-x9cHNq1uvkCdU+5xTkNh5WtgD4e4yDFCsp9jVc7N7qVeKeftv3gO/ZrviX5d+3ZfxdYnZXZYujjRInu1RogU6A==", "dependencies": { "assertion-error": "^1.1.0", "check-error": "^1.0.3", @@ -5795,7 +7324,8 @@ }, "node_modules/chai-as-promised": { "version": "7.1.1", - "license": "WTFPL", + "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", + "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", "dependencies": { "check-error": "^1.0.2" }, @@ -5805,7 +7335,8 @@ }, "node_modules/chalk": { "version": "2.4.2", - "license": "MIT", + "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", @@ -5817,14 +7348,16 @@ }, "node_modules/charenc": { "version": "0.0.2", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", "engines": { "node": "*" } }, "node_modules/check-error": { "version": "1.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", "dependencies": { "get-func-name": "^2.0.2" }, @@ -5834,13 +7367,14 @@ }, "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", @@ -5859,11 +7393,13 @@ }, "node_modules/ci-info": { "version": "2.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" }, "node_modules/cipher-base": { "version": "1.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", "dependencies": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -5871,21 +7407,24 @@ }, "node_modules/citty": { "version": "0.1.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.6.tgz", + "integrity": "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==", "dependencies": { "consola": "^3.2.3" } }, "node_modules/clean-stack": { "version": "2.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "engines": { "node": ">=6" } }, "node_modules/cli-boxes": { "version": "2.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", "engines": { "node": ">=6" }, @@ -5895,7 +7434,8 @@ }, "node_modules/cli-table3": { "version": "0.5.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz", + "integrity": "sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==", "dependencies": { "object-assign": "^4.1.0", "string-width": "^2.1.1" @@ -5909,21 +7449,24 @@ }, "node_modules/cli-table3/node_modules/ansi-regex": { "version": "3.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", "engines": { "node": ">=4" } }, "node_modules/cli-table3/node_modules/is-fullwidth-code-point": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", "engines": { "node": ">=4" } }, "node_modules/cli-table3/node_modules/string-width": { "version": "2.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dependencies": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" @@ -5934,7 +7477,8 @@ }, "node_modules/cli-table3/node_modules/strip-ansi": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", "dependencies": { "ansi-regex": "^3.0.0" }, @@ -5944,7 +7488,8 @@ }, "node_modules/clipboardy": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-4.0.0.tgz", + "integrity": "sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w==", "dependencies": { "execa": "^8.0.1", "is-wsl": "^3.1.0", @@ -5959,7 +7504,8 @@ }, "node_modules/cliui": { "version": "7.0.4", - "license": "ISC", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -5968,39 +7514,45 @@ }, "node_modules/clsx": { "version": "1.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", + "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", "engines": { "node": ">=6" } }, "node_modules/cluster-key-slot": { "version": "1.1.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", + "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==", "engines": { "node": ">=0.10.0" } }, "node_modules/color-convert": { "version": "1.9.3", - "license": "MIT", + "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/color-name": { "version": "1.1.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, "node_modules/colors": { "version": "1.4.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", "engines": { "node": ">=0.1.90" } }, "node_modules/combined-stream": { "version": "1.0.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dependencies": { "delayed-stream": "~1.0.0" }, @@ -6010,11 +7562,13 @@ }, "node_modules/command-exists": { "version": "1.2.9", - "license": "MIT" + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==" }, "node_modules/command-line-args": { "version": "5.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", + "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", "dependencies": { "array-back": "^3.1.0", "find-replace": "^3.0.0", @@ -6027,7 +7581,8 @@ }, "node_modules/command-line-usage": { "version": "6.1.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.3.tgz", + "integrity": "sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==", "dependencies": { "array-back": "^4.0.2", "chalk": "^2.4.2", @@ -6040,32 +7595,37 @@ }, "node_modules/command-line-usage/node_modules/array-back": { "version": "4.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", "engines": { "node": ">=8" } }, "node_modules/command-line-usage/node_modules/typical": { "version": "5.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", "engines": { "node": ">=8" } }, "node_modules/commander": { "version": "3.0.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", + "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==" }, "node_modules/concat-map": { "version": "0.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "node_modules/concat-stream": { "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "engines": [ "node >= 0.8" ], - "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "inherits": "^2.0.3", @@ -6075,11 +7635,13 @@ }, "node_modules/concat-stream/node_modules/isarray": { "version": "1.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" }, "node_modules/concat-stream/node_modules/readable-stream": { "version": "2.3.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -6092,15 +7654,17 @@ }, "node_modules/concat-stream/node_modules/string_decoder": { "version": "1.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dependencies": { "safe-buffer": "~5.1.0" } }, "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": { "ini": "^1.3.4", "proto-list": "~1.2.1" @@ -6108,30 +7672,35 @@ }, "node_modules/consola": { "version": "3.2.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.2.3.tgz", + "integrity": "sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==", "engines": { "node": "^14.18.0 || >=16.10.0" } }, "node_modules/cookie": { "version": "0.4.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", "engines": { "node": ">= 0.6" } }, "node_modules/cookie-es": { "version": "1.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-1.0.0.tgz", + "integrity": "sha512-mWYvfOLrfEc996hlKcdABeIiPHUPC6DM2QYZdGGOvhOTbA3tjm2eBwqlJpoFdjC89NI4Qt6h0Pu06Mp+1Pj5OQ==" }, "node_modules/core-util-is": { "version": "1.0.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, "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==", "dev": true, - "license": "MIT", "dependencies": { "import-fresh": "^3.3.0", "js-yaml": "^4.1.0", @@ -6155,7 +7724,8 @@ }, "node_modules/crc-32": { "version": "1.2.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", "bin": { "crc32": "bin/crc32.njs" }, @@ -6165,7 +7735,8 @@ }, "node_modules/create-hash": { "version": "1.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "dependencies": { "cipher-base": "^1.0.1", "inherits": "^2.0.1", @@ -6176,7 +7747,8 @@ }, "node_modules/create-hmac": { "version": "1.1.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "dependencies": { "cipher-base": "^1.0.3", "create-hash": "^1.1.0", @@ -6188,19 +7760,22 @@ }, "node_modules/create-require": { "version": "1.1.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" }, "node_modules/cross-fetch": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", + "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", "dev": true, - "license": "MIT", "dependencies": { "node-fetch": "^2.6.12" } }, "node_modules/cross-spawn": { "version": "7.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -6212,22 +7787,26 @@ }, "node_modules/crossws": { "version": "0.1.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/crossws/-/crossws-0.1.1.tgz", + "integrity": "sha512-c9c/o7bS3OjsdpSkvexpka0JNlesBF2JU9B2V1yNsYGwRbAafxhJQ7VI9b48D5bpONz/oxbPGMzBojy9sXoQIQ==" }, "node_modules/crypt": { "version": "0.0.2", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", "engines": { "node": "*" } }, "node_modules/csstype": { "version": "3.1.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, "node_modules/d": { "version": "1.0.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", "dependencies": { "es5-ext": "^0.10.50", "type": "^1.0.1" @@ -6235,14 +7814,18 @@ }, "node_modules/dayjs": { "version": "1.11.10", - "license": "MIT" + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", + "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==" }, "node_modules/death": { - "version": "1.1.0" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/death/-/death-1.1.0.tgz", + "integrity": "sha512-vsV6S4KVHvTGxbEcij7hkWRv0It+sGGWVOM67dQde/o5Xjnr+KmLjxWJii2uEObIrt1CcM9w0Yaovx+iOlIL+w==" }, "node_modules/debug": { "version": "4.3.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dependencies": { "ms": "2.1.2" }, @@ -6257,7 +7840,8 @@ }, "node_modules/decamelize": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", "engines": { "node": ">=10" }, @@ -6267,15 +7851,17 @@ }, "node_modules/decode-uri-component": { "version": "0.2.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", "engines": { "node": ">=0.10" } }, "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==", "dev": true, - "license": "MIT", "dependencies": { "mimic-response": "^3.1.0" }, @@ -6288,8 +7874,9 @@ }, "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==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -6299,7 +7886,8 @@ }, "node_modules/deep-eql": { "version": "4.1.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", "dependencies": { "type-detect": "^4.0.0" }, @@ -6309,26 +7897,30 @@ }, "node_modules/deep-extend": { "version": "0.6.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "engines": { "node": ">=4.0.0" } }, "node_modules/deep-is": { "version": "0.1.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" }, "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": ">=10" } }, "node_modules/define-data-property": { "version": "1.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", "dependencies": { "get-intrinsic": "^1.2.1", "gopd": "^1.0.1", @@ -6340,8 +7932,9 @@ }, "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==", "dev": true, - "license": "MIT", "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", @@ -6356,41 +7949,48 @@ }, "node_modules/defu": { "version": "6.1.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", + "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==" }, "node_modules/delayed-stream": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "engines": { "node": ">=0.4.0" } }, "node_modules/denque": { "version": "2.1.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", + "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", "engines": { "node": ">=0.10" } }, "node_modules/depd": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "engines": { "node": ">= 0.8" } }, "node_modules/destr": { "version": "2.0.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.2.tgz", + "integrity": "sha512-65AlobnZMiCET00KaFFjUefxDX0khFA/E4myqZ7a6Sq1yZtR8+FVIvilVX66vF2uobSumxooYZChiRPCKNqhmg==" }, "node_modules/detect-browser": { "version": "5.3.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/detect-browser/-/detect-browser-5.3.0.tgz", + "integrity": "sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==" }, "node_modules/detect-libc": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", + "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", "dev": true, - "license": "Apache-2.0", "optional": true, "engines": { "node": ">=8" @@ -6398,24 +7998,32 @@ }, "node_modules/diff": { "version": "5.0.0", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", "engines": { "node": ">=0.3.1" } }, "node_modules/difflib": { "version": "0.2.4", + "resolved": "https://registry.npmjs.org/difflib/-/difflib-0.2.4.tgz", + "integrity": "sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w==", "dependencies": { "heap": ">= 0.2.0" + }, + "engines": { + "node": "*" } }, "node_modules/dijkstrajs": { "version": "1.0.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.3.tgz", + "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==" }, "node_modules/dir-glob": { "version": "3.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dependencies": { "path-type": "^4.0.0" }, @@ -6425,8 +8033,9 @@ }, "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": { "esutils": "^2.0.2" }, @@ -6436,7 +8045,8 @@ }, "node_modules/dotenv": { "version": "16.4.4", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.4.tgz", + "integrity": "sha512-XvPXc8XAQThSjAbY6cQ/9PcBXmFoWuw1sQ3b8HqUCR6ziGXjkTi//kB9SWa2UwqlgdAIuRqAa/9hVljzPehbYg==", "engines": { "node": ">=12" }, @@ -6446,7 +8056,8 @@ }, "node_modules/duplexify": { "version": "4.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz", + "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==", "dependencies": { "end-of-stream": "^1.4.1", "inherits": "^2.0.3", @@ -6462,7 +8073,8 @@ }, "node_modules/elliptic": { "version": "6.5.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", "dependencies": { "bn.js": "^4.11.9", "brorand": "^1.1.0", @@ -6475,26 +8087,31 @@ }, "node_modules/elliptic/node_modules/bn.js": { "version": "4.12.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" }, "node_modules/emoji-regex": { "version": "8.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/encode-utf8": { "version": "1.0.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", + "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==" }, "node_modules/end-of-stream": { "version": "1.4.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dependencies": { "once": "^1.4.0" } }, "node_modules/enquirer": { "version": "2.4.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", + "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", "dependencies": { "ansi-colors": "^4.1.1", "strip-ansi": "^6.0.1" @@ -6505,7 +8122,8 @@ }, "node_modules/entities": { "version": "4.5.0", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "engines": { "node": ">=0.12" }, @@ -6515,23 +8133,26 @@ }, "node_modules/env-paths": { "version": "2.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "engines": { "node": ">=6" } }, "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": { "is-arrayish": "^0.2.1" } }, "node_modules/es-abstract": { "version": "1.22.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", + "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", "dev": true, - "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.0", "arraybuffer.prototype.slice": "^1.0.2", @@ -6582,8 +8203,9 @@ }, "node_modules/es-set-tostringtag": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", "dev": true, - "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.2", "has-tostringtag": "^1.0.0", @@ -6595,16 +8217,18 @@ }, "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", "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==", "dev": true, - "license": "MIT", "dependencies": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -6619,8 +8243,9 @@ }, "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", @@ -6633,7 +8258,8 @@ }, "node_modules/es6-iterator": { "version": "2.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", "dependencies": { "d": "1", "es5-ext": "^0.10.35", @@ -6642,7 +8268,8 @@ }, "node_modules/es6-symbol": { "version": "3.1.3", - "license": "ISC", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", "dependencies": { "d": "^1.0.1", "ext": "^1.1.2" @@ -6650,9 +8277,10 @@ }, "node_modules/esbuild": { "version": "0.19.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", + "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", "dev": true, "hasInstallScript": true, - "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -6687,21 +8315,24 @@ }, "node_modules/escalade": { "version": "3.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "engines": { "node": ">=6" } }, "node_modules/escape-string-regexp": { "version": "1.0.5", - "license": "MIT", + "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/escodegen": { "version": "1.8.1", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", + "integrity": "sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A==", "dependencies": { "esprima": "^2.7.1", "estraverse": "^1.9.1", @@ -6721,13 +8352,16 @@ }, "node_modules/escodegen/node_modules/estraverse": { "version": "1.9.3", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", + "integrity": "sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA==", "engines": { "node": ">=0.10.0" } }, "node_modules/escodegen/node_modules/levn": { "version": "0.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", "dependencies": { "prelude-ls": "~1.1.2", "type-check": "~0.3.2" @@ -6738,7 +8372,8 @@ }, "node_modules/escodegen/node_modules/optionator": { "version": "0.8.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", "dependencies": { "deep-is": "~0.1.3", "fast-levenshtein": "~2.0.6", @@ -6753,12 +8388,16 @@ }, "node_modules/escodegen/node_modules/prelude-ls": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", "engines": { "node": ">= 0.8.0" } }, "node_modules/escodegen/node_modules/source-map": { "version": "0.2.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", + "integrity": "sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA==", "optional": true, "peer": true, "dependencies": { @@ -6770,7 +8409,8 @@ }, "node_modules/escodegen/node_modules/type-check": { "version": "0.3.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", "dependencies": { "prelude-ls": "~1.1.2" }, @@ -6780,8 +8420,9 @@ }, "node_modules/eslint": { "version": "8.56.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", "dev": true, - "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -6834,8 +8475,9 @@ }, "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" }, @@ -6845,8 +8487,9 @@ }, "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": { "debug": "^3.2.7", "is-core-module": "^2.13.0", @@ -6855,16 +8498,18 @@ }, "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": { "ms": "^2.1.1" } }, "node_modules/eslint-import-resolver-node/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": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -6879,8 +8524,9 @@ }, "node_modules/eslint-module-utils": { "version": "2.8.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", + "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", "dev": true, - "license": "MIT", "dependencies": { "debug": "^3.2.7" }, @@ -6895,16 +8541,18 @@ }, "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": { "ms": "^2.1.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==", "dev": true, - "license": "MIT", "dependencies": { "array-includes": "^3.1.7", "array.prototype.findlastindex": "^1.2.3", @@ -6933,16 +8581,18 @@ }, "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": { "ms": "^2.1.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==", "dev": true, - "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -6952,16 +8602,18 @@ }, "node_modules/eslint-plugin-no-only-tests": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-no-only-tests/-/eslint-plugin-no-only-tests-3.1.0.tgz", + "integrity": "sha512-Lf4YW/bL6Un1R6A76pRZyE1dl1vr31G/ev8UzIc/geCgFWyrKil8hVjYqWVKGB/UIGmb6Slzs9T0wNezdSVegw==", "dev": true, - "license": "MIT", "engines": { "node": ">=5.0.0" } }, "node_modules/eslint-plugin-prettier": { "version": "5.1.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz", + "integrity": "sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==", "dev": true, - "license": "MIT", "dependencies": { "prettier-linter-helpers": "^1.0.0", "synckit": "^0.8.6" @@ -6989,8 +8641,9 @@ }, "node_modules/eslint-plugin-react-hooks": { "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -7000,16 +8653,18 @@ }, "node_modules/eslint-plugin-react-refresh": { "version": "0.4.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.5.tgz", + "integrity": "sha512-D53FYKJa+fDmZMtriODxvhwrO+IOqrxoEo21gMA0sjHdU6dPVH4OhyFip9ypl8HOF5RV5KdTo+rBQLvnY2cO8w==", "dev": true, - "license": "MIT", "peerDependencies": { "eslint": ">=7" } }, "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": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -7023,8 +8678,9 @@ }, "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": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -7034,8 +8690,9 @@ }, "node_modules/eslint/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==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -7048,8 +8705,9 @@ }, "node_modules/eslint/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -7063,8 +8721,9 @@ }, "node_modules/eslint/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==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -7074,13 +8733,15 @@ }, "node_modules/eslint/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/eslint/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" }, @@ -7090,8 +8751,9 @@ }, "node_modules/eslint/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": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -7105,8 +8767,9 @@ }, "node_modules/eslint/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": { "is-glob": "^4.0.3" }, @@ -7116,16 +8779,18 @@ }, "node_modules/eslint/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==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/eslint/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" }, @@ -7138,8 +8803,9 @@ }, "node_modules/eslint/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": { "yocto-queue": "^0.1.0" }, @@ -7152,8 +8818,9 @@ }, "node_modules/eslint/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-limit": "^3.0.2" }, @@ -7166,16 +8833,18 @@ }, "node_modules/eslint/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, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/eslint/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" }, @@ -7185,7 +8854,8 @@ }, "node_modules/esniff": { "version": "2.0.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", + "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", "dependencies": { "d": "^1.0.1", "es5-ext": "^0.10.62", @@ -7198,12 +8868,14 @@ }, "node_modules/esniff/node_modules/type": { "version": "2.7.2", - "license": "ISC" + "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" }, "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", @@ -7218,7 +8890,8 @@ }, "node_modules/esprima": { "version": "2.7.3", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -7229,8 +8902,9 @@ }, "node_modules/esquery": { "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" }, @@ -7240,8 +8914,9 @@ }, "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": { "estraverse": "^5.2.0" }, @@ -7251,26 +8926,30 @@ }, "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": ">=4.0" } }, "node_modules/estree-walker": { "version": "2.0.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" }, "node_modules/esutils": { "version": "2.0.3", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "engines": { "node": ">=0.10.0" } }, "node_modules/eth-block-tracker": { "version": "7.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/eth-block-tracker/-/eth-block-tracker-7.1.0.tgz", + "integrity": "sha512-8YdplnuE1IK4xfqpf4iU7oBxnOYAc35934o083G8ao+8WM8QQtt/mVlAY6yIAdY1eMeLqg4Z//PZjJGmWGPMRg==", "dependencies": { "@metamask/eth-json-rpc-provider": "^1.0.0", "@metamask/safe-event-emitter": "^3.0.0", @@ -7284,14 +8963,16 @@ }, "node_modules/eth-block-tracker/node_modules/pify": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "engines": { "node": ">=4" } }, "node_modules/eth-gas-reporter": { "version": "0.2.27", - "license": "MIT", + "resolved": "https://registry.npmjs.org/eth-gas-reporter/-/eth-gas-reporter-0.2.27.tgz", + "integrity": "sha512-femhvoAM7wL0GcI8ozTdxfuBtBFJ9qsyIAsmKVjlWAHUbdnnXHt+lKzz/kmldM5lA9jLuNHGwuIxorNpLbR1Zw==", "dependencies": { "@solidity-parser/parser": "^0.14.0", "axios": "^1.5.1", @@ -7318,6 +8999,8 @@ }, "node_modules/eth-gas-reporter/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", @@ -7328,7 +9011,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/abi": "^5.7.0", "@ethersproject/abstract-provider": "^5.7.0", @@ -7344,6 +9026,8 @@ }, "node_modules/eth-gas-reporter/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", @@ -7354,7 +9038,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/abstract-signer": "^5.7.0", "@ethersproject/basex": "^5.7.0", @@ -7372,6 +9055,8 @@ }, "node_modules/eth-gas-reporter/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", @@ -7382,7 +9067,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/abstract-signer": "^5.7.0", "@ethersproject/address": "^5.7.0", @@ -7401,6 +9085,8 @@ }, "node_modules/eth-gas-reporter/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", @@ -7411,7 +9097,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/sha2": "^5.7.0" @@ -7419,6 +9104,8 @@ }, "node_modules/eth-gas-reporter/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", @@ -7429,7 +9116,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/bignumber": "^5.7.0", "@ethersproject/bytes": "^5.7.0", @@ -7441,6 +9127,8 @@ }, "node_modules/eth-gas-reporter/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", @@ -7451,7 +9139,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/bignumber": "^5.7.0", "@ethersproject/constants": "^5.7.0", @@ -7460,6 +9147,8 @@ }, "node_modules/eth-gas-reporter/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", @@ -7470,7 +9159,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/abstract-provider": "^5.7.0", "@ethersproject/abstract-signer": "^5.7.0", @@ -7491,6 +9179,8 @@ }, "node_modules/eth-gas-reporter/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", @@ -7501,7 +9191,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/hash": "^5.7.0", @@ -7512,11 +9201,13 @@ }, "node_modules/eth-gas-reporter/node_modules/aes-js": { "version": "3.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==" }, "node_modules/eth-gas-reporter/node_modules/axios": { "version": "1.6.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.5.tgz", + "integrity": "sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg==", "dependencies": { "follow-redirects": "^1.15.4", "form-data": "^4.0.0", @@ -7525,6 +9216,8 @@ }, "node_modules/eth-gas-reporter/node_modules/ethers": { "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", "funding": [ { "type": "individual", @@ -7535,7 +9228,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/abi": "5.7.0", "@ethersproject/abstract-provider": "5.7.0", @@ -7571,7 +9263,8 @@ }, "node_modules/eth-json-rpc-filters": { "version": "6.0.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/eth-json-rpc-filters/-/eth-json-rpc-filters-6.0.1.tgz", + "integrity": "sha512-ITJTvqoCw6OVMLs7pI8f4gG92n/St6x80ACtHodeS+IXmO0w+t1T5OOzfSt7KLSMLRkVUoexV7tztLgDxg+iig==", "dependencies": { "@metamask/safe-event-emitter": "^3.0.0", "async-mutex": "^0.2.6", @@ -7585,7 +9278,8 @@ }, "node_modules/eth-json-rpc-filters/node_modules/pify": { "version": "5.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", + "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", "engines": { "node": ">=10" }, @@ -7595,7 +9289,8 @@ }, "node_modules/eth-query": { "version": "2.1.2", - "license": "ISC", + "resolved": "https://registry.npmjs.org/eth-query/-/eth-query-2.1.2.tgz", + "integrity": "sha512-srES0ZcvwkR/wd5OQBRA1bIJMww1skfGS0s8wlwK3/oNP4+wnds60krvu5R1QbpRQjMmpG5OMIWro5s7gvDPsA==", "dependencies": { "json-rpc-random-id": "^1.0.0", "xtend": "^4.0.1" @@ -7603,21 +9298,24 @@ }, "node_modules/eth-rpc-errors": { "version": "4.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/eth-rpc-errors/-/eth-rpc-errors-4.0.3.tgz", + "integrity": "sha512-Z3ymjopaoft7JDoxZcEb3pwdGh7yiYMhOwm2doUt6ASXlMavpNlK6Cre0+IMl2VSGyEU9rkiperQhp5iRxn5Pg==", "dependencies": { "fast-safe-stringify": "^2.0.6" } }, "node_modules/ethereum-bloom-filters": { "version": "1.0.10", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz", + "integrity": "sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==", "dependencies": { "js-sha3": "^0.8.0" } }, "node_modules/ethereum-cryptography": { "version": "1.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz", + "integrity": "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==", "dependencies": { "@noble/hashes": "1.2.0", "@noble/secp256k1": "1.7.1", @@ -7627,7 +9325,8 @@ }, "node_modules/ethereumjs-abi": { "version": "0.6.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz", + "integrity": "sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==", "dependencies": { "bn.js": "^4.11.8", "ethereumjs-util": "^6.0.0" @@ -7635,11 +9334,13 @@ }, "node_modules/ethereumjs-abi/node_modules/bn.js": { "version": "4.12.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" }, "node_modules/ethereumjs-util": { "version": "6.2.1", - "license": "MPL-2.0", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", "dependencies": { "@types/bn.js": "^4.11.3", "bn.js": "^4.11.0", @@ -7652,18 +9353,21 @@ }, "node_modules/ethereumjs-util/node_modules/@types/bn.js": { "version": "4.11.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", "dependencies": { "@types/node": "*" } }, "node_modules/ethereumjs-util/node_modules/bn.js": { "version": "4.12.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" }, "node_modules/ethereumjs-util/node_modules/ethereum-cryptography": { "version": "0.1.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", "dependencies": { "@types/pbkdf2": "^3.0.0", "@types/secp256k1": "^4.0.1", @@ -7684,6 +9388,8 @@ }, "node_modules/ethers": { "version": "5.4.0", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.4.0.tgz", + "integrity": "sha512-hqN1x0CV8VMpQ25WnNEjaMqtB3nA4DRAb2FSmmNaUbD1dF6kWbHs8YaXbVvD37FCg3GTEyc4rV9Pxafk1ByHKw==", "funding": [ { "type": "individual", @@ -7694,7 +9400,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "peer": true, "dependencies": { "@ethersproject/abi": "5.4.0", @@ -7731,6 +9436,8 @@ }, "node_modules/ethers/node_modules/@ethersproject/abi": { "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.4.0.tgz", + "integrity": "sha512-9gU2H+/yK1j2eVMdzm6xvHSnMxk8waIHQGYCZg5uvAyH0rsAzxkModzBSpbAkAuhKFEovC2S9hM4nPuLym8IZw==", "funding": [ { "type": "individual", @@ -7741,7 +9448,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "peer": true, "dependencies": { "@ethersproject/address": "^5.4.0", @@ -7757,6 +9463,8 @@ }, "node_modules/ethers/node_modules/@ethersproject/abstract-provider": { "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.4.0.tgz", + "integrity": "sha512-vPBR7HKUBY0lpdllIn7tLIzNN7DrVnhCLKSzY0l8WAwxz686m/aL7ASDzrVxV93GJtIub6N2t4dfZ29CkPOxgA==", "funding": [ { "type": "individual", @@ -7767,7 +9475,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "peer": true, "dependencies": { "@ethersproject/bignumber": "^5.4.0", @@ -7781,6 +9488,8 @@ }, "node_modules/ethers/node_modules/@ethersproject/abstract-signer": { "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.4.0.tgz", + "integrity": "sha512-AieQAzt05HJZS2bMofpuxMEp81AHufA5D6M4ScKwtolj041nrfIbIi8ciNW7+F59VYxXq+V4c3d568Q6l2m8ew==", "funding": [ { "type": "individual", @@ -7791,7 +9500,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "peer": true, "dependencies": { "@ethersproject/abstract-provider": "^5.4.0", @@ -7803,6 +9511,8 @@ }, "node_modules/ethers/node_modules/@ethersproject/address": { "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.4.0.tgz", + "integrity": "sha512-SD0VgOEkcACEG/C6xavlU1Hy3m5DGSXW3CUHkaaEHbAPPsgi0coP5oNPsxau8eTlZOk/bpa/hKeCNoK5IzVI2Q==", "funding": [ { "type": "individual", @@ -7813,7 +9523,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "peer": true, "dependencies": { "@ethersproject/bignumber": "^5.4.0", @@ -7825,6 +9534,8 @@ }, "node_modules/ethers/node_modules/@ethersproject/base64": { "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.4.0.tgz", + "integrity": "sha512-CjQw6E17QDSSC5jiM9YpF7N1aSCHmYGMt9bWD8PWv6YPMxjsys2/Q8xLrROKI3IWJ7sFfZ8B3flKDTM5wlWuZQ==", "funding": [ { "type": "individual", @@ -7835,7 +9546,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "peer": true, "dependencies": { "@ethersproject/bytes": "^5.4.0" @@ -7843,6 +9553,8 @@ }, "node_modules/ethers/node_modules/@ethersproject/basex": { "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.4.0.tgz", + "integrity": "sha512-J07+QCVJ7np2bcpxydFVf/CuYo9mZ7T73Pe7KQY4c1lRlrixMeblauMxHXD0MPwFmUHZIILDNViVkykFBZylbg==", "funding": [ { "type": "individual", @@ -7853,7 +9565,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "peer": true, "dependencies": { "@ethersproject/bytes": "^5.4.0", @@ -7862,6 +9573,8 @@ }, "node_modules/ethers/node_modules/@ethersproject/bignumber": { "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.4.0.tgz", + "integrity": "sha512-OXUu9f9hO3vGRIPxU40cignXZVaYyfx6j9NNMjebKdnaCL3anCLSSy8/b8d03vY6dh7duCC0kW72GEC4tZer2w==", "funding": [ { "type": "individual", @@ -7872,7 +9585,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "peer": true, "dependencies": { "@ethersproject/bytes": "^5.4.0", @@ -7882,6 +9594,8 @@ }, "node_modules/ethers/node_modules/@ethersproject/bytes": { "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.4.0.tgz", + "integrity": "sha512-H60ceqgTHbhzOj4uRc/83SCN9d+BSUnOkrr2intevqdtEMO1JFVZ1XL84OEZV+QjV36OaZYxtnt4lGmxcGsPfA==", "funding": [ { "type": "individual", @@ -7892,7 +9606,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "peer": true, "dependencies": { "@ethersproject/logger": "^5.4.0" @@ -7900,6 +9613,8 @@ }, "node_modules/ethers/node_modules/@ethersproject/constants": { "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.4.0.tgz", + "integrity": "sha512-tzjn6S7sj9+DIIeKTJLjK9WGN2Tj0P++Z8ONEIlZjyoTkBuODN+0VfhAyYksKi43l1Sx9tX2VlFfzjfmr5Wl3Q==", "funding": [ { "type": "individual", @@ -7910,7 +9625,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "peer": true, "dependencies": { "@ethersproject/bignumber": "^5.4.0" @@ -7918,6 +9632,8 @@ }, "node_modules/ethers/node_modules/@ethersproject/hash": { "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.4.0.tgz", + "integrity": "sha512-xymAM9tmikKgbktOCjW60Z5sdouiIIurkZUr9oW5NOex5uwxrbsYG09kb5bMcNjlVeJD3yPivTNzViIs1GCbqA==", "funding": [ { "type": "individual", @@ -7928,7 +9644,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "peer": true, "dependencies": { "@ethersproject/abstract-signer": "^5.4.0", @@ -7943,6 +9658,8 @@ }, "node_modules/ethers/node_modules/@ethersproject/keccak256": { "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.4.0.tgz", + "integrity": "sha512-FBI1plWet+dPUvAzPAeHzRKiPpETQzqSUWR1wXJGHVWi4i8bOSrpC3NwpkPjgeXG7MnugVc1B42VbfnQikyC/A==", "funding": [ { "type": "individual", @@ -7953,7 +9670,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "peer": true, "dependencies": { "@ethersproject/bytes": "^5.4.0", @@ -7962,6 +9678,8 @@ }, "node_modules/ethers/node_modules/@ethersproject/logger": { "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.4.0.tgz", + "integrity": "sha512-xYdWGGQ9P2cxBayt64d8LC8aPFJk6yWCawQi/4eJ4+oJdMMjEBMrIcIMZ9AxhwpPVmnBPrsB10PcXGmGAqgUEQ==", "funding": [ { "type": "individual", @@ -7972,11 +9690,12 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "peer": true }, "node_modules/ethers/node_modules/@ethersproject/networks": { "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.4.0.tgz", + "integrity": "sha512-5fywtKRDcnaVeA5SjxXH3DOQqe/IbeD/plwydi94SdPps1fbDUrnO6SzDExaruBZXxpxJcO9upG9UComsei4bg==", "funding": [ { "type": "individual", @@ -7987,7 +9706,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "peer": true, "dependencies": { "@ethersproject/logger": "^5.4.0" @@ -7995,6 +9713,8 @@ }, "node_modules/ethers/node_modules/@ethersproject/properties": { "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.4.0.tgz", + "integrity": "sha512-7jczalGVRAJ+XSRvNA6D5sAwT4gavLq3OXPuV/74o3Rd2wuzSL035IMpIMgei4CYyBdialJMrTqkOnzccLHn4A==", "funding": [ { "type": "individual", @@ -8005,7 +9725,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "peer": true, "dependencies": { "@ethersproject/logger": "^5.4.0" @@ -8013,6 +9732,8 @@ }, "node_modules/ethers/node_modules/@ethersproject/providers": { "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.4.0.tgz", + "integrity": "sha512-XRmI9syLnkNdLA8ikEeg0duxmwSWTTt9S+xabnTOyI51JPJyhQ0QUNT+wvmod218ebb7rLupHDPQ7UVe2/+Tjg==", "funding": [ { "type": "individual", @@ -8023,7 +9744,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "peer": true, "dependencies": { "@ethersproject/abstract-provider": "^5.4.0", @@ -8049,6 +9769,8 @@ }, "node_modules/ethers/node_modules/@ethersproject/random": { "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.4.0.tgz", + "integrity": "sha512-pnpWNQlf0VAZDEOVp1rsYQosmv2o0ITS/PecNw+mS2/btF8eYdspkN0vIXrCMtkX09EAh9bdk8GoXmFXM1eAKw==", "funding": [ { "type": "individual", @@ -8059,7 +9781,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "peer": true, "dependencies": { "@ethersproject/bytes": "^5.4.0", @@ -8068,6 +9789,8 @@ }, "node_modules/ethers/node_modules/@ethersproject/rlp": { "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.4.0.tgz", + "integrity": "sha512-0I7MZKfi+T5+G8atId9QaQKHRvvasM/kqLyAH4XxBCBchAooH2EX5rL9kYZWwcm3awYV+XC7VF6nLhfeQFKVPg==", "funding": [ { "type": "individual", @@ -8078,7 +9801,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "peer": true, "dependencies": { "@ethersproject/bytes": "^5.4.0", @@ -8087,6 +9809,8 @@ }, "node_modules/ethers/node_modules/@ethersproject/sha2": { "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.4.0.tgz", + "integrity": "sha512-siheo36r1WD7Cy+bDdE1BJ8y0bDtqXCOxRMzPa4bV1TGt/eTUUt03BHoJNB6reWJD8A30E/pdJ8WFkq+/uz4Gg==", "funding": [ { "type": "individual", @@ -8097,7 +9821,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "peer": true, "dependencies": { "@ethersproject/bytes": "^5.4.0", @@ -8107,6 +9830,8 @@ }, "node_modules/ethers/node_modules/@ethersproject/signing-key": { "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.4.0.tgz", + "integrity": "sha512-q8POUeywx6AKg2/jX9qBYZIAmKSB4ubGXdQ88l40hmATj29JnG5pp331nAWwwxPn2Qao4JpWHNZsQN+bPiSW9A==", "funding": [ { "type": "individual", @@ -8117,7 +9842,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "peer": true, "dependencies": { "@ethersproject/bytes": "^5.4.0", @@ -8130,6 +9854,8 @@ }, "node_modules/ethers/node_modules/@ethersproject/strings": { "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.4.0.tgz", + "integrity": "sha512-k/9DkH5UGDhv7aReXLluFG5ExurwtIpUfnDNhQA29w896Dw3i4uDTz01Quaptbks1Uj9kI8wo9tmW73wcIEaWA==", "funding": [ { "type": "individual", @@ -8140,7 +9866,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "peer": true, "dependencies": { "@ethersproject/bytes": "^5.4.0", @@ -8150,6 +9875,8 @@ }, "node_modules/ethers/node_modules/@ethersproject/transactions": { "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.4.0.tgz", + "integrity": "sha512-s3EjZZt7xa4BkLknJZ98QGoIza94rVjaEed0rzZ/jB9WrIuu/1+tjvYCWzVrystXtDswy7TPBeIepyXwSYa4WQ==", "funding": [ { "type": "individual", @@ -8160,7 +9887,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "peer": true, "dependencies": { "@ethersproject/address": "^5.4.0", @@ -8176,6 +9902,8 @@ }, "node_modules/ethers/node_modules/@ethersproject/web": { "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.4.0.tgz", + "integrity": "sha512-1bUusGmcoRLYgMn6c1BLk1tOKUIFuTg8j+6N8lYlbMpDesnle+i3pGSagGNvwjaiLo4Y5gBibwctpPRmjrh4Og==", "funding": [ { "type": "individual", @@ -8186,7 +9914,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "peer": true, "dependencies": { "@ethersproject/base64": "^5.4.0", @@ -8198,17 +9925,20 @@ }, "node_modules/ethers/node_modules/bn.js": { "version": "4.12.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "peer": true }, "node_modules/ethers/node_modules/js-sha3": { "version": "0.5.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", + "integrity": "sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==", "peer": true }, "node_modules/ethers/node_modules/ws": { "version": "7.4.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", "peer": true, "engines": { "node": ">=8.3.0" @@ -8228,7 +9958,8 @@ }, "node_modules/ethjs-unit": { "version": "0.1.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", + "integrity": "sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==", "dependencies": { "bn.js": "4.11.6", "number-to-bn": "1.7.0" @@ -8240,11 +9971,13 @@ }, "node_modules/ethjs-unit/node_modules/bn.js": { "version": "4.11.6", - "license": "MIT" + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==" }, "node_modules/ethjs-util": { "version": "0.1.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", + "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", "dependencies": { "is-hex-prefixed": "1.0.0", "strip-hex-prefix": "1.0.0" @@ -8256,7 +9989,8 @@ }, "node_modules/event-emitter": { "version": "0.3.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", "dependencies": { "d": "1", "es5-ext": "~0.10.14" @@ -8264,18 +9998,21 @@ }, "node_modules/eventemitter3": { "version": "5.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" }, "node_modules/events": { "version": "3.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "engines": { "node": ">=0.8.x" } }, "node_modules/evp_bytestokey": { "version": "1.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", "dependencies": { "md5.js": "^1.3.4", "safe-buffer": "^5.1.1" @@ -8283,7 +10020,8 @@ }, "node_modules/execa": { "version": "8.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^8.0.1", @@ -8304,7 +10042,8 @@ }, "node_modules/execa/node_modules/get-stream": { "version": "8.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", "engines": { "node": ">=16" }, @@ -8314,27 +10053,32 @@ }, "node_modules/ext": { "version": "1.7.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", "dependencies": { "type": "^2.7.2" } }, "node_modules/ext/node_modules/type": { "version": "2.7.2", - "license": "ISC" + "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" }, "node_modules/fast-deep-equal": { "version": "3.1.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "node_modules/fast-diff": { "version": "1.3.0", - "dev": true, - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true }, "node_modules/fast-glob": { "version": "3.3.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -8348,35 +10092,41 @@ }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true }, "node_modules/fast-levenshtein": { "version": "2.0.6", - "license": "MIT" + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" }, "node_modules/fast-redact": { "version": "3.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.3.0.tgz", + "integrity": "sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==", "engines": { "node": ">=6" } }, "node_modules/fast-safe-stringify": { "version": "2.1.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" }, "node_modules/fastq": { "version": "1.16.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz", + "integrity": "sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==", "dependencies": { "reusify": "^1.0.4" } }, "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": { "flat-cache": "^3.0.4" }, @@ -8386,7 +10136,8 @@ }, "node_modules/fill-range": { "version": "7.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -8396,14 +10147,16 @@ }, "node_modules/filter-obj": { "version": "1.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", + "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==", "engines": { "node": ">=0.10.0" } }, "node_modules/find-replace": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", + "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", "dependencies": { "array-back": "^3.0.1" }, @@ -8413,7 +10166,8 @@ }, "node_modules/find-up": { "version": "2.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", "dependencies": { "locate-path": "^2.0.0" }, @@ -8423,15 +10177,17 @@ }, "node_modules/flat": { "version": "5.0.2", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "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", @@ -8443,8 +10199,9 @@ }, "node_modules/flat-cache/node_modules/rimraf": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, - "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -8457,25 +10214,28 @@ }, "node_modules/flatted": { "version": "3.2.9", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "dev": true }, "node_modules/fmix": { "version": "0.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/fmix/-/fmix-0.1.0.tgz", + "integrity": "sha512-Y6hyofImk9JdzU8k5INtTXX1cu8LDlePWDFU5sftm9H+zKCr5SGrVjdhkvsim646cw5zD0nADj8oHyXMZmCZ9w==", "dependencies": { "imul": "^1.0.0" } }, "node_modules/follow-redirects": { "version": "1.15.4", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", + "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", "funding": [ { "type": "individual", "url": "https://github.com/sponsors/RubenVerborgh" } ], - "license": "MIT", "engines": { "node": ">=4.0" }, @@ -8487,8 +10247,9 @@ }, "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==", "dev": true, - "license": "MIT", "dependencies": { "is-callable": "^1.1.3" } @@ -8511,7 +10272,8 @@ }, "node_modules/form-data": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -8523,19 +10285,22 @@ }, "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": ">= 14.17" } }, "node_modules/fp-ts": { "version": "1.19.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz", + "integrity": "sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==" }, "node_modules/fs-extra": { "version": "7.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", "dependencies": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", @@ -8547,23 +10312,40 @@ }, "node_modules/fs-readdir-recursive": { "version": "1.1.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==" }, "node_modules/fs.realpath": { "version": "1.0.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } }, "node_modules/function-bind": { "version": "1.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "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==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -8579,29 +10361,33 @@ }, "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==", "dev": true, - "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/get-caller-file": { "version": "2.0.5", - "license": "ISC", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "engines": { "node": "6.* || 8.* || >= 10.*" } }, "node_modules/get-func-name": { "version": "2.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "engines": { "node": "*" } }, "node_modules/get-intrinsic": { "version": "1.2.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dependencies": { "function-bind": "^1.1.2", "has-proto": "^1.0.1", @@ -8614,19 +10400,22 @@ }, "node_modules/get-port": { "version": "3.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==", "engines": { "node": ">=4" } }, "node_modules/get-port-please": { "version": "3.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/get-port-please/-/get-port-please-3.1.2.tgz", + "integrity": "sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==" }, "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": { "node": ">=10" }, @@ -8636,8 +10425,9 @@ }, "node_modules/get-symbol-description": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.1" @@ -8651,8 +10441,9 @@ }, "node_modules/get-tsconfig": { "version": "4.7.2", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.2.tgz", + "integrity": "sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==", "dev": true, - "license": "MIT", "dependencies": { "resolve-pkg-maps": "^1.0.0" }, @@ -8662,7 +10453,8 @@ }, "node_modules/ghost-testrpc": { "version": "0.0.2", - "license": "ISC", + "resolved": "https://registry.npmjs.org/ghost-testrpc/-/ghost-testrpc-0.0.2.tgz", + "integrity": "sha512-i08dAEgJ2g8z5buJIrCTduwPIhih3DP+hOCTyyryikfV8T0bNvHnGXO67i0DD1H4GBDETTclPy9njZbfluQYrQ==", "dependencies": { "chalk": "^2.4.2", "node-emoji": "^1.10.0" @@ -8673,7 +10465,8 @@ }, "node_modules/glob": { "version": "7.2.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -8691,7 +10484,8 @@ }, "node_modules/glob-parent": { "version": "5.1.2", - "license": "ISC", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dependencies": { "is-glob": "^4.0.1" }, @@ -8701,7 +10495,8 @@ }, "node_modules/global-modules": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", "dependencies": { "global-prefix": "^3.0.0" }, @@ -8711,7 +10506,8 @@ }, "node_modules/global-prefix": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", "dependencies": { "ini": "^1.3.5", "kind-of": "^6.0.2", @@ -8723,7 +10519,8 @@ }, "node_modules/global-prefix/node_modules/which": { "version": "1.3.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dependencies": { "isexe": "^2.0.0" }, @@ -8733,8 +10530,9 @@ }, "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": { "type-fest": "^0.20.2" }, @@ -8747,8 +10545,9 @@ }, "node_modules/globals/node_modules/type-fest": { "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" }, @@ -8758,8 +10557,9 @@ }, "node_modules/globalthis": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", "dev": true, - "license": "MIT", "dependencies": { "define-properties": "^1.1.3" }, @@ -8772,8 +10572,9 @@ }, "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": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", @@ -8791,7 +10592,8 @@ }, "node_modules/gopd": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "dependencies": { "get-intrinsic": "^1.1.3" }, @@ -8801,8 +10603,9 @@ }, "node_modules/got": { "version": "12.6.1", + "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", + "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", "dev": true, - "license": "MIT", "dependencies": { "@sindresorhus/is": "^5.2.0", "@szmarczak/http-timer": "^5.0.1", @@ -8825,16 +10628,19 @@ }, "node_modules/graceful-fs": { "version": "4.2.11", - "license": "ISC" + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, "node_modules/graphemer": { "version": "1.4.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true }, "node_modules/h3": { "version": "1.10.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/h3/-/h3-1.10.1.tgz", + "integrity": "sha512-UBAUp47hmm4BB5/njB4LrEa9gpuvZj4/Qf/ynSMzO6Ku2RXaouxEfiG2E2IFnv6fxbhAkzjasDxmo6DFdEeXRg==", "dependencies": { "cookie-es": "^1.0.0", "defu": "^6.1.4", @@ -8849,7 +10655,8 @@ }, "node_modules/handlebars": { "version": "4.7.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", "dependencies": { "minimist": "^1.2.5", "neo-async": "^2.6.2", @@ -8867,13 +10674,13 @@ } }, "node_modules/hardhat": { - "version": "2.21.0", - "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.21.0.tgz", - "integrity": "sha512-8DlJAVJDEVHaV1sh9FLuKLLgCFv9EAJ+M+8IbjSIPgoeNo3ss5L1HgGBMfnI88c7OzMEZkdcuyGoobFeK3Orqw==", + "version": "2.22.1", + "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.22.1.tgz", + "integrity": "sha512-cTWYIJc5jQ132XUI8oRI/TO9L6oavPoJRCTRU9sIjkVxvkxz0Axz0K83Z3BEdJTqBQ2W84ZRoTekti84kBwCjg==", "dependencies": { "@ethersproject/abi": "^5.1.2", "@metamask/eth-sig-util": "^4.0.0", - "@nomicfoundation/edr": "^0.2.0", + "@nomicfoundation/edr": "^0.3.1", "@nomicfoundation/ethereumjs-common": "4.0.4", "@nomicfoundation/ethereumjs-tx": "5.0.4", "@nomicfoundation/ethereumjs-util": "9.0.4", @@ -8932,9 +10739,9 @@ } }, "node_modules/hardhat-deploy": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/hardhat-deploy/-/hardhat-deploy-0.12.1.tgz", - "integrity": "sha512-ayPJqBCElzPeiwdHUEV0rKQ6NvKStjQAxCqCPlsavQVaxl7uZUHt/d+XbLqglVFqOOpHHs6L9K4W1vxPbsOy5Q==", + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/hardhat-deploy/-/hardhat-deploy-0.12.2.tgz", + "integrity": "sha512-Xp/4Lb5lC/j3kvitaWW5IZN5Meqv5D3kTIifc3ZwBoQtFLN26/fDfRV6MWAAcRO9gH64hZVokvtcDdl/fd7w3A==", "dependencies": { "@ethersproject/abi": "^5.7.0", "@ethersproject/abstract-signer": "^5.7.0", @@ -9171,7 +10978,8 @@ }, "node_modules/hardhat-deploy/node_modules/ansi-styles": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { "color-convert": "^2.0.1" }, @@ -9184,7 +10992,8 @@ }, "node_modules/hardhat-deploy/node_modules/chalk": { "version": "4.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -9198,7 +11007,8 @@ }, "node_modules/hardhat-deploy/node_modules/color-convert": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { "color-name": "~1.1.4" }, @@ -9208,7 +11018,8 @@ }, "node_modules/hardhat-deploy/node_modules/color-name": { "version": "1.1.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/hardhat-deploy/node_modules/ethers": { "version": "5.7.2", @@ -9259,7 +11070,8 @@ }, "node_modules/hardhat-deploy/node_modules/fs-extra": { "version": "10.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -9271,14 +11083,16 @@ }, "node_modules/hardhat-deploy/node_modules/has-flag": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "engines": { "node": ">=8" } }, "node_modules/hardhat-deploy/node_modules/jsonfile": { "version": "6.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dependencies": { "universalify": "^2.0.0" }, @@ -9288,7 +11102,8 @@ }, "node_modules/hardhat-deploy/node_modules/supports-color": { "version": "7.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dependencies": { "has-flag": "^4.0.0" }, @@ -9298,14 +11113,16 @@ }, "node_modules/hardhat-deploy/node_modules/universalify": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "engines": { "node": ">= 10.0.0" } }, "node_modules/hardhat-gas-reporter": { "version": "1.0.10", - "license": "MIT", + "resolved": "https://registry.npmjs.org/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.10.tgz", + "integrity": "sha512-02N4+So/fZrzJ88ci54GqwVA3Zrf0C9duuTyGt0CFRIh/CdNwbnTgkXkRfojOMLBQ+6t+lBIkgbsOtqMvNwikA==", "dependencies": { "array-uniq": "1.0.3", "eth-gas-reporter": "^0.2.25", @@ -9317,22 +11134,25 @@ }, "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==", "dev": true, - "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-flag": { "version": "3.0.0", - "license": "MIT", + "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/has-property-descriptors": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "dependencies": { "get-intrinsic": "^1.2.2" }, @@ -9342,7 +11162,8 @@ }, "node_modules/has-proto": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", "engines": { "node": ">= 0.4" }, @@ -9352,7 +11173,8 @@ }, "node_modules/has-symbols": { "version": "1.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "engines": { "node": ">= 0.4" }, @@ -9362,8 +11184,9 @@ }, "node_modules/has-tostringtag": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", "dev": true, - "license": "MIT", "dependencies": { "has-symbols": "^1.0.2" }, @@ -9376,7 +11199,8 @@ }, "node_modules/hash-base": { "version": "3.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", "dependencies": { "inherits": "^2.0.4", "readable-stream": "^3.6.0", @@ -9388,6 +11212,8 @@ }, "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", @@ -9401,12 +11227,12 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "node_modules/hash.js": { "version": "1.1.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", "dependencies": { "inherits": "^2.0.3", "minimalistic-assert": "^1.0.1" @@ -9414,7 +11240,8 @@ }, "node_modules/hasown": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", "dependencies": { "function-bind": "^1.1.2" }, @@ -9424,22 +11251,26 @@ }, "node_modules/he": { "version": "1.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "bin": { "he": "bin/he" } }, "node_modules/heap": { "version": "0.2.7", - "license": "MIT" + "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz", + "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==" }, "node_modules/hey-listen": { "version": "1.0.8", - "license": "MIT" + "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", + "integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==" }, "node_modules/hmac-drbg": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", "dependencies": { "hash.js": "^1.0.3", "minimalistic-assert": "^1.0.0", @@ -9448,7 +11279,8 @@ }, "node_modules/http-basic": { "version": "8.1.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/http-basic/-/http-basic-8.1.3.tgz", + "integrity": "sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw==", "dependencies": { "caseless": "^0.12.0", "concat-stream": "^1.6.2", @@ -9461,12 +11293,14 @@ }, "node_modules/http-cache-semantics": { "version": "4.1.1", - "dev": true, - "license": "BSD-2-Clause" + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true }, "node_modules/http-errors": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", @@ -9480,18 +11314,21 @@ }, "node_modules/http-response-object": { "version": "3.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz", + "integrity": "sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==", "dependencies": { "@types/node": "^10.0.3" } }, "node_modules/http-response-object/node_modules/@types/node": { "version": "10.17.60", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" }, "node_modules/http-shutdown": { "version": "1.2.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/http-shutdown/-/http-shutdown-1.2.2.tgz", + "integrity": "sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw==", "engines": { "iojs": ">= 1.0.0", "node": ">= 0.12.0" @@ -9499,8 +11336,9 @@ }, "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": { "quick-lru": "^5.1.1", "resolve-alpn": "^1.2.0" @@ -9511,7 +11349,8 @@ }, "node_modules/https-proxy-agent": { "version": "5.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dependencies": { "agent-base": "6", "debug": "4" @@ -9522,15 +11361,17 @@ }, "node_modules/human-signals": { "version": "5.0.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", "engines": { "node": ">=16.17.0" } }, "node_modules/husky": { "version": "9.0.11", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.0.11.tgz", + "integrity": "sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw==", "dev": true, - "license": "MIT", "bin": { "husky": "bin.mjs" }, @@ -9543,7 +11384,8 @@ }, "node_modules/iconv-lite": { "version": "0.4.24", - "license": "MIT", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -9553,10 +11395,13 @@ }, "node_modules/idb-keyval": { "version": "6.2.1", - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.2.1.tgz", + "integrity": "sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg==" }, "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", @@ -9570,24 +11415,26 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "BSD-3-Clause" + ] }, "node_modules/ignore": { "version": "5.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", "engines": { "node": ">= 4" } }, "node_modules/immutable": { "version": "4.3.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz", + "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==" }, "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": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -9601,29 +11448,33 @@ }, "node_modules/imul": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/imul/-/imul-1.0.1.tgz", + "integrity": "sha512-WFAgfwPLAjU66EKt6vRdTlKj4nAgIDQzh29JonLa4Bqtl6D8JrIMvWjCnx7xEjVNmP3U0fM5o8ZObk7d0f62bA==", "engines": { "node": ">=0.10.0" } }, "node_modules/imurmurhash": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.8.19" } }, "node_modules/indent-string": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "engines": { "node": ">=8" } }, "node_modules/inflight": { "version": "1.0.6", - "license": "ISC", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -9631,16 +11482,19 @@ }, "node_modules/inherits": { "version": "2.0.4", - "license": "ISC" + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/ini": { "version": "1.3.8", - "license": "ISC" + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, "node_modules/internal-slot": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", + "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", "dev": true, - "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.2", "hasown": "^2.0.0", @@ -9652,21 +11506,24 @@ }, "node_modules/interpret": { "version": "1.4.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", "engines": { "node": ">= 0.10" } }, "node_modules/io-ts": { "version": "1.10.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-1.10.4.tgz", + "integrity": "sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==", "dependencies": { "fp-ts": "^1.0.0" } }, "node_modules/ioredis": { "version": "5.3.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.3.2.tgz", + "integrity": "sha512-1DKMMzlIHM02eBBVOFQ1+AolGjs6+xEcM4PDL7NqOS6szq7H9jSaEkIUH6/a5Hl241LzW6JLSiAbNvTQjUupUA==", "dependencies": { "@ioredis/commands": "^1.1.1", "cluster-key-slot": "^1.1.0", @@ -9688,23 +11545,26 @@ }, "node_modules/ipaddr.js": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", + "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==", "dev": true, - "license": "MIT", "engines": { "node": ">= 10" } }, "node_modules/iron-webcrypto": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-1.0.0.tgz", + "integrity": "sha512-anOK1Mktt8U1Xi7fCM3RELTuYbnFikQY5VtrDj7kPgpejV7d43tWKhzgioO0zpkazLEL/j/iayRqnJhrGfqUsg==", "funding": { "url": "https://github.com/sponsors/brc-dd" } }, "node_modules/is-array-buffer": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.0", @@ -9716,13 +11576,15 @@ }, "node_modules/is-arrayish": { "version": "0.2.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true }, "node_modules/is-bigint": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "dev": true, - "license": "MIT", "dependencies": { "has-bigints": "^1.0.1" }, @@ -9732,7 +11594,8 @@ }, "node_modules/is-binary-path": { "version": "2.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dependencies": { "binary-extensions": "^2.0.0" }, @@ -9742,8 +11605,9 @@ }, "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==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -9757,8 +11621,9 @@ }, "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==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -9768,8 +11633,9 @@ }, "node_modules/is-core-module": { "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, - "license": "MIT", "dependencies": { "hasown": "^2.0.0" }, @@ -9779,8 +11645,9 @@ }, "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==", "dev": true, - "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -9793,7 +11660,8 @@ }, "node_modules/is-docker": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", "bin": { "is-docker": "cli.js" }, @@ -9806,21 +11674,24 @@ }, "node_modules/is-extglob": { "version": "2.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "engines": { "node": ">=0.10.0" } }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "engines": { "node": ">=8" } }, "node_modules/is-glob": { "version": "4.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dependencies": { "is-extglob": "^2.1.1" }, @@ -9830,7 +11701,8 @@ }, "node_modules/is-hex-prefixed": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", + "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==", "engines": { "node": ">=6.5.0", "npm": ">=3" @@ -9838,7 +11710,8 @@ }, "node_modules/is-inside-container": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", "dependencies": { "is-docker": "^3.0.0" }, @@ -9854,8 +11727,9 @@ }, "node_modules/is-negative-zero": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -9865,15 +11739,17 @@ }, "node_modules/is-number": { "version": "7.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "engines": { "node": ">=0.12.0" } }, "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==", "dev": true, - "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -9886,23 +11762,26 @@ }, "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", "engines": { "node": ">=8" } }, "node_modules/is-plain-obj": { "version": "2.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "engines": { "node": ">=8" } }, "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==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -9916,8 +11795,9 @@ }, "node_modules/is-shared-array-buffer": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2" }, @@ -9927,7 +11807,8 @@ }, "node_modules/is-stream": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -9937,8 +11818,9 @@ }, "node_modules/is-string": { "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, - "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -9951,8 +11833,9 @@ }, "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==", "dev": true, - "license": "MIT", "dependencies": { "has-symbols": "^1.0.2" }, @@ -9965,8 +11848,9 @@ }, "node_modules/is-typed-array": { "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", "dev": true, - "license": "MIT", "dependencies": { "which-typed-array": "^1.1.11" }, @@ -9979,11 +11863,13 @@ }, "node_modules/is-typedarray": { "version": "1.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" }, "node_modules/is-unicode-supported": { "version": "0.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "engines": { "node": ">=10" }, @@ -9993,8 +11879,9 @@ }, "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==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2" }, @@ -10004,7 +11891,8 @@ }, "node_modules/is-wsl": { "version": "3.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", "dependencies": { "is-inside-container": "^1.0.0" }, @@ -10017,7 +11905,8 @@ }, "node_modules/is64bit": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is64bit/-/is64bit-2.0.0.tgz", + "integrity": "sha512-jv+8jaWCl0g2lSBkNSVXdzfBA0npK1HGC2KtWM9FumFRoGS94g3NbCCLVnCYHLjp4GrW2KZeeSTMo5ddtznmGw==", "dependencies": { "system-architecture": "^0.1.0" }, @@ -10030,16 +11919,19 @@ }, "node_modules/isarray": { "version": "2.0.5", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true }, "node_modules/isexe": { "version": "2.0.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, "node_modules/isomorphic-unfetch": { "version": "3.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz", + "integrity": "sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==", "dependencies": { "node-fetch": "^2.6.1", "unfetch": "^4.2.0" @@ -10056,13 +11948,14 @@ }, "node_modules/isows": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.3.tgz", + "integrity": "sha512-2cKei4vlmg2cxEjm3wVSqn8pcoRF/LX/wpifuuNquFO4SQmPwarClT+SUCA2lt+l581tTeZIPIZuIDo2jWN1fg==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/wagmi-dev" } ], - "license": "MIT", "peerDependencies": { "ws": "*" } @@ -10087,22 +11980,26 @@ }, "node_modules/jiti": { "version": "1.21.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", + "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", "bin": { "jiti": "bin/jiti.js" } }, "node_modules/js-sha3": { "version": "0.8.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" }, "node_modules/js-tokens": { "version": "4.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "node_modules/js-yaml": { "version": "4.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dependencies": { "argparse": "^2.0.1" }, @@ -10112,17 +12009,20 @@ }, "node_modules/json-buffer": { "version": "3.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", - "dev": true, - "license": "MIT" + "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 }, "node_modules/json-rpc-engine": { "version": "6.1.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/json-rpc-engine/-/json-rpc-engine-6.1.0.tgz", + "integrity": "sha512-NEdLrtrq1jUZyfjkr9OCz9EzCNhnRyWtt1PAnvnhwy6e8XETS0Dtc+ZNCO2gvuAoKsIn2+vCSowXTYE4CkgnAQ==", "dependencies": { "@metamask/safe-event-emitter": "^2.0.0", "eth-rpc-errors": "^4.0.2" @@ -10133,26 +12033,31 @@ }, "node_modules/json-rpc-engine/node_modules/@metamask/safe-event-emitter": { "version": "2.0.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/@metamask/safe-event-emitter/-/safe-event-emitter-2.0.0.tgz", + "integrity": "sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q==" }, "node_modules/json-rpc-random-id": { "version": "1.0.1", - "license": "ISC" + "resolved": "https://registry.npmjs.org/json-rpc-random-id/-/json-rpc-random-id-1.0.1.tgz", + "integrity": "sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA==" }, "node_modules/json-schema-traverse": { "version": "0.4.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", - "dev": true, - "license": "MIT" + "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 }, "node_modules/json5": { "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" }, @@ -10162,26 +12067,30 @@ }, "node_modules/jsonc-parser": { "version": "3.2.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz", + "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==" }, "node_modules/jsonfile": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "node_modules/jsonschema": { "version": "1.4.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.1.tgz", + "integrity": "sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==", "engines": { "node": "*" } }, "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": { "node-addon-api": "^2.0.0", "node-gyp-build": "^4.2.0", @@ -10193,34 +12102,39 @@ }, "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": { "json-buffer": "3.0.1" } }, "node_modules/keyvaluestorage-interface": { "version": "1.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/keyvaluestorage-interface/-/keyvaluestorage-interface-1.0.0.tgz", + "integrity": "sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==" }, "node_modules/kind-of": { "version": "6.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "engines": { "node": ">=0.10.0" } }, "node_modules/klaw": { "version": "1.3.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==", "optionalDependencies": { "graceful-fs": "^4.1.9" } }, "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==", "dev": true, - "license": "MIT", "dependencies": { "package-json": "^8.1.0" }, @@ -10233,8 +12147,9 @@ }, "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": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -10245,12 +12160,14 @@ }, "node_modules/lines-and-columns": { "version": "1.2.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true }, "node_modules/listhen": { "version": "1.6.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/listhen/-/listhen-1.6.0.tgz", + "integrity": "sha512-z0RcEXVX5oTpY1bO02SKoTU/kmZSrFSngNNzHRM6KICR17PTq7ANush6AE6ztGJwJD4RLpBrVHd9GnV51J7s3w==", "dependencies": { "@parcel/watcher": "^2.4.0", "@parcel/watcher-wasm": "2.4.0", @@ -10278,7 +12195,8 @@ }, "node_modules/lit": { "version": "2.8.0", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/lit/-/lit-2.8.0.tgz", + "integrity": "sha512-4Sc3OFX9QHOJaHbmTMk28SYgVxLN3ePDjg7hofEft2zWlehFL3LiAuapWc4U/kYwMYJSh2hTCPZ6/LIC7ii0MA==", "dependencies": { "@lit/reactive-element": "^1.6.0", "lit-element": "^3.3.0", @@ -10287,7 +12205,8 @@ }, "node_modules/lit-element": { "version": "3.3.3", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-3.3.3.tgz", + "integrity": "sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==", "dependencies": { "@lit-labs/ssr-dom-shim": "^1.1.0", "@lit/reactive-element": "^1.3.0", @@ -10296,14 +12215,16 @@ }, "node_modules/lit-html": { "version": "2.8.0", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.8.0.tgz", + "integrity": "sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==", "dependencies": { "@types/trusted-types": "^2.0.2" } }, "node_modules/locate-path": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", "dependencies": { "p-locate": "^2.0.0", "path-exists": "^3.0.0" @@ -10314,40 +12235,49 @@ }, "node_modules/lodash": { "version": "4.17.21", - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "node_modules/lodash.camelcase": { "version": "4.3.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" }, "node_modules/lodash.clonedeep": { "version": "4.5.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" }, "node_modules/lodash.defaults": { "version": "4.2.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==" }, "node_modules/lodash.isarguments": { "version": "3.1.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==" }, "node_modules/lodash.isequal": { "version": "4.5.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" }, "node_modules/lodash.merge": { "version": "4.6.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true }, "node_modules/lodash.truncate": { "version": "4.4.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==" }, "node_modules/log-symbols": { "version": "4.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" @@ -10361,7 +12291,8 @@ }, "node_modules/log-symbols/node_modules/ansi-styles": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { "color-convert": "^2.0.1" }, @@ -10374,7 +12305,8 @@ }, "node_modules/log-symbols/node_modules/chalk": { "version": "4.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -10388,7 +12320,8 @@ }, "node_modules/log-symbols/node_modules/color-convert": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { "color-name": "~1.1.4" }, @@ -10398,18 +12331,21 @@ }, "node_modules/log-symbols/node_modules/color-name": { "version": "1.1.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/log-symbols/node_modules/has-flag": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "engines": { "node": ">=8" } }, "node_modules/log-symbols/node_modules/supports-color": { "version": "7.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dependencies": { "has-flag": "^4.0.0" }, @@ -10419,7 +12355,8 @@ }, "node_modules/loose-envify": { "version": "1.4.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -10429,15 +12366,17 @@ }, "node_modules/loupe": { "version": "2.3.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", "dependencies": { "get-func-name": "^2.0.1" } }, "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, - "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -10447,18 +12386,21 @@ }, "node_modules/lru_map": { "version": "0.3.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", + "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==" }, "node_modules/lru-cache": { "version": "10.2.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", "engines": { "node": "14 || >=16.14" } }, "node_modules/magic-string": { "version": "0.30.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.7.tgz", + "integrity": "sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==", "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" }, @@ -10468,19 +12410,23 @@ }, "node_modules/make-error": { "version": "1.3.6", - "license": "ISC" + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" }, "node_modules/markdown-table": { "version": "1.1.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz", + "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==" }, "node_modules/match-all": { "version": "1.2.6", - "license": "MIT" + "resolved": "https://registry.npmjs.org/match-all/-/match-all-1.2.6.tgz", + "integrity": "sha512-0EESkXiTkWzrQQntBu2uzKvLu6vVkUGz40nGPbSZuegcfE5UuSzNjLaIu76zJWuaT/2I3Z/8M06OlUOZLGwLlQ==" }, "node_modules/md5.js": { "version": "1.3.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", "dependencies": { "hash-base": "^3.0.0", "inherits": "^2.0.1", @@ -10489,28 +12435,34 @@ }, "node_modules/memorystream": { "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", "engines": { "node": ">= 0.10.0" } }, "node_modules/merge-stream": { "version": "2.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" }, "node_modules/merge2": { "version": "1.4.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "engines": { "node": ">= 8" } }, "node_modules/micro-ftch": { "version": "0.3.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/micro-ftch/-/micro-ftch-0.3.1.tgz", + "integrity": "sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==" }, "node_modules/micromatch": { "version": "4.0.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dependencies": { "braces": "^3.0.2", "picomatch": "^2.3.1" @@ -10521,7 +12473,8 @@ }, "node_modules/mime": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", "bin": { "mime": "cli.js" }, @@ -10531,14 +12484,16 @@ }, "node_modules/mime-db": { "version": "1.52.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { "version": "2.1.35", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dependencies": { "mime-db": "1.52.0" }, @@ -10548,7 +12503,8 @@ }, "node_modules/mimic-fn": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", "engines": { "node": ">=12" }, @@ -10558,8 +12514,9 @@ }, "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", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -10569,15 +12526,18 @@ }, "node_modules/minimalistic-assert": { "version": "1.0.1", - "license": "ISC" + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" }, "node_modules/minimalistic-crypto-utils": { "version": "1.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" }, "node_modules/minimatch": { "version": "3.1.2", - "license": "ISC", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -10587,7 +12547,8 @@ }, "node_modules/minimist": { "version": "1.2.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -10603,7 +12564,8 @@ }, "node_modules/mkdirp": { "version": "0.5.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dependencies": { "minimist": "^1.2.6" }, @@ -10613,7 +12575,8 @@ }, "node_modules/mlly": { "version": "1.5.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.5.0.tgz", + "integrity": "sha512-NPVQvAY1xr1QoVeG0cy8yUYC7FQcOx6evl/RjT1wL5FvzPnzOysoqB/jmx/DhssT2dYa8nxECLAaFI/+gVLhDQ==", "dependencies": { "acorn": "^8.11.3", "pathe": "^1.1.2", @@ -10623,14 +12586,16 @@ }, "node_modules/mnemonist": { "version": "0.38.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz", + "integrity": "sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==", "dependencies": { "obliterator": "^2.0.0" } }, "node_modules/mocha": { "version": "10.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", + "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", "dependencies": { "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", @@ -10668,21 +12633,24 @@ }, "node_modules/mocha/node_modules/ansi-colors": { "version": "4.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "engines": { "node": ">=6" } }, "node_modules/mocha/node_modules/brace-expansion": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/mocha/node_modules/escape-string-regexp": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "engines": { "node": ">=10" }, @@ -10692,7 +12660,8 @@ }, "node_modules/mocha/node_modules/find-up": { "version": "5.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -10706,14 +12675,16 @@ }, "node_modules/mocha/node_modules/has-flag": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "engines": { "node": ">=8" } }, "node_modules/mocha/node_modules/locate-path": { "version": "6.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dependencies": { "p-locate": "^5.0.0" }, @@ -10726,7 +12697,8 @@ }, "node_modules/mocha/node_modules/minimatch": { "version": "5.0.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -10736,11 +12708,13 @@ }, "node_modules/mocha/node_modules/ms": { "version": "2.1.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/mocha/node_modules/p-limit": { "version": "3.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -10753,7 +12727,8 @@ }, "node_modules/mocha/node_modules/p-locate": { "version": "5.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dependencies": { "p-limit": "^3.0.2" }, @@ -10766,14 +12741,16 @@ }, "node_modules/mocha/node_modules/path-exists": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "engines": { "node": ">=8" } }, "node_modules/mocha/node_modules/supports-color": { "version": "8.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dependencies": { "has-flag": "^4.0.0" }, @@ -10786,7 +12763,8 @@ }, "node_modules/motion": { "version": "10.16.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/motion/-/motion-10.16.2.tgz", + "integrity": "sha512-p+PurYqfUdcJZvtnmAqu5fJgV2kR0uLFQuBKtLeFVTrYEVllI99tiOTSefVNYuip9ELTEkepIIDftNdze76NAQ==", "dependencies": { "@motionone/animation": "^10.15.1", "@motionone/dom": "^10.16.2", @@ -10798,22 +12776,26 @@ }, "node_modules/mri": { "version": "1.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", "engines": { "node": ">=4" } }, "node_modules/ms": { "version": "2.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/multiformats": { "version": "9.9.0", - "license": "(Apache-2.0 AND MIT)" + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz", + "integrity": "sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==" }, "node_modules/murmur-128": { "version": "0.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/murmur-128/-/murmur-128-0.2.1.tgz", + "integrity": "sha512-WseEgiRkI6aMFBbj8Cg9yBj/y+OdipwVC7zUo3W2W1JAJITwouUOtpqsmGSg67EQmwwSyod7hsVsWY5LsrfQVg==", "dependencies": { "encode-utf8": "^1.0.2", "fmix": "^0.1.0", @@ -10822,7 +12804,8 @@ }, "node_modules/nanoid": { "version": "3.3.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -10832,31 +12815,37 @@ }, "node_modules/natural-compare": { "version": "1.4.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true }, "node_modules/neo-async": { "version": "2.6.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, "node_modules/next-tick": { "version": "1.1.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" }, "node_modules/node-addon-api": { "version": "2.0.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", + "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==" }, "node_modules/node-emoji": { "version": "1.11.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", + "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", "dependencies": { "lodash": "^4.17.21" } }, "node_modules/node-fetch": { "version": "2.7.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -10874,18 +12863,21 @@ }, "node_modules/node-fetch-native": { "version": "1.6.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.2.tgz", + "integrity": "sha512-69mtXOFZ6hSkYiXAVB5SqaRvrbITC/NPyqv7yuu/qw0nmgPyYbIMYYNIDhNtwPrzk0ptrimrLz/hhjvm4w5Z+w==" }, "node_modules/node-forge": { "version": "1.3.1", - "license": "(BSD-3-Clause OR GPL-2.0)", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", "engines": { "node": ">= 6.13.0" } }, "node_modules/node-gyp-build": { "version": "4.8.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.0.tgz", + "integrity": "sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==", "bin": { "node-gyp-build": "bin.js", "node-gyp-build-optional": "optional.js", @@ -10894,8 +12886,9 @@ }, "node_modules/node-gyp-build-optional-packages": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.1.1.tgz", + "integrity": "sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw==", "dev": true, - "license": "MIT", "optional": true, "dependencies": { "detect-libc": "^2.0.1" @@ -10908,14 +12901,16 @@ }, "node_modules/nofilter": { "version": "3.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz", + "integrity": "sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==", "engines": { "node": ">=12.19" } }, "node_modules/nopt": { "version": "3.0.6", - "license": "ISC", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==", "dependencies": { "abbrev": "1" }, @@ -10925,15 +12920,17 @@ }, "node_modules/normalize-path": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "engines": { "node": ">=0.10.0" } }, "node_modules/normalize-url": { "version": "8.0.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", + "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", "dev": true, - "license": "MIT", "engines": { "node": ">=14.16" }, @@ -10943,7 +12940,8 @@ }, "node_modules/npm-run-path": { "version": "5.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.2.0.tgz", + "integrity": "sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==", "dependencies": { "path-key": "^4.0.0" }, @@ -10956,7 +12954,8 @@ }, "node_modules/npm-run-path/node_modules/path-key": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "engines": { "node": ">=12" }, @@ -10966,7 +12965,8 @@ }, "node_modules/number-to-bn": { "version": "1.7.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", + "integrity": "sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==", "dependencies": { "bn.js": "4.11.6", "strip-hex-prefix": "1.0.0" @@ -10978,34 +12978,39 @@ }, "node_modules/number-to-bn/node_modules/bn.js": { "version": "4.11.6", - "license": "MIT" + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==" }, "node_modules/object-assign": { "version": "4.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "engines": { "node": ">=0.10.0" } }, "node_modules/object-inspect": { "version": "1.13.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "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==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" } }, "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==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.5", "define-properties": "^1.2.1", @@ -11021,8 +13026,9 @@ }, "node_modules/object.fromentries": { "version": "2.0.7", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", + "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -11037,8 +13043,9 @@ }, "node_modules/object.groupby": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", + "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -11048,8 +13055,9 @@ }, "node_modules/object.values": { "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", + "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -11064,11 +13072,13 @@ }, "node_modules/obliterator": { "version": "2.0.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.4.tgz", + "integrity": "sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==" }, "node_modules/ofetch": { "version": "1.3.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.3.3.tgz", + "integrity": "sha512-s1ZCMmQWXy4b5K/TW9i/DtiN8Ku+xCiHcjQ6/J/nDdssirrQNOoB165Zu8EqLMA2lln1JUth9a0aW9Ap2ctrUg==", "dependencies": { "destr": "^2.0.1", "node-fetch-native": "^1.4.0", @@ -11077,22 +13087,26 @@ }, "node_modules/ohash": { "version": "1.1.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/ohash/-/ohash-1.1.3.tgz", + "integrity": "sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==" }, "node_modules/on-exit-leak-free": { "version": "0.2.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-0.2.0.tgz", + "integrity": "sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==" }, "node_modules/once": { "version": "1.4.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dependencies": { "wrappy": "1" } }, "node_modules/onetime": { "version": "6.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", "dependencies": { "mimic-fn": "^4.0.0" }, @@ -11105,8 +13119,9 @@ }, "node_modules/optionator": { "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, - "license": "MIT", "dependencies": { "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", @@ -11121,26 +13136,30 @@ }, "node_modules/ordinal": { "version": "1.0.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/ordinal/-/ordinal-1.0.3.tgz", + "integrity": "sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ==" }, "node_modules/os-tmpdir": { "version": "1.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "engines": { "node": ">=0.10.0" } }, "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", "engines": { "node": ">=12.20" } }, "node_modules/p-limit": { "version": "1.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dependencies": { "p-try": "^1.0.0" }, @@ -11150,7 +13169,8 @@ }, "node_modules/p-locate": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", "dependencies": { "p-limit": "^1.1.0" }, @@ -11160,7 +13180,8 @@ }, "node_modules/p-map": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dependencies": { "aggregate-error": "^3.0.0" }, @@ -11173,15 +13194,17 @@ }, "node_modules/p-try": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", "engines": { "node": ">=4" } }, "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==", "dev": true, - "license": "MIT", "dependencies": { "got": "^12.1.0", "registry-auth-token": "^5.0.1", @@ -11197,8 +13220,9 @@ }, "node_modules/package-json/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==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -11208,8 +13232,9 @@ }, "node_modules/package-json/node_modules/semver": { "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -11222,8 +13247,9 @@ }, "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": { "callsites": "^3.0.0" }, @@ -11232,12 +13258,15 @@ } }, "node_modules/parse-cache-control": { - "version": "1.0.1" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz", + "integrity": "sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==" }, "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": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -11253,28 +13282,32 @@ }, "node_modules/path-exists": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "engines": { "node": ">=4" } }, "node_modules/path-is-absolute": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "engines": { "node": ">=0.10.0" } }, "node_modules/path-key": { "version": "3.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "engines": { "node": ">=8" } }, "node_modules/path-parse": { "version": "1.0.7", - "license": "MIT" + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "node_modules/path-scurry": { "version": "1.10.1", @@ -11294,25 +13327,29 @@ }, "node_modules/path-type": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "engines": { "node": ">=8" } }, "node_modules/pathe": { "version": "1.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==" }, "node_modules/pathval": { "version": "1.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", "engines": { "node": "*" } }, "node_modules/pbkdf2": { "version": "3.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", "dependencies": { "create-hash": "^1.1.2", "create-hmac": "^1.1.4", @@ -11326,11 +13363,13 @@ }, "node_modules/picocolors": { "version": "1.0.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, "node_modules/picomatch": { "version": "2.3.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "engines": { "node": ">=8.6" }, @@ -11340,14 +13379,16 @@ }, "node_modules/pify": { "version": "4.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "engines": { "node": ">=6" } }, "node_modules/pino": { "version": "7.11.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/pino/-/pino-7.11.0.tgz", + "integrity": "sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg==", "dependencies": { "atomic-sleep": "^1.0.0", "fast-redact": "^3.0.0", @@ -11367,7 +13408,8 @@ }, "node_modules/pino-abstract-transport": { "version": "0.5.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-0.5.0.tgz", + "integrity": "sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==", "dependencies": { "duplexify": "^4.1.2", "split2": "^4.0.0" @@ -11375,11 +13417,13 @@ }, "node_modules/pino-std-serializers": { "version": "4.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-4.0.0.tgz", + "integrity": "sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==" }, "node_modules/pkg-types": { "version": "1.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.3.tgz", + "integrity": "sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==", "dependencies": { "jsonc-parser": "^3.2.0", "mlly": "^1.2.0", @@ -11388,28 +13432,33 @@ }, "node_modules/pluralize": { "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/pngjs": { "version": "5.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", + "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==", "engines": { "node": ">=10.13.0" } }, "node_modules/pony-cause": { "version": "2.1.10", - "license": "0BSD", + "resolved": "https://registry.npmjs.org/pony-cause/-/pony-cause-2.1.10.tgz", + "integrity": "sha512-3IKLNXclQgkU++2fSi93sQ6BznFuxSLB11HdvZQ6JW/spahf/P1pAHBQEahr20rs0htZW0UDkM1HmA+nZkXKsw==", "engines": { "node": ">=12.0.0" } }, "node_modules/postcss": { "version": "8.4.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", + "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", "funding": [ { "type": "opencollective", @@ -11424,7 +13473,6 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.0.0", @@ -11436,13 +13484,14 @@ }, "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" } ], - "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -11452,7 +13501,8 @@ }, "node_modules/preact": { "version": "10.19.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.19.4.tgz", + "integrity": "sha512-dwaX5jAh0Ga8uENBX1hSOujmKWgx9RtL80KaKUFLc6jb4vCEAc3EeZ0rnQO/FO4VgjfPMfoLFWnNG8bHuZ9VLw==", "funding": { "type": "opencollective", "url": "https://opencollective.com/preact" @@ -11460,16 +13510,18 @@ }, "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", "engines": { "node": ">= 0.8.0" } }, "node_modules/prettier": { "version": "3.2.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", + "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", "dev": true, - "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" }, @@ -11482,8 +13534,9 @@ }, "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", "dependencies": { "fast-diff": "^1.1.2" }, @@ -11493,8 +13546,9 @@ }, "node_modules/prettier-plugin-solidity": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/prettier-plugin-solidity/-/prettier-plugin-solidity-1.3.1.tgz", + "integrity": "sha512-MN4OP5I2gHAzHZG1wcuJl0FsLS3c4Cc5494bbg+6oQWBPuEamjwDvmGfFMZ6NFzsh3Efd9UUxeT7ImgjNH4ozA==", "dev": true, - "license": "MIT", "dependencies": { "@solidity-parser/parser": "^0.17.0", "semver": "^7.5.4", @@ -11509,13 +13563,15 @@ }, "node_modules/prettier-plugin-solidity/node_modules/@solidity-parser/parser": { "version": "0.17.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.17.0.tgz", + "integrity": "sha512-Nko8R0/kUo391jsEHHxrGM07QFdnPGvlmox4rmH0kNiNAashItAilhy4Mv4pK5gQmW5f4sXAF58fwJbmlkGcVw==", + "dev": true }, "node_modules/prettier-plugin-solidity/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==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -11525,8 +13581,9 @@ }, "node_modules/prettier-plugin-solidity/node_modules/semver": { "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -11539,63 +13596,74 @@ }, "node_modules/process-nextick-args": { "version": "2.0.1", - "license": "MIT" + "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/process-warning": { "version": "1.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-1.0.0.tgz", + "integrity": "sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==" }, "node_modules/promise": { "version": "8.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", "dependencies": { "asap": "~2.0.6" } }, "node_modules/proto-list": { "version": "1.2.4", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true }, "node_modules/proxy-compare": { "version": "2.5.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/proxy-compare/-/proxy-compare-2.5.1.tgz", + "integrity": "sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA==" }, "node_modules/proxy-from-env": { "version": "1.1.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, "node_modules/punycode": { "version": "2.3.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "engines": { "node": ">=6" } }, "node_modules/pvtsutils": { "version": "1.3.5", + "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.5.tgz", + "integrity": "sha512-ARvb14YB9Nm2Xi6nBq1ZX6dAM0FsJnuk+31aUp4TrcZEdKUlSqOqsxJHUPJDNE3qiIp+iUPEIeR6Je/tgV7zsA==", "dev": true, - "license": "MIT", "dependencies": { "tslib": "^2.6.1" } }, "node_modules/pvtsutils/node_modules/tslib": { "version": "2.6.2", - "dev": true, - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/pvutils": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.3.tgz", + "integrity": "sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/qrcode": { "version": "1.5.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.3.tgz", + "integrity": "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==", "dependencies": { "dijkstrajs": "^1.0.1", "encode-utf8": "^1.0.3", @@ -11611,7 +13679,8 @@ }, "node_modules/qrcode/node_modules/ansi-styles": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { "color-convert": "^2.0.1" }, @@ -11624,14 +13693,16 @@ }, "node_modules/qrcode/node_modules/camelcase": { "version": "5.3.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "engines": { "node": ">=6" } }, "node_modules/qrcode/node_modules/cliui": { "version": "6.0.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -11640,7 +13711,8 @@ }, "node_modules/qrcode/node_modules/color-convert": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { "color-name": "~1.1.4" }, @@ -11650,18 +13722,21 @@ }, "node_modules/qrcode/node_modules/color-name": { "version": "1.1.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/qrcode/node_modules/decamelize": { "version": "1.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "engines": { "node": ">=0.10.0" } }, "node_modules/qrcode/node_modules/find-up": { "version": "4.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -11672,7 +13747,8 @@ }, "node_modules/qrcode/node_modules/locate-path": { "version": "5.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dependencies": { "p-locate": "^4.1.0" }, @@ -11682,7 +13758,8 @@ }, "node_modules/qrcode/node_modules/p-limit": { "version": "2.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dependencies": { "p-try": "^2.0.0" }, @@ -11695,7 +13772,8 @@ }, "node_modules/qrcode/node_modules/p-locate": { "version": "4.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dependencies": { "p-limit": "^2.2.0" }, @@ -11705,21 +13783,24 @@ }, "node_modules/qrcode/node_modules/p-try": { "version": "2.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "engines": { "node": ">=6" } }, "node_modules/qrcode/node_modules/path-exists": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "engines": { "node": ">=8" } }, "node_modules/qrcode/node_modules/wrap-ansi": { "version": "6.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -11731,11 +13812,13 @@ }, "node_modules/qrcode/node_modules/y18n": { "version": "4.0.3", - "license": "ISC" + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" }, "node_modules/qrcode/node_modules/yargs": { "version": "15.4.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", "dependencies": { "cliui": "^6.0.0", "decamelize": "^1.2.0", @@ -11755,7 +13838,8 @@ }, "node_modules/qrcode/node_modules/yargs-parser": { "version": "18.1.3", - "license": "ISC", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "dependencies": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" @@ -11766,7 +13850,8 @@ }, "node_modules/qs": { "version": "6.11.2", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", "dependencies": { "side-channel": "^1.0.4" }, @@ -11779,7 +13864,8 @@ }, "node_modules/query-string": { "version": "7.1.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.3.tgz", + "integrity": "sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==", "dependencies": { "decode-uri-component": "^0.2.2", "filter-obj": "^1.1.0", @@ -11795,6 +13881,8 @@ }, "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", @@ -11808,17 +13896,18 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "node_modules/quick-format-unescaped": { "version": "4.0.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", + "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==" }, "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": { "node": ">=10" }, @@ -11828,18 +13917,21 @@ }, "node_modules/radix3": { "version": "1.1.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/radix3/-/radix3-1.1.0.tgz", + "integrity": "sha512-pNsHDxbGORSvuSScqNJ+3Km6QAVqk8CfsCBIEoDgpqLrkD2f3QM4I7d1ozJJ172OmIcoUcerZaNWqtLkRXTV3A==" }, "node_modules/randombytes": { "version": "2.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dependencies": { "safe-buffer": "^5.1.0" } }, "node_modules/raw-body": { "version": "2.5.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -11852,8 +13944,9 @@ }, "node_modules/rc": { "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "dev": true, - "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", "dependencies": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -11866,15 +13959,17 @@ }, "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==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/react": { "version": "18.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", "dependencies": { "loose-envify": "^1.1.0" }, @@ -11884,7 +13979,8 @@ }, "node_modules/react-dom": { "version": "18.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.0" @@ -11895,7 +13991,8 @@ }, "node_modules/readable-stream": { "version": "3.6.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -11907,7 +14004,8 @@ }, "node_modules/readdirp": { "version": "3.6.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dependencies": { "picomatch": "^2.2.1" }, @@ -11917,13 +14015,16 @@ }, "node_modules/real-require": { "version": "0.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.1.0.tgz", + "integrity": "sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==", "engines": { "node": ">= 12.13.0" } }, "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==", "dependencies": { "resolve": "^1.1.6" }, @@ -11933,7 +14034,8 @@ }, "node_modules/recursive-readdir": { "version": "2.2.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", + "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", "dependencies": { "minimatch": "^3.0.5" }, @@ -11943,14 +14045,16 @@ }, "node_modules/redis-errors": { "version": "1.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", + "integrity": "sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==", "engines": { "node": ">=4" } }, "node_modules/redis-parser": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz", + "integrity": "sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==", "dependencies": { "redis-errors": "^1.0.0" }, @@ -11960,15 +14064,17 @@ }, "node_modules/reduce-flatten": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", + "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", "engines": { "node": ">=6" } }, "node_modules/regexp.prototype.flags": { "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -11983,8 +14089,9 @@ }, "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": { "@pnpm/npm-conf": "^2.1.0" }, @@ -11994,8 +14101,9 @@ }, "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": { "rc": "1.2.8" }, @@ -12008,7 +14116,8 @@ }, "node_modules/req-cwd": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/req-cwd/-/req-cwd-2.0.0.tgz", + "integrity": "sha512-ueoIoLo1OfB6b05COxAA9UpeoscNpYyM+BqYlA7H6LVF4hKGPXQQSSaD2YmvDVJMkk4UDpAHIeU1zG53IqjvlQ==", "dependencies": { "req-from": "^2.0.0" }, @@ -12018,7 +14127,8 @@ }, "node_modules/req-from": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/req-from/-/req-from-2.0.0.tgz", + "integrity": "sha512-LzTfEVDVQHBRfjOUMgNBA+V6DWsSnoeKzf42J7l0xa/B4jyPOuuF5MlNSmomLNGemWTnV2TIdjSSLnEn95fOQA==", "dependencies": { "resolve-from": "^3.0.0" }, @@ -12028,32 +14138,37 @@ }, "node_modules/req-from/node_modules/resolve-from": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", "engines": { "node": ">=4" } }, "node_modules/require-directory": { "version": "2.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "engines": { "node": ">=0.10.0" } }, "node_modules/require-from-string": { "version": "2.0.2", - "license": "MIT", + "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==", "engines": { "node": ">=0.10.0" } }, "node_modules/require-main-filename": { "version": "2.0.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" }, "node_modules/resolve": { "version": "1.17.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", "dependencies": { "path-parse": "^1.0.6" }, @@ -12063,29 +14178,33 @@ }, "node_modules/resolve-alpn": { "version": "1.2.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "dev": true }, "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", "engines": { "node": ">=4" } }, "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", "funding": { "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } }, "node_modules/responselike": { "version": "3.0.0", + "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" }, @@ -12098,7 +14217,8 @@ }, "node_modules/reusify": { "version": "1.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -12170,7 +14290,8 @@ }, "node_modules/ripemd160": { "version": "2.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", "dependencies": { "hash-base": "^3.0.0", "inherits": "^2.0.1" @@ -12178,7 +14299,8 @@ }, "node_modules/rlp": { "version": "2.2.7", - "license": "MPL-2.0", + "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", + "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", "dependencies": { "bn.js": "^5.2.0" }, @@ -12188,8 +14310,9 @@ }, "node_modules/rollup": { "version": "4.9.5", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.5.tgz", + "integrity": "sha512-E4vQW0H/mbNMw2yLSqJyjtkHY9dslf/p0zuT1xehNRqUTBOFMqEjguDvqhXr7N7r/4ttb2jr4T41d3dncmIgbQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/estree": "1.0.5" }, @@ -12219,6 +14342,8 @@ }, "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", @@ -12233,15 +14358,15 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } }, "node_modules/safe-array-concat": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", + "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.1", @@ -12257,12 +14382,14 @@ }, "node_modules/safe-buffer": { "version": "5.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "node_modules/safe-regex-test": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.3", @@ -12274,19 +14401,22 @@ }, "node_modules/safe-stable-stringify": { "version": "2.4.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", + "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", "engines": { "node": ">=10" } }, "node_modules/safer-buffer": { "version": "2.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/sc-istanbul": { "version": "0.4.6", - "license": "BSD-3-Clause", - "dependencies": { + "resolved": "https://registry.npmjs.org/sc-istanbul/-/sc-istanbul-0.4.6.tgz", + "integrity": "sha512-qJFF/8tW/zJsbyfh/iT/ZM5QNHE3CXxtLJbZsL+CzdJLBsPD7SedJZoUA4d8iAcN2IoMp/Dx80shOOd2x96X/g==", + "dependencies": { "abbrev": "1.0.x", "async": "1.x", "escodegen": "1.8.x", @@ -12308,14 +14438,16 @@ }, "node_modules/sc-istanbul/node_modules/argparse": { "version": "1.0.10", - "license": "MIT", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dependencies": { "sprintf-js": "~1.0.2" } }, "node_modules/sc-istanbul/node_modules/glob": { "version": "5.0.15", - "license": "ISC", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==", "dependencies": { "inflight": "^1.0.4", "inherits": "2", @@ -12329,14 +14461,16 @@ }, "node_modules/sc-istanbul/node_modules/has-flag": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", "engines": { "node": ">=0.10.0" } }, "node_modules/sc-istanbul/node_modules/js-yaml": { "version": "3.14.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -12347,7 +14481,8 @@ }, "node_modules/sc-istanbul/node_modules/js-yaml/node_modules/esprima": { "version": "4.0.1", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -12358,11 +14493,13 @@ }, "node_modules/sc-istanbul/node_modules/resolve": { "version": "1.1.7", - "license": "MIT" + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==" }, "node_modules/sc-istanbul/node_modules/supports-color": { "version": "3.2.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", "dependencies": { "has-flag": "^1.0.0" }, @@ -12372,7 +14509,8 @@ }, "node_modules/sc-istanbul/node_modules/which": { "version": "1.3.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dependencies": { "isexe": "^2.0.0" }, @@ -12382,19 +14520,22 @@ }, "node_modules/scheduler": { "version": "0.23.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", "dependencies": { "loose-envify": "^1.1.0" } }, "node_modules/scrypt-js": { "version": "3.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" }, "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": { "elliptic": "^6.5.4", "node-addon-api": "^2.0.0", @@ -12406,25 +14547,29 @@ }, "node_modules/semver": { "version": "6.3.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" } }, "node_modules/serialize-javascript": { "version": "6.0.0", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", "dependencies": { "randombytes": "^2.1.0" } }, "node_modules/set-blocking": { "version": "2.0.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" }, "node_modules/set-function-length": { "version": "1.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", "dependencies": { "define-data-property": "^1.1.1", "get-intrinsic": "^1.2.1", @@ -12437,8 +14582,9 @@ }, "node_modules/set-function-name": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", "dev": true, - "license": "MIT", "dependencies": { "define-data-property": "^1.0.1", "functions-have-names": "^1.2.3", @@ -12450,15 +14596,18 @@ }, "node_modules/setimmediate": { "version": "1.0.5", - "license": "MIT" + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" }, "node_modules/setprototypeof": { "version": "1.2.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, "node_modules/sha.js": { "version": "2.4.11", - "license": "(MIT AND BSD-3-Clause)", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "dependencies": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -12469,7 +14618,8 @@ }, "node_modules/sha1": { "version": "1.1.1", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/sha1/-/sha1-1.1.1.tgz", + "integrity": "sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA==", "dependencies": { "charenc": ">= 0.0.1", "crypt": ">= 0.0.1" @@ -12480,7 +14630,8 @@ }, "node_modules/shebang-command": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -12490,14 +14641,16 @@ }, "node_modules/shebang-regex": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "engines": { "node": ">=8" } }, "node_modules/shelljs": { "version": "0.8.5", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", "dependencies": { "glob": "^7.0.0", "interpret": "^1.0.0", @@ -12512,7 +14665,8 @@ }, "node_modules/side-channel": { "version": "1.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", "dependencies": { "call-bind": "^1.0.0", "get-intrinsic": "^1.0.2", @@ -12524,7 +14678,8 @@ }, "node_modules/signal-exit": { "version": "4.1.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "engines": { "node": ">=14" }, @@ -12534,14 +14689,16 @@ }, "node_modules/slash": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "engines": { "node": ">=8" } }, "node_modules/slice-ansi": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -12556,7 +14713,8 @@ }, "node_modules/slice-ansi/node_modules/ansi-styles": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { "color-convert": "^2.0.1" }, @@ -12569,7 +14727,8 @@ }, "node_modules/slice-ansi/node_modules/color-convert": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { "color-name": "~1.1.4" }, @@ -12579,11 +14738,13 @@ }, "node_modules/slice-ansi/node_modules/color-name": { "version": "1.1.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/solc": { "version": "0.7.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.7.3.tgz", + "integrity": "sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA==", "dependencies": { "command-exists": "^1.2.8", "commander": "3.0.2", @@ -12604,7 +14765,8 @@ }, "node_modules/solc/node_modules/fs-extra": { "version": "0.30.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==", "dependencies": { "graceful-fs": "^4.1.2", "jsonfile": "^2.1.0", @@ -12615,7 +14777,8 @@ }, "node_modules/solc/node_modules/jsonfile": { "version": "2.4.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", "optionalDependencies": { "graceful-fs": "^4.1.6" } @@ -12633,15 +14796,17 @@ }, "node_modules/solc/node_modules/semver": { "version": "5.7.2", - "license": "ISC", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "bin": { "semver": "bin/semver" } }, "node_modules/solhint": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/solhint/-/solhint-4.1.1.tgz", + "integrity": "sha512-7G4iF8H5hKHc0tR+/uyZesSKtfppFIMvPSW+Ku6MSL25oVRuyFeqNhOsXHfkex64wYJyXs4fe+pvhB069I19Tw==", "dev": true, - "license": "MIT", "dependencies": { "@solidity-parser/parser": "^0.16.0", "ajv": "^6.12.6", @@ -12671,16 +14836,18 @@ }, "node_modules/solhint/node_modules/@solidity-parser/parser": { "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.16.2.tgz", + "integrity": "sha512-PI9NfoA3P8XK2VBkK5oIfRgKDsicwDZfkVq9ZTBCQYGOP1N2owgY2dyLGyU5/J/hQs8KRk55kdmvTLjy3Mu3vg==", "dev": true, - "license": "MIT", "dependencies": { "antlr4ts": "^0.5.0-alpha.4" } }, "node_modules/solhint/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==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -12693,16 +14860,18 @@ }, "node_modules/solhint/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==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/solhint/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -12716,8 +14885,9 @@ }, "node_modules/solhint/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==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -12727,21 +14897,24 @@ }, "node_modules/solhint/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/solhint/node_modules/commander": { "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "dev": true, - "license": "MIT", "engines": { "node": ">=14" } }, "node_modules/solhint/node_modules/glob": { "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -12758,16 +14931,18 @@ }, "node_modules/solhint/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==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/solhint/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==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -12777,8 +14952,9 @@ }, "node_modules/solhint/node_modules/minimatch": { "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -12788,8 +14964,9 @@ }, "node_modules/solhint/node_modules/prettier": { "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "dev": true, - "license": "MIT", "optional": true, "bin": { "prettier": "bin-prettier.js" @@ -12803,8 +14980,9 @@ }, "node_modules/solhint/node_modules/semver": { "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -12817,8 +14995,9 @@ }, "node_modules/solhint/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" }, @@ -12828,12 +15007,14 @@ }, "node_modules/solidity-comments-extractor": { "version": "0.0.8", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/solidity-comments-extractor/-/solidity-comments-extractor-0.0.8.tgz", + "integrity": "sha512-htM7Vn6LhHreR+EglVMd2s+sZhcXAirB1Zlyrv5zBuTxieCvjfnRpd7iZk75m/u6NOlEyQ94C6TWbBn2cY7w8g==", + "dev": true }, "node_modules/solidity-coverage": { "version": "0.8.7", - "license": "ISC", + "resolved": "https://registry.npmjs.org/solidity-coverage/-/solidity-coverage-0.8.7.tgz", + "integrity": "sha512-RzcPuNsIqVGq5F8rjQZPdI2EVdsRU7w2f1Uk1UY567n9eNcg5LSEQ3Q1WFoy9bi/2AD5SYbYK9SS/Nwh2oYbNw==", "dependencies": { "@ethersproject/abi": "^5.0.9", "@solidity-parser/parser": "^0.18.0", @@ -12864,11 +15045,13 @@ }, "node_modules/solidity-coverage/node_modules/@solidity-parser/parser": { "version": "0.18.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.18.0.tgz", + "integrity": "sha512-yfORGUIPgLck41qyN7nbwJRAx17/jAIXCTanHOJZhB6PJ1iAk/84b/xlsVKFSyNyLXIj0dhppoE0+CRws7wlzA==" }, "node_modules/solidity-coverage/node_modules/fs-extra": { "version": "8.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", @@ -12880,7 +15063,8 @@ }, "node_modules/solidity-coverage/node_modules/globby": { "version": "10.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", + "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", "dependencies": { "@types/glob": "^7.1.1", "array-union": "^2.1.0", @@ -12897,7 +15081,8 @@ }, "node_modules/solidity-coverage/node_modules/lru-cache": { "version": "6.0.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dependencies": { "yallist": "^4.0.0" }, @@ -12907,7 +15092,8 @@ }, "node_modules/solidity-coverage/node_modules/semver": { "version": "7.5.4", - "license": "ISC", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -12920,28 +15106,32 @@ }, "node_modules/sonic-boom": { "version": "2.8.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-2.8.0.tgz", + "integrity": "sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==", "dependencies": { "atomic-sleep": "^1.0.0" } }, "node_modules/source-map": { "version": "0.6.1", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "engines": { "node": ">=0.10.0" } }, "node_modules/source-map-js": { "version": "1.0.2", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", "engines": { "node": ">=0.10.0" } }, "node_modules/source-map-support": { "version": "0.5.21", - "license": "MIT", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -12949,25 +15139,29 @@ }, "node_modules/split-on-first": { "version": "1.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", + "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", "engines": { "node": ">=6" } }, "node_modules/split2": { "version": "4.2.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", "engines": { "node": ">= 10.x" } }, "node_modules/sprintf-js": { "version": "1.0.3", - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" }, "node_modules/stacktrace-parser": { "version": "0.1.10", - "license": "MIT", + "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", + "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", "dependencies": { "type-fest": "^0.7.1" }, @@ -12977,46 +15171,55 @@ }, "node_modules/stacktrace-parser/node_modules/type-fest": { "version": "0.7.1", - "license": "(MIT OR CC0-1.0)", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", + "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", "engines": { "node": ">=8" } }, "node_modules/standard-as-callback": { "version": "2.1.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz", + "integrity": "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==" }, "node_modules/statuses": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "engines": { "node": ">= 0.8" } }, "node_modules/std-env": { "version": "3.7.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz", + "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==" }, "node_modules/stream-shift": { "version": "1.0.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", + "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==" }, "node_modules/strict-uri-encode": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", + "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==", "engines": { "node": ">=4" } }, "node_modules/string_decoder": { "version": "1.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dependencies": { "safe-buffer": "~5.2.0" } }, "node_modules/string_decoder/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", @@ -13030,16 +15233,17 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "node_modules/string-format": { "version": "2.0.0", - "license": "WTFPL OR MIT" + "resolved": "https://registry.npmjs.org/string-format/-/string-format-2.0.0.tgz", + "integrity": "sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==" }, "node_modules/string-width": { "version": "4.2.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -13066,8 +15270,9 @@ }, "node_modules/string.prototype.trim": { "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -13082,8 +15287,9 @@ }, "node_modules/string.prototype.trimend": { "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -13095,8 +15301,9 @@ }, "node_modules/string.prototype.trimstart": { "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -13108,7 +15315,8 @@ }, "node_modules/strip-ansi": { "version": "6.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -13131,15 +15339,17 @@ }, "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==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/strip-final-newline": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", "engines": { "node": ">=12" }, @@ -13149,7 +15359,8 @@ }, "node_modules/strip-hex-prefix": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", + "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==", "dependencies": { "is-hex-prefixed": "1.0.0" }, @@ -13160,7 +15371,8 @@ }, "node_modules/strip-json-comments": { "version": "3.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "engines": { "node": ">=8" }, @@ -13170,18 +15382,21 @@ }, "node_modules/sturdy-websocket": { "version": "0.2.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/sturdy-websocket/-/sturdy-websocket-0.2.1.tgz", + "integrity": "sha512-NnzSOEKyv4I83qbuKw9ROtJrrT6Z/Xt7I0HiP/e6H6GnpeTDvzwGIGeJ8slai+VwODSHQDooW2CAilJwT9SpRg==" }, "node_modules/superstruct": { "version": "1.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-1.0.3.tgz", + "integrity": "sha512-8iTn3oSS8nRGn+C2pgXSKPI3jmpm6FExNazNpjvqS6ZUJQCej3PUXEKM8NjHBOs54ExM+LPW/FBRhymrdcCiSg==", "engines": { "node": ">=14.0.0" } }, "node_modules/supports-color": { "version": "5.5.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dependencies": { "has-flag": "^3.0.0" }, @@ -13191,8 +15406,9 @@ }, "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" }, @@ -13202,7 +15418,8 @@ }, "node_modules/sync-request": { "version": "6.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/sync-request/-/sync-request-6.1.0.tgz", + "integrity": "sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw==", "dependencies": { "http-response-object": "^3.0.1", "sync-rpc": "^1.2.1", @@ -13214,15 +15431,17 @@ }, "node_modules/sync-rpc": { "version": "1.3.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/sync-rpc/-/sync-rpc-1.3.6.tgz", + "integrity": "sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw==", "dependencies": { "get-port": "^3.1.0" } }, "node_modules/synckit": { "version": "0.8.8", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.8.tgz", + "integrity": "sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==", "dev": true, - "license": "MIT", "dependencies": { "@pkgr/core": "^0.1.0", "tslib": "^2.6.2" @@ -13236,12 +15455,14 @@ }, "node_modules/synckit/node_modules/tslib": { "version": "2.6.2", - "dev": true, - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/system-architecture": { "version": "0.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/system-architecture/-/system-architecture-0.1.0.tgz", + "integrity": "sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==", "engines": { "node": ">=18" }, @@ -13251,7 +15472,8 @@ }, "node_modules/table": { "version": "6.8.1", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", + "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", "dependencies": { "ajv": "^8.0.1", "lodash.truncate": "^4.4.2", @@ -13265,7 +15487,8 @@ }, "node_modules/table-layout": { "version": "1.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz", + "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==", "dependencies": { "array-back": "^4.0.1", "deep-extend": "~0.6.0", @@ -13278,21 +15501,24 @@ }, "node_modules/table-layout/node_modules/array-back": { "version": "4.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", "engines": { "node": ">=8" } }, "node_modules/table-layout/node_modules/typical": { "version": "5.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", "engines": { "node": ">=8" } }, "node_modules/table/node_modules/ajv": { "version": "8.12.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -13306,16 +15532,19 @@ }, "node_modules/table/node_modules/json-schema-traverse": { "version": "1.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" }, "node_modules/text-table": { "version": "0.2.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true }, "node_modules/then-request": { "version": "6.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/then-request/-/then-request-6.0.2.tgz", + "integrity": "sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA==", "dependencies": { "@types/concat-stream": "^1.6.0", "@types/form-data": "0.0.33", @@ -13335,11 +15564,13 @@ }, "node_modules/then-request/node_modules/@types/node": { "version": "8.10.66", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz", + "integrity": "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==" }, "node_modules/then-request/node_modules/form-data": { "version": "2.5.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -13351,14 +15582,16 @@ }, "node_modules/thread-stream": { "version": "0.15.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-0.15.2.tgz", + "integrity": "sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==", "dependencies": { "real-require": "^0.1.0" } }, "node_modules/tmp": { "version": "0.0.33", - "license": "MIT", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dependencies": { "os-tmpdir": "~1.0.2" }, @@ -13368,7 +15601,8 @@ }, "node_modules/to-regex-range": { "version": "5.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dependencies": { "is-number": "^7.0.0" }, @@ -13378,19 +15612,22 @@ }, "node_modules/toidentifier": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "engines": { "node": ">=0.6" } }, "node_modules/tr46": { "version": "0.0.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, "node_modules/ts-api-utils": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.2.1.tgz", + "integrity": "sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==", "dev": true, - "license": "MIT", "engines": { "node": ">=16" }, @@ -13400,7 +15637,8 @@ }, "node_modules/ts-command-line-args": { "version": "2.5.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/ts-command-line-args/-/ts-command-line-args-2.5.1.tgz", + "integrity": "sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw==", "dependencies": { "chalk": "^4.1.0", "command-line-args": "^5.1.1", @@ -13413,7 +15651,8 @@ }, "node_modules/ts-command-line-args/node_modules/ansi-styles": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { "color-convert": "^2.0.1" }, @@ -13426,7 +15665,8 @@ }, "node_modules/ts-command-line-args/node_modules/chalk": { "version": "4.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -13440,7 +15680,8 @@ }, "node_modules/ts-command-line-args/node_modules/color-convert": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { "color-name": "~1.1.4" }, @@ -13450,18 +15691,21 @@ }, "node_modules/ts-command-line-args/node_modules/color-name": { "version": "1.1.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/ts-command-line-args/node_modules/has-flag": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "engines": { "node": ">=8" } }, "node_modules/ts-command-line-args/node_modules/supports-color": { "version": "7.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dependencies": { "has-flag": "^4.0.0" }, @@ -13471,14 +15715,16 @@ }, "node_modules/ts-essentials": { "version": "7.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-7.0.3.tgz", + "integrity": "sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==", "peerDependencies": { "typescript": ">=3.7.0" } }, "node_modules/ts-node": { "version": "10.9.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "dependencies": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", @@ -13519,15 +15765,17 @@ }, "node_modules/ts-node/node_modules/diff": { "version": "4.0.2", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "engines": { "node": ">=0.3.1" } }, "node_modules/tsconfig-paths": { "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", "json5": "^1.0.2", @@ -13537,16 +15785,19 @@ }, "node_modules/tslib": { "version": "1.14.1", - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/tsort": { "version": "0.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/tsort/-/tsort-0.0.1.tgz", + "integrity": "sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==" }, "node_modules/tsx": { "version": "4.7.1", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.7.1.tgz", + "integrity": "sha512-8d6VuibXHtlN5E3zFkgY8u4DX7Y3Z27zvvPKVmLon/D4AjuKzarkUBTLDBgj9iTQ0hg5xM7c/mYiRVM+HETf0g==", "dev": true, - "license": "MIT", "dependencies": { "esbuild": "~0.19.10", "get-tsconfig": "^4.7.2" @@ -13563,20 +15814,24 @@ }, "node_modules/tweetnacl": { "version": "1.0.3", - "license": "Unlicense" + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" }, "node_modules/tweetnacl-util": { "version": "0.15.1", - "license": "Unlicense" + "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", + "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==" }, "node_modules/type": { "version": "1.2.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" }, "node_modules/type-check": { "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" }, @@ -13586,14 +15841,16 @@ }, "node_modules/type-detect": { "version": "4.0.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "engines": { "node": ">=4" } }, "node_modules/type-fest": { "version": "0.21.3", - "license": "(MIT OR CC0-1.0)", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "engines": { "node": ">=10" }, @@ -13603,7 +15860,8 @@ }, "node_modules/typechain": { "version": "8.3.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/typechain/-/typechain-8.3.2.tgz", + "integrity": "sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q==", "dependencies": { "@types/prettier": "^2.1.1", "debug": "^4.3.1", @@ -13625,7 +15883,8 @@ }, "node_modules/typechain/node_modules/glob": { "version": "7.1.7", - "license": "ISC", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -13643,7 +15902,8 @@ }, "node_modules/typechain/node_modules/mkdirp": { "version": "1.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "bin": { "mkdirp": "bin/cmd.js" }, @@ -13653,7 +15913,8 @@ }, "node_modules/typechain/node_modules/prettier": { "version": "2.8.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "bin": { "prettier": "bin-prettier.js" }, @@ -13666,8 +15927,9 @@ }, "node_modules/typed-array-buffer": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.1", @@ -13679,8 +15941,9 @@ }, "node_modules/typed-array-byte-length": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "for-each": "^0.3.3", @@ -13696,8 +15959,9 @@ }, "node_modules/typed-array-byte-offset": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", "dev": true, - "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", @@ -13714,8 +15978,9 @@ }, "node_modules/typed-array-length": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "for-each": "^0.3.3", @@ -13727,18 +15992,21 @@ }, "node_modules/typedarray": { "version": "0.0.6", - "license": "MIT" + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", "dependencies": { "is-typedarray": "^1.0.0" } }, "node_modules/typescript": { "version": "5.3.3", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -13749,18 +16017,21 @@ }, "node_modules/typical": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", + "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", "engines": { "node": ">=8" } }, "node_modules/ufo": { "version": "1.4.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.4.0.tgz", + "integrity": "sha512-Hhy+BhRBleFjpJ2vchUNN40qgkh0366FWJGqVLYBHev0vpHTrXSA0ryT+74UiW6KWsldNurQMKGqCm1M2zBciQ==" }, "node_modules/uglify-js": { "version": "3.17.4", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", "optional": true, "peer": true, "bin": { @@ -13772,15 +16043,17 @@ }, "node_modules/uint8arrays": { "version": "3.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", + "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", "dependencies": { "multiformats": "^9.4.2" } }, "node_modules/unbox-primitive": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-bigints": "^1.0.2", @@ -13793,11 +16066,13 @@ }, "node_modules/uncrypto": { "version": "0.1.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/uncrypto/-/uncrypto-0.1.3.tgz", + "integrity": "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==" }, "node_modules/undici": { "version": "5.28.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.3.tgz", + "integrity": "sha512-3ItfzbrhDlINjaP0duwnNsKpDQk3acHI3gVJ1z4fmwMK31k5G9OVIAMLSIaP6w4FaGkaAkN6zaQO9LUvZ1t7VA==", "dependencies": { "@fastify/busboy": "^2.0.0" }, @@ -13807,11 +16082,13 @@ }, "node_modules/undici-types": { "version": "5.26.5", - "license": "MIT" + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" }, "node_modules/unenv": { "version": "1.9.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/unenv/-/unenv-1.9.0.tgz", + "integrity": "sha512-QKnFNznRxmbOF1hDgzpqrlIf6NC5sbZ2OJ+5Wl3OX8uM+LUJXbj4TXvLJCtwbPTmbMHCLIz6JLKNinNsMShK9g==", "dependencies": { "consola": "^3.2.3", "defu": "^6.1.3", @@ -13822,25 +16099,29 @@ }, "node_modules/unfetch": { "version": "4.2.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.2.0.tgz", + "integrity": "sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==" }, "node_modules/universalify": { "version": "0.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "engines": { "node": ">= 4.0.0" } }, "node_modules/unpipe": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "engines": { "node": ">= 0.8" } }, "node_modules/unstorage": { "version": "1.10.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.10.1.tgz", + "integrity": "sha512-rWQvLRfZNBpF+x8D3/gda5nUCQL2PgXy2jNG4U7/Rc9BGEv9+CAJd0YyGCROUBKs9v49Hg8huw3aih5Bf5TAVw==", "dependencies": { "anymatch": "^3.1.3", "chokidar": "^3.5.3", @@ -13909,7 +16190,8 @@ }, "node_modules/untun": { "version": "0.1.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/untun/-/untun-0.1.3.tgz", + "integrity": "sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ==", "dependencies": { "citty": "^0.1.5", "consola": "^3.2.3", @@ -13921,26 +16203,30 @@ }, "node_modules/uqr": { "version": "0.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/uqr/-/uqr-0.1.2.tgz", + "integrity": "sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==" }, "node_modules/uri-js": { "version": "4.4.1", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dependencies": { "punycode": "^2.1.0" } }, "node_modules/use-sync-external-store": { "version": "1.2.0", - "license": "MIT", - "peerDependencies": { + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, "node_modules/utf-8-validate": { "version": "5.0.10", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", + "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", "hasInstallScript": true, - "license": "MIT", "dependencies": { "node-gyp-build": "^4.3.0" }, @@ -13950,26 +16236,31 @@ }, "node_modules/utf8": { "version": "3.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", + "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==" }, "node_modules/util-deprecate": { "version": "1.0.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "node_modules/uuid": { "version": "8.3.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "bin": { "uuid": "dist/bin/uuid" } }, "node_modules/v8-compile-cache-lib": { "version": "3.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==" }, "node_modules/valtio": { "version": "1.11.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/valtio/-/valtio-1.11.2.tgz", + "integrity": "sha512-1XfIxnUXzyswPAPXo1P3Pdx2mq/pIqZICkWN60Hby0d9Iqb+MEIpqgYVlbflvHdrp2YR/q3jyKWRPJJ100yxaw==", "dependencies": { "proxy-compare": "2.5.1", "use-sync-external-store": "1.2.0" @@ -13992,13 +16283,14 @@ }, "node_modules/viem": { "version": "1.21.4", + "resolved": "https://registry.npmjs.org/viem/-/viem-1.21.4.tgz", + "integrity": "sha512-BNVYdSaUjeS2zKQgPs+49e5JKocfo60Ib2yiXOWBT6LuVxY1I/6fFX3waEtpXvL1Xn4qu+BVitVtMh9lyThyhQ==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/wevm" } ], - "license": "MIT", "dependencies": { "@adraffy/ens-normalize": "1.10.0", "@noble/curves": "1.2.0", @@ -14020,7 +16312,8 @@ }, "node_modules/viem/node_modules/@noble/curves": { "version": "1.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", "dependencies": { "@noble/hashes": "1.3.2" }, @@ -14030,7 +16323,8 @@ }, "node_modules/viem/node_modules/@noble/hashes": { "version": "1.3.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", "engines": { "node": ">= 16" }, @@ -14040,7 +16334,8 @@ }, "node_modules/viem/node_modules/@scure/bip32": { "version": "1.3.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.2.tgz", + "integrity": "sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA==", "dependencies": { "@noble/curves": "~1.2.0", "@noble/hashes": "~1.3.2", @@ -14052,7 +16347,8 @@ }, "node_modules/viem/node_modules/@scure/bip39": { "version": "1.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.1.tgz", + "integrity": "sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==", "dependencies": { "@noble/hashes": "~1.3.0", "@scure/base": "~1.1.0" @@ -14063,13 +16359,14 @@ }, "node_modules/viem/node_modules/abitype": { "version": "0.9.8", + "resolved": "https://registry.npmjs.org/abitype/-/abitype-0.9.8.tgz", + "integrity": "sha512-puLifILdm+8sjyss4S+fsUN09obiT1g2YW6CtcQF+QDzxR0euzgEB29MZujC6zMk2a6SVmtttq1fc6+YFA7WYQ==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/wagmi-dev" } ], - "license": "MIT", "peerDependencies": { "typescript": ">=5.0.4", "zod": "^3 >=3.19.1" @@ -14085,7 +16382,8 @@ }, "node_modules/viem/node_modules/ws": { "version": "8.13.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", "engines": { "node": ">=10.0.0" }, @@ -14104,8 +16402,9 @@ }, "node_modules/vite": { "version": "5.1.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.3.tgz", + "integrity": "sha512-UfmUD36DKkqhi/F75RrxvPpry+9+tTkrXfMNZD+SboZqBCMsxKtO52XeGzzuh7ioz+Eo/SYDBbdb0Z7vgcDJew==", "dev": true, - "license": "MIT", "dependencies": { "esbuild": "^0.19.3", "postcss": "^8.4.35", @@ -14158,7 +16457,8 @@ }, "node_modules/vue": { "version": "3.4.19", - "license": "MIT", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.19.tgz", + "integrity": "sha512-W/7Fc9KUkajFU8dBeDluM4sRGc/aa4YJnOYck8dkjgZoXtVsn3OeTGni66FV1l3+nvPA7VBFYtPioaGKUmEADw==", "dependencies": { "@vue/compiler-dom": "3.4.19", "@vue/compiler-sfc": "3.4.19", @@ -14177,7 +16477,8 @@ }, "node_modules/web3-utils": { "version": "1.10.3", - "license": "LGPL-3.0", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.3.tgz", + "integrity": "sha512-OqcUrEE16fDBbGoQtZXWdavsPzbGIDc5v3VrRTZ0XrIpefC/viZ1ZU9bGEemazyS0catk/3rkOOxpzTfY+XsyQ==", "dependencies": { "@ethereumjs/util": "^8.1.0", "bn.js": "^5.2.1", @@ -14194,7 +16495,8 @@ }, "node_modules/web3-utils/node_modules/@noble/curves": { "version": "1.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.1.0.tgz", + "integrity": "sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==", "dependencies": { "@noble/hashes": "1.3.1" }, @@ -14204,7 +16506,8 @@ }, "node_modules/web3-utils/node_modules/@noble/hashes": { "version": "1.3.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", + "integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==", "engines": { "node": ">= 16" }, @@ -14214,7 +16517,8 @@ }, "node_modules/web3-utils/node_modules/@scure/bip32": { "version": "1.3.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.1.tgz", + "integrity": "sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A==", "dependencies": { "@noble/curves": "~1.1.0", "@noble/hashes": "~1.3.1", @@ -14226,7 +16530,8 @@ }, "node_modules/web3-utils/node_modules/@scure/bip39": { "version": "1.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.1.tgz", + "integrity": "sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==", "dependencies": { "@noble/hashes": "~1.3.0", "@scure/base": "~1.1.0" @@ -14237,7 +16542,8 @@ }, "node_modules/web3-utils/node_modules/ethereum-cryptography": { "version": "2.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.1.2.tgz", + "integrity": "sha512-Z5Ba0T0ImZ8fqXrJbpHcbpAvIswRte2wGNR/KePnu8GbbvgJ47lMxT/ZZPG6i9Jaht4azPDop4HaM00J0J59ug==", "dependencies": { "@noble/curves": "1.1.0", "@noble/hashes": "1.3.1", @@ -14247,11 +16553,13 @@ }, "node_modules/webidl-conversions": { "version": "3.0.1", - "license": "BSD-2-Clause" + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, "node_modules/websocket": { "version": "1.0.34", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", + "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", "dependencies": { "bufferutil": "^4.0.1", "debug": "^2.2.0", @@ -14266,18 +16574,21 @@ }, "node_modules/websocket/node_modules/debug": { "version": "2.6.9", - "license": "MIT", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dependencies": { "ms": "2.0.0" } }, "node_modules/websocket/node_modules/ms": { "version": "2.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/whatwg-url": { "version": "5.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -14285,7 +16596,8 @@ }, "node_modules/which": { "version": "2.0.2", - "license": "ISC", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dependencies": { "isexe": "^2.0.0" }, @@ -14298,8 +16610,9 @@ }, "node_modules/which-boxed-primitive": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "dev": true, - "license": "MIT", "dependencies": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -14313,12 +16626,14 @@ }, "node_modules/which-module": { "version": "2.0.1", - "license": "ISC" + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==" }, "node_modules/which-typed-array": { "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", "dev": true, - "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.4", @@ -14335,7 +16650,8 @@ }, "node_modules/widest-line": { "version": "3.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", "dependencies": { "string-width": "^4.0.0" }, @@ -14345,18 +16661,21 @@ }, "node_modules/word-wrap": { "version": "1.2.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "engines": { "node": ">=0.10.0" } }, "node_modules/wordwrap": { "version": "1.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==" }, "node_modules/wordwrapjs": { "version": "4.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", + "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", "dependencies": { "reduce-flatten": "^2.0.0", "typical": "^5.2.0" @@ -14367,18 +16686,21 @@ }, "node_modules/wordwrapjs/node_modules/typical": { "version": "5.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", "engines": { "node": ">=8" } }, "node_modules/workerpool": { "version": "6.2.1", - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==" }, "node_modules/wrap-ansi": { "version": "7.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -14444,7 +16766,8 @@ }, "node_modules/wrap-ansi/node_modules/ansi-styles": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { "color-convert": "^2.0.1" }, @@ -14457,7 +16780,8 @@ }, "node_modules/wrap-ansi/node_modules/color-convert": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { "color-name": "~1.1.4" }, @@ -14467,15 +16791,18 @@ }, "node_modules/wrap-ansi/node_modules/color-name": { "version": "1.1.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/wrappy": { "version": "1.0.2", - "license": "ISC" + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/ws": { "version": "7.5.9", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", "engines": { "node": ">=8.3.0" }, @@ -14494,32 +16821,37 @@ }, "node_modules/xtend": { "version": "4.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "engines": { "node": ">=0.4" } }, "node_modules/y18n": { "version": "5.0.8", - "license": "ISC", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "engines": { "node": ">=10" } }, "node_modules/yaeti": { "version": "0.0.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", + "integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==", "engines": { "node": ">=0.10.32" } }, "node_modules/yallist": { "version": "4.0.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/yargs": { "version": "16.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -14535,14 +16867,16 @@ }, "node_modules/yargs-parser": { "version": "20.2.4", - "license": "ISC", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", "engines": { "node": ">=10" } }, "node_modules/yargs-unparser": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", "dependencies": { "camelcase": "^6.0.0", "decamelize": "^4.0.0", @@ -14555,14 +16889,16 @@ }, "node_modules/yn": { "version": "3.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", "engines": { "node": ">=6" } }, "node_modules/yocto-queue": { "version": "0.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "engines": { "node": ">=10" }, @@ -14572,7 +16908,8 @@ }, "node_modules/zksync-ethers": { "version": "5.4.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/zksync-ethers/-/zksync-ethers-5.4.0.tgz", + "integrity": "sha512-UG6czQ/xGqe7iv/Pvs3r1W/ardflSUyCZ5ZbpINNunFArxVEPVobjNLNIJjD0ZRFnEi8LGXSnBPmBnurwk4FRQ==", "dependencies": { "ethers": "~5.7.0" }, @@ -14582,6 +16919,8 @@ }, "node_modules/zksync-ethers/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", @@ -14592,7 +16931,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/abi": "^5.7.0", "@ethersproject/abstract-provider": "^5.7.0", @@ -14608,6 +16946,8 @@ }, "node_modules/zksync-ethers/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", @@ -14618,7 +16958,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/abstract-signer": "^5.7.0", "@ethersproject/basex": "^5.7.0", @@ -14636,6 +16975,8 @@ }, "node_modules/zksync-ethers/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", @@ -14646,7 +16987,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/abstract-signer": "^5.7.0", "@ethersproject/address": "^5.7.0", @@ -14665,6 +17005,8 @@ }, "node_modules/zksync-ethers/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", @@ -14675,7 +17017,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/sha2": "^5.7.0" @@ -14683,6 +17024,8 @@ }, "node_modules/zksync-ethers/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", @@ -14693,7 +17036,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/bignumber": "^5.7.0", "@ethersproject/bytes": "^5.7.0", @@ -14705,6 +17047,8 @@ }, "node_modules/zksync-ethers/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", @@ -14715,7 +17059,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/bignumber": "^5.7.0", "@ethersproject/constants": "^5.7.0", @@ -14724,6 +17067,8 @@ }, "node_modules/zksync-ethers/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", @@ -14734,7 +17079,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/abstract-provider": "^5.7.0", "@ethersproject/abstract-signer": "^5.7.0", @@ -14755,6 +17099,8 @@ }, "node_modules/zksync-ethers/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", @@ -14765,7 +17111,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/hash": "^5.7.0", @@ -14776,10 +17121,13 @@ }, "node_modules/zksync-ethers/node_modules/aes-js": { "version": "3.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==" }, "node_modules/zksync-ethers/node_modules/ethers": { "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", "funding": [ { "type": "individual", @@ -14790,7 +17138,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/abi": "5.7.0", "@ethersproject/abstract-provider": "5.7.0", @@ -14826,7 +17173,8 @@ }, "node_modules/zod": { "version": "3.22.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz", + "integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==", "funding": { "url": "https://github.com/sponsors/colinhacks" } @@ -15292,7 +17640,6 @@ "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==", - "dev": true, "requires": { "@jridgewell/trace-mapping": "0.3.9" } @@ -16010,8 +18357,7 @@ "@fastify/busboy": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.0.tgz", - "integrity": "sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==", - "dev": true + "integrity": "sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==" }, "@gelatonetwork/relay-sdk": { "version": "5.5.6", @@ -16194,8 +18540,7 @@ "@jridgewell/resolve-uri": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "dev": true + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==" }, "@jridgewell/sourcemap-codec": { "version": "1.4.15", @@ -16206,12 +18551,17 @@ "version": "0.3.9", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, "requires": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "@levischuck/tiny-cbor": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@levischuck/tiny-cbor/-/tiny-cbor-0.2.2.tgz", + "integrity": "sha512-f5CnPw997Y2GQ8FAvtuVVC19FX8mwNNC+1XJcIi16n/LTJifKO6QBgGLgN3YEmqtGMk17SKSuoWES3imJVxAVw==", + "dev": true + }, "@lit-labs/ssr-dom-shim": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.2.0.tgz", @@ -16239,7 +18589,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz", "integrity": "sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==", - "dev": true, "requires": { "ethereumjs-abi": "^0.6.8", "ethereumjs-util": "^6.2.1", @@ -16521,20 +18870,17 @@ "@noble/hashes": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", - "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", - "dev": true + "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==" }, "@noble/secp256k1": { "version": "1.7.1", "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz", - "integrity": "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==", - "dev": true + "integrity": "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==" }, "@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, "requires": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -16543,29 +18889,107 @@ "@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 + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" }, "@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, "requires": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, - "@nomicfoundation/ethereumjs-block": { + "@nomicfoundation/edr": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr/-/edr-0.3.2.tgz", + "integrity": "sha512-HGWtjibAK1mo4I2A7nJ/fXqe/J9G54OrSPJnnkY2K8TiXotYLShGd9GvHkae3PuFjTJKm6ZgBy7tveJj5yrCfw==", + "requires": { + "@nomicfoundation/edr-darwin-arm64": "0.3.2", + "@nomicfoundation/edr-darwin-x64": "0.3.2", + "@nomicfoundation/edr-linux-arm64-gnu": "0.3.2", + "@nomicfoundation/edr-linux-arm64-musl": "0.3.2", + "@nomicfoundation/edr-linux-x64-gnu": "0.3.2", + "@nomicfoundation/edr-linux-x64-musl": "0.3.2", + "@nomicfoundation/edr-win32-arm64-msvc": "0.3.2", + "@nomicfoundation/edr-win32-ia32-msvc": "0.3.2", + "@nomicfoundation/edr-win32-x64-msvc": "0.3.2" + } + }, + "@nomicfoundation/edr-darwin-arm64": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-arm64/-/edr-darwin-arm64-0.3.2.tgz", + "integrity": "sha512-l6wfSBUUbGJiCENT6272CDI8yoMuf0sZH56H5qz3HnAyVzenkOvmzyF6/lar54m986kdAQqWls4cLvDxiOuLxg==", + "optional": true + }, + "@nomicfoundation/edr-darwin-x64": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-x64/-/edr-darwin-x64-0.3.2.tgz", + "integrity": "sha512-OboExL7vEw+TRJQl3KkaEKU4K7PTdZPTInZ0fxMAtOpcWp7EKR+dQo68vc/iAOusB3xszHKxt7t+WpisItfdcg==", + "optional": true + }, + "@nomicfoundation/edr-linux-arm64-gnu": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-gnu/-/edr-linux-arm64-gnu-0.3.2.tgz", + "integrity": "sha512-xtEK+1eg++3pHi6405NDXd80S3CGOFEGQIyVGCwjMGQFOLSzBGGCsrb/0GB4J19zd1o/8ftCd/HjZcbVAWWTLQ==", + "optional": true + }, + "@nomicfoundation/edr-linux-arm64-musl": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-musl/-/edr-linux-arm64-musl-0.3.2.tgz", + "integrity": "sha512-3cIsskJOXQ1yEVsImmCacY7O03tUTiWrmd54F05PnPFrDLkjbzodQ3b2gUWzfbzUZWl67ZTJd1CvVSzpe7XGzw==", + "optional": true + }, + "@nomicfoundation/edr-linux-x64-gnu": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-gnu/-/edr-linux-x64-gnu-0.3.2.tgz", + "integrity": "sha512-ouPdphHNsyO7wqwa4hwahC5WqBglK/fIvMmhR/SXNZ9qruIpsA8ZZKIURaHMOv/2h2BbNGcyTX9uEk6+5rK/MQ==", + "optional": true + }, + "@nomicfoundation/edr-linux-x64-musl": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-musl/-/edr-linux-x64-musl-0.3.2.tgz", + "integrity": "sha512-sRhwhiPbkpJMOUwXW1FZw9ks6xWyQhIhM0E8o3TXEXKSPKTE6whQLEk1R37iFITaI36vb6rSwLKTU1cb32gCoA==", + "optional": true + }, + "@nomicfoundation/edr-win32-arm64-msvc": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-win32-arm64-msvc/-/edr-win32-arm64-msvc-0.3.2.tgz", + "integrity": "sha512-IEwVealKfumu1HSSnama26yPuQC/uthRPK5IWtFsQUOGwOXaS1r9Bu7cGYH2jBHl3IT/JbxD4xzPq/2pM9uK0A==", + "optional": true + }, + "@nomicfoundation/edr-win32-ia32-msvc": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-win32-ia32-msvc/-/edr-win32-ia32-msvc-0.3.2.tgz", + "integrity": "sha512-jYMnf6SFgguqROswwdsjJ1wvneD/5c16pVu9OD4DxNqhKNP5bHEw6L2N4DcJ89tpXMpJ6AlOpc0QuwzddiZ3tA==", + "optional": true + }, + "@nomicfoundation/edr-win32-x64-msvc": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-win32-x64-msvc/-/edr-win32-x64-msvc-0.3.2.tgz", + "integrity": "sha512-Byn4QuWczRy/DUUQM3WjglgX/jGVUURVFaUsmIhnGg//MPlCLawubBGRqsrMuvaYedlIIJ4I2rgKvZlxdgHrqg==", + "optional": true + }, + "@nomicfoundation/ethereumjs-common": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.4.tgz", + "integrity": "sha512-9Rgb658lcWsjiicr5GzNCjI1llow/7r0k50dLL95OJ+6iZJcVbi15r3Y0xh2cIO+zgX0WIHcbzIu6FeQf9KPrg==", + "requires": { + "@nomicfoundation/ethereumjs-util": "9.0.4" + } + }, + "@nomicfoundation/ethereumjs-rlp": { "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-5.0.4.tgz", - "integrity": "sha512-AcyacJ9eX/uPEvqsPiB+WO1ymE+kyH48qGGiGV+YTojdtas8itUTW5dehDSOXEEItWGbbzEJ4PRqnQZlWaPvDw==", - "dev": true, + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.4.tgz", + "integrity": "sha512-8H1S3s8F6QueOc/X92SdrA4RDenpiAEqMg5vJH99kcQaCy/a3Q6fgseo75mgWlbanGJXSlAPtnCeG9jvfTYXlw==" + }, + "@nomicfoundation/ethereumjs-tx": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.4.tgz", + "integrity": "sha512-Xjv8wAKJGMrP1f0n2PeyfFCCojHd7iS3s/Ab7qzF1S64kxZ8Z22LCMynArYsVqiFx6rzYy548HNVEyI+AYN/kw==", "requires": { "@nomicfoundation/ethereumjs-common": "4.0.4", "@nomicfoundation/ethereumjs-rlp": "5.0.4", - "@nomicfoundation/ethereumjs-trie": "6.0.4", - "@nomicfoundation/ethereumjs-tx": "5.0.4", "@nomicfoundation/ethereumjs-util": "9.0.4", "ethereum-cryptography": "0.1.3" }, @@ -16574,7 +18998,6 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, "requires": { "@types/pbkdf2": "^3.0.0", "@types/secp256k1": "^4.0.1", @@ -16595,29 +19018,19 @@ } } }, - "@nomicfoundation/ethereumjs-blockchain": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-7.0.4.tgz", - "integrity": "sha512-jYsd/kwzbmpnxx86tXsYV8wZ5xGvFL+7/P0c6OlzpClHsbFzeF41KrYA9scON8Rg6bZu3ZTv6JOAgj3t7USUfg==", - "dev": true, + "@nomicfoundation/ethereumjs-util": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.4.tgz", + "integrity": "sha512-sLOzjnSrlx9Bb9EFNtHzK/FJFsfg2re6bsGqinFinH1gCqVfz9YYlXiMWwDM4C/L4ywuHFCYwfKTVr/QHQcU0Q==", "requires": { - "@nomicfoundation/ethereumjs-block": "5.0.4", - "@nomicfoundation/ethereumjs-common": "4.0.4", - "@nomicfoundation/ethereumjs-ethash": "3.0.4", "@nomicfoundation/ethereumjs-rlp": "5.0.4", - "@nomicfoundation/ethereumjs-trie": "6.0.4", - "@nomicfoundation/ethereumjs-tx": "5.0.4", - "@nomicfoundation/ethereumjs-util": "9.0.4", - "debug": "^4.3.3", - "ethereum-cryptography": "0.1.3", - "lru-cache": "^10.0.0" + "ethereum-cryptography": "0.1.3" }, "dependencies": { "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==", - "dev": true, "requires": { "@types/pbkdf2": "^3.0.0", "@types/secp256k1": "^4.0.1", @@ -16638,33 +19051,18 @@ } } }, - "@nomicfoundation/ethereumjs-common": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.4.tgz", - "integrity": "sha512-9Rgb658lcWsjiicr5GzNCjI1llow/7r0k50dLL95OJ+6iZJcVbi15r3Y0xh2cIO+zgX0WIHcbzIu6FeQf9KPrg==", - "dev": true, - "requires": { - "@nomicfoundation/ethereumjs-util": "9.0.4" - } - }, - "@nomicfoundation/ethereumjs-ethash": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-3.0.4.tgz", - "integrity": "sha512-xvIrwIMl9sSaiYKRem68+O7vYdj7Q2XWv5P7JXiIkn83918QzWHvqbswTRsH7+r6X1UEvdsURRnZbvZszEjAaQ==", - "dev": true, + "@nomicfoundation/hardhat-network-helpers": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-network-helpers/-/hardhat-network-helpers-1.0.10.tgz", + "integrity": "sha512-R35/BMBlx7tWN5V6d/8/19QCwEmIdbnA4ZrsuXgvs8i2qFx5i7h6mH5pBS4Pwi4WigLH+upl6faYusrNPuzMrQ==", "requires": { - "@nomicfoundation/ethereumjs-block": "5.0.4", - "@nomicfoundation/ethereumjs-rlp": "5.0.4", - "@nomicfoundation/ethereumjs-util": "9.0.4", - "bigint-crypto-utils": "^3.2.2", - "ethereum-cryptography": "0.1.3" + "ethereumjs-util": "^7.1.4" }, "dependencies": { "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==", - "dev": true, "requires": { "@types/pbkdf2": "^3.0.0", "@types/secp256k1": "^4.0.1", @@ -16682,913 +19080,924 @@ "secp256k1": "^4.0.1", "setimmediate": "^1.0.5" } + }, + "ethereumjs-util": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", + "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", + "requires": { + "@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" + } } } }, - "@nomicfoundation/ethereumjs-evm": { + "@nomicfoundation/hardhat-verify": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-2.0.4.tgz", - "integrity": "sha512-lTyZZi1KpeMHzaO6cSVisR2tjiTTedjo7PcmhI/+GNFo9BmyY6QYzGeSti0sFttmjbEMioHgXxl5yrLNRg6+1w==", - "dev": true, + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-verify/-/hardhat-verify-2.0.4.tgz", + "integrity": "sha512-B8ZjhOrmbbRWqJi65jvQblzjsfYktjqj2vmOm+oc2Vu8drZbT2cjeSCRHZKbS7lOtfW78aJZSFvw+zRLCiABJA==", "requires": { - "@nomicfoundation/ethereumjs-common": "4.0.4", - "@nomicfoundation/ethereumjs-statemanager": "2.0.4", - "@nomicfoundation/ethereumjs-tx": "5.0.4", - "@nomicfoundation/ethereumjs-util": "9.0.4", - "@types/debug": "^4.1.9", - "debug": "^4.3.3", - "ethereum-cryptography": "0.1.3", - "rustbn-wasm": "^0.2.0" + "@ethersproject/abi": "^5.1.2", + "@ethersproject/address": "^5.0.2", + "cbor": "^8.1.0", + "chalk": "^2.4.2", + "debug": "^4.1.1", + "lodash.clonedeep": "^4.5.0", + "semver": "^6.3.0", + "table": "^6.8.0", + "undici": "^5.14.0" }, "dependencies": { - "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==", - "dev": true, + "cbor": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/cbor/-/cbor-8.1.0.tgz", + "integrity": "sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==", "requires": { - "@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" + "nofilter": "^3.1.0" } } } }, - "@nomicfoundation/ethereumjs-rlp": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.4.tgz", - "integrity": "sha512-8H1S3s8F6QueOc/X92SdrA4RDenpiAEqMg5vJH99kcQaCy/a3Q6fgseo75mgWlbanGJXSlAPtnCeG9jvfTYXlw==", + "@nomicfoundation/solidity-analyzer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.1.tgz", + "integrity": "sha512-1LMtXj1puAxyFusBgUIy5pZk3073cNXYnXUpuNKFghHbIit/xZgbk0AokpUADbNm3gyD6bFWl3LRFh3dhVdREg==", + "requires": { + "@nomicfoundation/solidity-analyzer-darwin-arm64": "0.1.1", + "@nomicfoundation/solidity-analyzer-darwin-x64": "0.1.1", + "@nomicfoundation/solidity-analyzer-freebsd-x64": "0.1.1", + "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": "0.1.1", + "@nomicfoundation/solidity-analyzer-linux-arm64-musl": "0.1.1", + "@nomicfoundation/solidity-analyzer-linux-x64-gnu": "0.1.1", + "@nomicfoundation/solidity-analyzer-linux-x64-musl": "0.1.1", + "@nomicfoundation/solidity-analyzer-win32-arm64-msvc": "0.1.1", + "@nomicfoundation/solidity-analyzer-win32-ia32-msvc": "0.1.1", + "@nomicfoundation/solidity-analyzer-win32-x64-msvc": "0.1.1" + } + }, + "@nomicfoundation/solidity-analyzer-darwin-arm64": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.1.tgz", + "integrity": "sha512-KcTodaQw8ivDZyF+D76FokN/HdpgGpfjc/gFCImdLUyqB6eSWVaZPazMbeAjmfhx3R0zm/NYVzxwAokFKgrc0w==", + "optional": true + }, + "@nomicfoundation/solidity-analyzer-darwin-x64": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.1.tgz", + "integrity": "sha512-XhQG4BaJE6cIbjAVtzGOGbK3sn1BO9W29uhk9J8y8fZF1DYz0Doj8QDMfpMu+A6TjPDs61lbsmeYodIDnfveSA==", + "optional": true + }, + "@nomicfoundation/solidity-analyzer-freebsd-x64": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-freebsd-x64/-/solidity-analyzer-freebsd-x64-0.1.1.tgz", + "integrity": "sha512-GHF1VKRdHW3G8CndkwdaeLkVBi5A9u2jwtlS7SLhBc8b5U/GcoL39Q+1CSO3hYqePNP+eV5YI7Zgm0ea6kMHoA==", + "optional": true + }, + "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.1.tgz", + "integrity": "sha512-g4Cv2fO37ZsUENQ2vwPnZc2zRenHyAxHcyBjKcjaSmmkKrFr64yvzeNO8S3GBFCo90rfochLs99wFVGT/0owpg==", + "optional": true + }, + "@nomicfoundation/solidity-analyzer-linux-arm64-musl": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.1.tgz", + "integrity": "sha512-WJ3CE5Oek25OGE3WwzK7oaopY8xMw9Lhb0mlYuJl/maZVo+WtP36XoQTb7bW/i8aAdHW5Z+BqrHMux23pvxG3w==", + "optional": true + }, + "@nomicfoundation/solidity-analyzer-linux-x64-gnu": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.1.tgz", + "integrity": "sha512-5WN7leSr5fkUBBjE4f3wKENUy9HQStu7HmWqbtknfXkkil+eNWiBV275IOlpXku7v3uLsXTOKpnnGHJYI2qsdA==", + "optional": true + }, + "@nomicfoundation/solidity-analyzer-linux-x64-musl": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.1.tgz", + "integrity": "sha512-KdYMkJOq0SYPQMmErv/63CwGwMm5XHenEna9X9aB8mQmhDBrYrlAOSsIPgFCUSL0hjxE3xHP65/EPXR/InD2+w==", + "optional": true + }, + "@nomicfoundation/solidity-analyzer-win32-arm64-msvc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-arm64-msvc/-/solidity-analyzer-win32-arm64-msvc-0.1.1.tgz", + "integrity": "sha512-VFZASBfl4qiBYwW5xeY20exWhmv6ww9sWu/krWSesv3q5hA0o1JuzmPHR4LPN6SUZj5vcqci0O6JOL8BPw+APg==", + "optional": true + }, + "@nomicfoundation/solidity-analyzer-win32-ia32-msvc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-ia32-msvc/-/solidity-analyzer-win32-ia32-msvc-0.1.1.tgz", + "integrity": "sha512-JnFkYuyCSA70j6Si6cS1A9Gh1aHTEb8kOTBApp/c7NRTFGNMH8eaInKlyuuiIbvYFhlXW4LicqyYuWNNq9hkpQ==", + "optional": true + }, + "@nomicfoundation/solidity-analyzer-win32-x64-msvc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.1.tgz", + "integrity": "sha512-HrVJr6+WjIXGnw3Q9u6KQcbZCtk0caVWhCdFADySvRyUxJ8PnzlaP+MhwNE8oyT8OZ6ejHBRrrgjSqDCFXGirw==", + "optional": true + }, + "@openzeppelin/contracts": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-5.0.2.tgz", + "integrity": "sha512-ytPc6eLGcHHnapAZ9S+5qsdomhjo6QBHTDRRBFfTxXIpsicMhVPouPgmUPebZZZGX7vt9USA+Z+0M0dSVtSUEA==", "dev": true }, - "@nomicfoundation/ethereumjs-statemanager": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-2.0.4.tgz", - "integrity": "sha512-HPDjeFrxw6llEi+BzqXkZ+KkvFnTOPczuHBtk21hRlDiuKuZz32dPzlhpRsDBGV1b5JTmRDUVqCS1lp3Gghw4Q==", - "dev": true, + "@parcel/watcher": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.4.0.tgz", + "integrity": "sha512-XJLGVL0DEclX5pcWa2N9SX1jCGTDd8l972biNooLFtjneuGqodupPQh6XseXIBBeVIMaaJ7bTcs3qGvXwsp4vg==", "requires": { - "@nomicfoundation/ethereumjs-common": "4.0.4", - "@nomicfoundation/ethereumjs-rlp": "5.0.4", - "@nomicfoundation/ethereumjs-trie": "6.0.4", - "@nomicfoundation/ethereumjs-util": "9.0.4", - "debug": "^4.3.3", - "ethereum-cryptography": "0.1.3", - "js-sdsl": "^4.1.4", - "lru-cache": "^10.0.0" + "@parcel/watcher-android-arm64": "2.4.0", + "@parcel/watcher-darwin-arm64": "2.4.0", + "@parcel/watcher-darwin-x64": "2.4.0", + "@parcel/watcher-freebsd-x64": "2.4.0", + "@parcel/watcher-linux-arm-glibc": "2.4.0", + "@parcel/watcher-linux-arm64-glibc": "2.4.0", + "@parcel/watcher-linux-arm64-musl": "2.4.0", + "@parcel/watcher-linux-x64-glibc": "2.4.0", + "@parcel/watcher-linux-x64-musl": "2.4.0", + "@parcel/watcher-win32-arm64": "2.4.0", + "@parcel/watcher-win32-ia32": "2.4.0", + "@parcel/watcher-win32-x64": "2.4.0", + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" }, "dependencies": { - "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==", - "dev": true, - "requires": { - "@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" - } + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==" + }, + "node-addon-api": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.0.tgz", + "integrity": "sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g==" } } }, - "@nomicfoundation/ethereumjs-trie": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-6.0.4.tgz", - "integrity": "sha512-3nSwQiFMvr2VFe/aZUyinuohYvtytUqZCUCvIWcPJ/BwJH6oQdZRB42aNFBJ/8nAh2s3OcroWpBLskzW01mFKA==", - "dev": true, + "@parcel/watcher-android-arm64": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.4.0.tgz", + "integrity": "sha512-+fPtO/GsbYX1LJnCYCaDVT3EOBjvSFdQN9Mrzh9zWAOOfvidPWyScTrHIZHHfJBvlHzNA0Gy0U3NXFA/M7PHUA==", + "optional": true + }, + "@parcel/watcher-darwin-arm64": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.4.0.tgz", + "integrity": "sha512-T/At5pansFuQ8VJLRx0C6C87cgfqIYhW2N/kBfLCUvDhCah0EnLLwaD/6MW3ux+rpgkpQAnMELOCTKlbwncwiA==", + "optional": true + }, + "@parcel/watcher-darwin-x64": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.4.0.tgz", + "integrity": "sha512-vZMv9jl+szz5YLsSqEGCMSllBl1gU1snfbRL5ysJU03MEa6gkVy9OMcvXV1j4g0++jHEcvzhs3Z3LpeEbVmY6Q==", + "optional": true + }, + "@parcel/watcher-freebsd-x64": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.4.0.tgz", + "integrity": "sha512-dHTRMIplPDT1M0+BkXjtMN+qLtqq24sLDUhmU+UxxLP2TEY2k8GIoqIJiVrGWGomdWsy5IO27aDV1vWyQ6gfHA==", + "optional": true + }, + "@parcel/watcher-linux-arm-glibc": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.4.0.tgz", + "integrity": "sha512-9NQXD+qk46RwATNC3/UB7HWurscY18CnAPMTFcI9Y8CTbtm63/eex1SNt+BHFinEQuLBjaZwR2Lp+n7pmEJPpQ==", + "optional": true + }, + "@parcel/watcher-linux-arm64-glibc": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.4.0.tgz", + "integrity": "sha512-QuJTAQdsd7PFW9jNGaV9Pw+ZMWV9wKThEzzlY3Lhnnwy7iW23qtQFPql8iEaSFMCVI5StNNmONUopk+MFKpiKg==", + "optional": true + }, + "@parcel/watcher-linux-arm64-musl": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.4.0.tgz", + "integrity": "sha512-oyN+uA9xcTDo/45bwsd6TFHa7Lc7hKujyMlvwrCLvSckvWogndCEoVYFNfZ6JJ2KNL/6fFiGPcbjp8jJmEh5Ng==", + "optional": true + }, + "@parcel/watcher-linux-x64-glibc": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.4.0.tgz", + "integrity": "sha512-KphV8awJmxU3q52JQvJot0QMu07CIyEjV+2Tb2ZtbucEgqyRcxOBDMsqp1JNq5nuDXtcCC0uHQICeiEz38dPBQ==", + "optional": true + }, + "@parcel/watcher-linux-x64-musl": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.4.0.tgz", + "integrity": "sha512-7jzcOonpXNWcSijPpKD5IbC6xC7yTibjJw9jviVzZostYLGxbz8LDJLUnLzLzhASPlPGgpeKLtFUMjAAzM+gSA==", + "optional": true + }, + "@parcel/watcher-wasm": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-wasm/-/watcher-wasm-2.4.0.tgz", + "integrity": "sha512-MNgQ4WCbBybqQ97KwR/hqJGYTg3+s8qHpgIyFWB2qJOBvoJWbXuJGmm4ZkPLq2bMaANqCZqrXwmKYagZTkMKZA==", "requires": { - "@nomicfoundation/ethereumjs-rlp": "5.0.4", - "@nomicfoundation/ethereumjs-util": "9.0.4", - "@types/readable-stream": "^2.3.13", - "ethereum-cryptography": "0.1.3", - "lru-cache": "^10.0.0", - "readable-stream": "^3.6.0" + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "napi-wasm": "^1.1.0" }, "dependencies": { - "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==", - "dev": true, - "requires": { - "@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" - } + "napi-wasm": { + "version": "1.1.0", + "bundled": true } } }, - "@nomicfoundation/ethereumjs-tx": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.4.tgz", - "integrity": "sha512-Xjv8wAKJGMrP1f0n2PeyfFCCojHd7iS3s/Ab7qzF1S64kxZ8Z22LCMynArYsVqiFx6rzYy548HNVEyI+AYN/kw==", - "dev": true, - "requires": { - "@nomicfoundation/ethereumjs-common": "4.0.4", - "@nomicfoundation/ethereumjs-rlp": "5.0.4", - "@nomicfoundation/ethereumjs-util": "9.0.4", - "ethereum-cryptography": "0.1.3" - }, - "dependencies": { - "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==", - "dev": true, - "requires": { - "@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" - } - } - } + "@parcel/watcher-win32-arm64": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.4.0.tgz", + "integrity": "sha512-NOej2lqlq8bQNYhUMnOD0nwvNql8ToQF+1Zhi9ULZoG+XTtJ9hNnCFfyICxoZLXor4bBPTOnzs/aVVoefYnjIg==", + "optional": true }, - "@nomicfoundation/ethereumjs-util": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.4.tgz", - "integrity": "sha512-sLOzjnSrlx9Bb9EFNtHzK/FJFsfg2re6bsGqinFinH1gCqVfz9YYlXiMWwDM4C/L4ywuHFCYwfKTVr/QHQcU0Q==", + "@parcel/watcher-win32-ia32": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.4.0.tgz", + "integrity": "sha512-IO/nM+K2YD/iwjWAfHFMBPz4Zqn6qBDqZxY4j2n9s+4+OuTSRM/y/irksnuqcspom5DjkSeF9d0YbO+qpys+JA==", + "optional": true + }, + "@parcel/watcher-win32-x64": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.4.0.tgz", + "integrity": "sha512-pAUyUVjfFjWaf/pShmJpJmNxZhbMvJASUpdes9jL6bTEJ+gDxPRSpXTIemNyNsb9AtbiGXs9XduP1reThmd+dA==", + "optional": true + }, + "@peculiar/asn1-android": { + "version": "2.3.10", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-android/-/asn1-android-2.3.10.tgz", + "integrity": "sha512-z9Rx9cFJv7UUablZISe7uksNbFJCq13hO0yEAOoIpAymALTLlvUOSLnGiQS7okPaM5dP42oTLhezH6XDXRXjGw==", "dev": true, "requires": { - "@nomicfoundation/ethereumjs-rlp": "5.0.4", - "ethereum-cryptography": "0.1.3" + "@peculiar/asn1-schema": "^2.3.8", + "asn1js": "^3.0.5", + "tslib": "^2.6.2" }, "dependencies": { - "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==", - "dev": true, - "requires": { - "@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" - } + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true } } }, - "@nomicfoundation/ethereumjs-verkle": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-verkle/-/ethereumjs-verkle-0.0.2.tgz", - "integrity": "sha512-bjnfZElpYGK/XuuVRmLS3yDvr+cDs85D9oonZ0YUa5A3lgFgokWMp76zXrxX2jVQ0BfHaw12y860n1+iOi6yFQ==", - "dev": true, - "requires": { - "@nomicfoundation/ethereumjs-rlp": "5.0.4", - "@nomicfoundation/ethereumjs-util": "9.0.4", - "lru-cache": "^10.0.0", - "rust-verkle-wasm": "^0.0.1" - } - }, - "@nomicfoundation/ethereumjs-vm": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-7.0.4.tgz", - "integrity": "sha512-gsA4IhmtWHI4BofKy3kio9W+dqZQs5Ji5mLjLYxHCkat+JQBUt5szjRKra2F9nGDJ2XcI/wWb0YWUFNgln4zRQ==", + "@peculiar/asn1-ecc": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-ecc/-/asn1-ecc-2.3.8.tgz", + "integrity": "sha512-Ah/Q15y3A/CtxbPibiLM/LKcMbnLTdUdLHUgdpB5f60sSvGkXzxJCu5ezGTFHogZXWNX3KSmYqilCrfdmBc6pQ==", "dev": true, "requires": { - "@nomicfoundation/ethereumjs-block": "5.0.4", - "@nomicfoundation/ethereumjs-blockchain": "7.0.4", - "@nomicfoundation/ethereumjs-common": "4.0.4", - "@nomicfoundation/ethereumjs-evm": "2.0.4", - "@nomicfoundation/ethereumjs-rlp": "5.0.4", - "@nomicfoundation/ethereumjs-statemanager": "2.0.4", - "@nomicfoundation/ethereumjs-trie": "6.0.4", - "@nomicfoundation/ethereumjs-tx": "5.0.4", - "@nomicfoundation/ethereumjs-util": "9.0.4", - "debug": "^4.3.3", - "ethereum-cryptography": "0.1.3" + "@peculiar/asn1-schema": "^2.3.8", + "@peculiar/asn1-x509": "^2.3.8", + "asn1js": "^3.0.5", + "tslib": "^2.6.2" }, "dependencies": { - "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==", - "dev": true, - "requires": { - "@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" - } + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true } } }, - "@nomicfoundation/hardhat-network-helpers": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-network-helpers/-/hardhat-network-helpers-1.0.10.tgz", - "integrity": "sha512-R35/BMBlx7tWN5V6d/8/19QCwEmIdbnA4ZrsuXgvs8i2qFx5i7h6mH5pBS4Pwi4WigLH+upl6faYusrNPuzMrQ==", + "@peculiar/asn1-rsa": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-rsa/-/asn1-rsa-2.3.8.tgz", + "integrity": "sha512-ES/RVEHu8VMYXgrg3gjb1m/XG0KJWnV4qyZZ7mAg7rrF3VTmRbLxO8mk+uy0Hme7geSMebp+Wvi2U6RLLEs12Q==", "dev": true, "requires": { - "ethereumjs-util": "^7.1.4" + "@peculiar/asn1-schema": "^2.3.8", + "@peculiar/asn1-x509": "^2.3.8", + "asn1js": "^3.0.5", + "tslib": "^2.6.2" }, "dependencies": { - "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==", - "dev": true, - "requires": { - "@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" - } - }, - "ethereumjs-util": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", - "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", - "dev": true, - "requires": { - "@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" - } + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true } } }, - "@nomicfoundation/hardhat-verify": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-verify/-/hardhat-verify-2.0.4.tgz", - "integrity": "sha512-B8ZjhOrmbbRWqJi65jvQblzjsfYktjqj2vmOm+oc2Vu8drZbT2cjeSCRHZKbS7lOtfW78aJZSFvw+zRLCiABJA==", + "@peculiar/asn1-schema": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.3.8.tgz", + "integrity": "sha512-ULB1XqHKx1WBU/tTFIA+uARuRoBVZ4pNdOA878RDrRbBfBGcSzi5HBkdScC6ZbHn8z7L8gmKCgPC1LHRrP46tA==", "dev": true, "requires": { - "@ethersproject/abi": "^5.1.2", - "@ethersproject/address": "^5.0.2", - "cbor": "^8.1.0", - "chalk": "^2.4.2", - "debug": "^4.1.1", - "lodash.clonedeep": "^4.5.0", - "semver": "^6.3.0", - "table": "^6.8.0", - "undici": "^5.14.0" + "asn1js": "^3.0.5", + "pvtsutils": "^1.3.5", + "tslib": "^2.6.2" }, "dependencies": { - "cbor": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/cbor/-/cbor-8.1.0.tgz", - "integrity": "sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==", - "dev": true, - "requires": { - "nofilter": "^3.1.0" - } + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true } } }, - "@nomicfoundation/solidity-analyzer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.1.tgz", - "integrity": "sha512-1LMtXj1puAxyFusBgUIy5pZk3073cNXYnXUpuNKFghHbIit/xZgbk0AokpUADbNm3gyD6bFWl3LRFh3dhVdREg==", + "@peculiar/asn1-x509": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509/-/asn1-x509-2.3.8.tgz", + "integrity": "sha512-voKxGfDU1c6r9mKiN5ZUsZWh3Dy1BABvTM3cimf0tztNwyMJPhiXY94eRTgsMQe6ViLfT6EoXxkWVzcm3mFAFw==", "dev": true, "requires": { - "@nomicfoundation/solidity-analyzer-darwin-arm64": "0.1.1", - "@nomicfoundation/solidity-analyzer-darwin-x64": "0.1.1", - "@nomicfoundation/solidity-analyzer-freebsd-x64": "0.1.1", - "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": "0.1.1", - "@nomicfoundation/solidity-analyzer-linux-arm64-musl": "0.1.1", - "@nomicfoundation/solidity-analyzer-linux-x64-gnu": "0.1.1", - "@nomicfoundation/solidity-analyzer-linux-x64-musl": "0.1.1", - "@nomicfoundation/solidity-analyzer-win32-arm64-msvc": "0.1.1", - "@nomicfoundation/solidity-analyzer-win32-ia32-msvc": "0.1.1", - "@nomicfoundation/solidity-analyzer-win32-x64-msvc": "0.1.1" + "@peculiar/asn1-schema": "^2.3.8", + "asn1js": "^3.0.5", + "ipaddr.js": "^2.1.0", + "pvtsutils": "^1.3.5", + "tslib": "^2.6.2" + }, + "dependencies": { + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + } } }, - "@nomicfoundation/solidity-analyzer-darwin-arm64": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.1.tgz", - "integrity": "sha512-KcTodaQw8ivDZyF+D76FokN/HdpgGpfjc/gFCImdLUyqB6eSWVaZPazMbeAjmfhx3R0zm/NYVzxwAokFKgrc0w==", + "@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 }, - "@nomicfoundation/solidity-analyzer-darwin-x64": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.1.tgz", - "integrity": "sha512-XhQG4BaJE6cIbjAVtzGOGbK3sn1BO9W29uhk9J8y8fZF1DYz0Doj8QDMfpMu+A6TjPDs61lbsmeYodIDnfveSA==", - "dev": true, - "optional": true + "@pkgr/core": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.0.tgz", + "integrity": "sha512-Zwq5OCzuwJC2jwqmpEQt7Ds1DTi6BWSwoGkbb1n9pO3hzb35BoJELx7c0T23iDkBGkh2e7tvOtjF3tr3OaQHDQ==", + "dev": true }, - "@nomicfoundation/solidity-analyzer-freebsd-x64": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-freebsd-x64/-/solidity-analyzer-freebsd-x64-0.1.1.tgz", - "integrity": "sha512-GHF1VKRdHW3G8CndkwdaeLkVBi5A9u2jwtlS7SLhBc8b5U/GcoL39Q+1CSO3hYqePNP+eV5YI7Zgm0ea6kMHoA==", - "dev": true, - "optional": true + "@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 }, - "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.1.tgz", - "integrity": "sha512-g4Cv2fO37ZsUENQ2vwPnZc2zRenHyAxHcyBjKcjaSmmkKrFr64yvzeNO8S3GBFCo90rfochLs99wFVGT/0owpg==", + "@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, - "optional": true + "requires": { + "graceful-fs": "4.2.10" + }, + "dependencies": { + "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 + } + } }, - "@nomicfoundation/solidity-analyzer-linux-arm64-musl": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.1.tgz", - "integrity": "sha512-WJ3CE5Oek25OGE3WwzK7oaopY8xMw9Lhb0mlYuJl/maZVo+WtP36XoQTb7bW/i8aAdHW5Z+BqrHMux23pvxG3w==", + "@pnpm/npm-conf": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.2.2.tgz", + "integrity": "sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==", "dev": true, - "optional": true + "requires": { + "@pnpm/config.env-replace": "^1.1.0", + "@pnpm/network.ca-file": "^1.0.1", + "config-chain": "^1.1.11" + } }, - "@nomicfoundation/solidity-analyzer-linux-x64-gnu": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.1.tgz", - "integrity": "sha512-5WN7leSr5fkUBBjE4f3wKENUy9HQStu7HmWqbtknfXkkil+eNWiBV275IOlpXku7v3uLsXTOKpnnGHJYI2qsdA==", + "@rollup/rollup-android-arm-eabi": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.5.tgz", + "integrity": "sha512-idWaG8xeSRCfRq9KpRysDHJ/rEHBEXcHuJ82XY0yYFIWnLMjZv9vF/7DOq8djQ2n3Lk6+3qfSH8AqlmHlmi1MA==", "dev": true, "optional": true }, - "@nomicfoundation/solidity-analyzer-linux-x64-musl": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.1.tgz", - "integrity": "sha512-KdYMkJOq0SYPQMmErv/63CwGwMm5XHenEna9X9aB8mQmhDBrYrlAOSsIPgFCUSL0hjxE3xHP65/EPXR/InD2+w==", + "@rollup/rollup-android-arm64": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.5.tgz", + "integrity": "sha512-f14d7uhAMtsCGjAYwZGv6TwuS3IFaM4ZnGMUn3aCBgkcHAYErhV1Ad97WzBvS2o0aaDv4mVz+syiN0ElMyfBPg==", "dev": true, "optional": true }, - "@nomicfoundation/solidity-analyzer-win32-arm64-msvc": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-arm64-msvc/-/solidity-analyzer-win32-arm64-msvc-0.1.1.tgz", - "integrity": "sha512-VFZASBfl4qiBYwW5xeY20exWhmv6ww9sWu/krWSesv3q5hA0o1JuzmPHR4LPN6SUZj5vcqci0O6JOL8BPw+APg==", + "@rollup/rollup-darwin-arm64": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.5.tgz", + "integrity": "sha512-ndoXeLx455FffL68OIUrVr89Xu1WLzAG4n65R8roDlCoYiQcGGg6MALvs2Ap9zs7AHg8mpHtMpwC8jBBjZrT/w==", "dev": true, "optional": true }, - "@nomicfoundation/solidity-analyzer-win32-ia32-msvc": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-ia32-msvc/-/solidity-analyzer-win32-ia32-msvc-0.1.1.tgz", - "integrity": "sha512-JnFkYuyCSA70j6Si6cS1A9Gh1aHTEb8kOTBApp/c7NRTFGNMH8eaInKlyuuiIbvYFhlXW4LicqyYuWNNq9hkpQ==", + "@rollup/rollup-darwin-x64": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.5.tgz", + "integrity": "sha512-UmElV1OY2m/1KEEqTlIjieKfVwRg0Zwg4PLgNf0s3glAHXBN99KLpw5A5lrSYCa1Kp63czTpVll2MAqbZYIHoA==", "dev": true, "optional": true }, - "@nomicfoundation/solidity-analyzer-win32-x64-msvc": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.1.tgz", - "integrity": "sha512-HrVJr6+WjIXGnw3Q9u6KQcbZCtk0caVWhCdFADySvRyUxJ8PnzlaP+MhwNE8oyT8OZ6ejHBRrrgjSqDCFXGirw==", + "@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.5.tgz", + "integrity": "sha512-Q0LcU61v92tQB6ae+udZvOyZ0wfpGojtAKrrpAaIqmJ7+psq4cMIhT/9lfV6UQIpeItnq/2QDROhNLo00lOD1g==", "dev": true, "optional": true }, - "@openzeppelin/contracts": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-5.0.2.tgz", - "integrity": "sha512-ytPc6eLGcHHnapAZ9S+5qsdomhjo6QBHTDRRBFfTxXIpsicMhVPouPgmUPebZZZGX7vt9USA+Z+0M0dSVtSUEA==", - "dev": true - }, - "@parcel/watcher": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.4.0.tgz", - "integrity": "sha512-XJLGVL0DEclX5pcWa2N9SX1jCGTDd8l972biNooLFtjneuGqodupPQh6XseXIBBeVIMaaJ7bTcs3qGvXwsp4vg==", - "requires": { - "@parcel/watcher-android-arm64": "2.4.0", - "@parcel/watcher-darwin-arm64": "2.4.0", - "@parcel/watcher-darwin-x64": "2.4.0", - "@parcel/watcher-freebsd-x64": "2.4.0", - "@parcel/watcher-linux-arm-glibc": "2.4.0", - "@parcel/watcher-linux-arm64-glibc": "2.4.0", - "@parcel/watcher-linux-arm64-musl": "2.4.0", - "@parcel/watcher-linux-x64-glibc": "2.4.0", - "@parcel/watcher-linux-x64-musl": "2.4.0", - "@parcel/watcher-win32-arm64": "2.4.0", - "@parcel/watcher-win32-ia32": "2.4.0", - "@parcel/watcher-win32-x64": "2.4.0", - "detect-libc": "^1.0.3", - "is-glob": "^4.0.3", - "micromatch": "^4.0.5", - "node-addon-api": "^7.0.0" - }, - "dependencies": { - "detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==" - }, - "node-addon-api": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.0.tgz", - "integrity": "sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g==" - } - } - }, - "@parcel/watcher-android-arm64": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.4.0.tgz", - "integrity": "sha512-+fPtO/GsbYX1LJnCYCaDVT3EOBjvSFdQN9Mrzh9zWAOOfvidPWyScTrHIZHHfJBvlHzNA0Gy0U3NXFA/M7PHUA==", - "optional": true - }, - "@parcel/watcher-darwin-arm64": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.4.0.tgz", - "integrity": "sha512-T/At5pansFuQ8VJLRx0C6C87cgfqIYhW2N/kBfLCUvDhCah0EnLLwaD/6MW3ux+rpgkpQAnMELOCTKlbwncwiA==", + "@rollup/rollup-linux-arm64-gnu": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.5.tgz", + "integrity": "sha512-dkRscpM+RrR2Ee3eOQmRWFjmV/payHEOrjyq1VZegRUa5OrZJ2MAxBNs05bZuY0YCtpqETDy1Ix4i/hRqX98cA==", + "dev": true, "optional": true }, - "@parcel/watcher-darwin-x64": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.4.0.tgz", - "integrity": "sha512-vZMv9jl+szz5YLsSqEGCMSllBl1gU1snfbRL5ysJU03MEa6gkVy9OMcvXV1j4g0++jHEcvzhs3Z3LpeEbVmY6Q==", + "@rollup/rollup-linux-arm64-musl": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.5.tgz", + "integrity": "sha512-QaKFVOzzST2xzY4MAmiDmURagWLFh+zZtttuEnuNn19AiZ0T3fhPyjPPGwLNdiDT82ZE91hnfJsUiDwF9DClIQ==", + "dev": true, "optional": true }, - "@parcel/watcher-freebsd-x64": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.4.0.tgz", - "integrity": "sha512-dHTRMIplPDT1M0+BkXjtMN+qLtqq24sLDUhmU+UxxLP2TEY2k8GIoqIJiVrGWGomdWsy5IO27aDV1vWyQ6gfHA==", + "@rollup/rollup-linux-riscv64-gnu": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.5.tgz", + "integrity": "sha512-HeGqmRJuyVg6/X6MpE2ur7GbymBPS8Np0S/vQFHDmocfORT+Zt76qu+69NUoxXzGqVP1pzaY6QIi0FJWLC3OPA==", + "dev": true, "optional": true }, - "@parcel/watcher-linux-arm-glibc": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.4.0.tgz", - "integrity": "sha512-9NQXD+qk46RwATNC3/UB7HWurscY18CnAPMTFcI9Y8CTbtm63/eex1SNt+BHFinEQuLBjaZwR2Lp+n7pmEJPpQ==", + "@rollup/rollup-linux-x64-gnu": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.5.tgz", + "integrity": "sha512-Dq1bqBdLaZ1Gb/l2e5/+o3B18+8TI9ANlA1SkejZqDgdU/jK/ThYaMPMJpVMMXy2uRHvGKbkz9vheVGdq3cJfA==", + "dev": true, "optional": true }, - "@parcel/watcher-linux-arm64-glibc": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.4.0.tgz", - "integrity": "sha512-QuJTAQdsd7PFW9jNGaV9Pw+ZMWV9wKThEzzlY3Lhnnwy7iW23qtQFPql8iEaSFMCVI5StNNmONUopk+MFKpiKg==", + "@rollup/rollup-linux-x64-musl": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.5.tgz", + "integrity": "sha512-ezyFUOwldYpj7AbkwyW9AJ203peub81CaAIVvckdkyH8EvhEIoKzaMFJj0G4qYJ5sw3BpqhFrsCc30t54HV8vg==", + "dev": true, "optional": true }, - "@parcel/watcher-linux-arm64-musl": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.4.0.tgz", - "integrity": "sha512-oyN+uA9xcTDo/45bwsd6TFHa7Lc7hKujyMlvwrCLvSckvWogndCEoVYFNfZ6JJ2KNL/6fFiGPcbjp8jJmEh5Ng==", + "@rollup/rollup-win32-arm64-msvc": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.5.tgz", + "integrity": "sha512-aHSsMnUw+0UETB0Hlv7B/ZHOGY5bQdwMKJSzGfDfvyhnpmVxLMGnQPGNE9wgqkLUs3+gbG1Qx02S2LLfJ5GaRQ==", + "dev": true, "optional": true }, - "@parcel/watcher-linux-x64-glibc": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.4.0.tgz", - "integrity": "sha512-KphV8awJmxU3q52JQvJot0QMu07CIyEjV+2Tb2ZtbucEgqyRcxOBDMsqp1JNq5nuDXtcCC0uHQICeiEz38dPBQ==", + "@rollup/rollup-win32-ia32-msvc": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.5.tgz", + "integrity": "sha512-AiqiLkb9KSf7Lj/o1U3SEP9Zn+5NuVKgFdRIZkvd4N0+bYrTOovVd0+LmYCPQGbocT4kvFyK+LXCDiXPBF3fyA==", + "dev": true, "optional": true }, - "@parcel/watcher-linux-x64-musl": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.4.0.tgz", - "integrity": "sha512-7jzcOonpXNWcSijPpKD5IbC6xC7yTibjJw9jviVzZostYLGxbz8LDJLUnLzLzhASPlPGgpeKLtFUMjAAzM+gSA==", + "@rollup/rollup-win32-x64-msvc": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.5.tgz", + "integrity": "sha512-1q+mykKE3Vot1kaFJIDoUFv5TuW+QQVaf2FmTT9krg86pQrGStOSJJ0Zil7CFagyxDuouTepzt5Y5TVzyajOdQ==", + "dev": true, "optional": true }, - "@parcel/watcher-wasm": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-wasm/-/watcher-wasm-2.4.0.tgz", - "integrity": "sha512-MNgQ4WCbBybqQ97KwR/hqJGYTg3+s8qHpgIyFWB2qJOBvoJWbXuJGmm4ZkPLq2bMaANqCZqrXwmKYagZTkMKZA==", + "@safe-global/safe-4337": { + "version": "file:modules/4337", "requires": { - "is-glob": "^4.0.3", - "micromatch": "^4.0.5", - "napi-wasm": "^1.1.0" + "@account-abstraction/contracts": "^0.7.0", + "@noble/curves": "^1.3.0", + "@nomicfoundation/hardhat-toolbox": "^4.0.0", + "@openzeppelin/contracts": "^5.0.2", + "@safe-global/safe-4337-local-bundler": "^0.0.0", + "@safe-global/safe-4337-provider": "^0.0.0", + "@safe-global/safe-contracts": "^1.4.1-build.0", + "@simplewebauthn/server": "9.0.0", + "@types/chai": "^4.3.11", + "@types/mocha": "^10.0.6", + "@types/node": "^20.11.18", + "@types/yargs": "^17.0.32", + "cbor": "^9.0.2", + "debug": "^4.3.4", + "dotenv": "^16.4.4", + "ethers": "^6.11.1", + "hardhat": "^2.21.0", + "hardhat-deploy": "^0.12.1", + "husky": "^9.0.11", + "solc": "^0.8.24", + "solhint": "^4.1.1", + "ts-node": "^10.9.2", + "typescript": "^5.3.3", + "yargs": "^17.7.2" }, "dependencies": { - "napi-wasm": { - "version": "1.1.0", - "bundled": true - } - } - }, - "@parcel/watcher-win32-arm64": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.4.0.tgz", - "integrity": "sha512-NOej2lqlq8bQNYhUMnOD0nwvNql8ToQF+1Zhi9ULZoG+XTtJ9hNnCFfyICxoZLXor4bBPTOnzs/aVVoefYnjIg==", - "optional": true - }, - "@parcel/watcher-win32-ia32": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.4.0.tgz", - "integrity": "sha512-IO/nM+K2YD/iwjWAfHFMBPz4Zqn6qBDqZxY4j2n9s+4+OuTSRM/y/irksnuqcspom5DjkSeF9d0YbO+qpys+JA==", - "optional": true - }, - "@parcel/watcher-win32-x64": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.4.0.tgz", - "integrity": "sha512-pAUyUVjfFjWaf/pShmJpJmNxZhbMvJASUpdes9jL6bTEJ+gDxPRSpXTIemNyNsb9AtbiGXs9XduP1reThmd+dA==", - "optional": true - }, - "@peculiar/asn1-android": { - "version": "2.3.10", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-android/-/asn1-android-2.3.10.tgz", - "integrity": "sha512-z9Rx9cFJv7UUablZISe7uksNbFJCq13hO0yEAOoIpAymALTLlvUOSLnGiQS7okPaM5dP42oTLhezH6XDXRXjGw==", - "dev": true, - "requires": { - "@peculiar/asn1-schema": "^2.3.8", - "asn1js": "^3.0.5", - "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "@adraffy/ens-normalize": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz", + "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==", "dev": true - } - } - }, - "@peculiar/asn1-ecc": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-ecc/-/asn1-ecc-2.3.8.tgz", - "integrity": "sha512-Ah/Q15y3A/CtxbPibiLM/LKcMbnLTdUdLHUgdpB5f60sSvGkXzxJCu5ezGTFHogZXWNX3KSmYqilCrfdmBc6pQ==", - "dev": true, - "requires": { - "@peculiar/asn1-schema": "^2.3.8", - "@peculiar/asn1-x509": "^2.3.8", - "asn1js": "^3.0.5", - "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + }, + "@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", "dev": true - } - } - }, - "@peculiar/asn1-rsa": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-rsa/-/asn1-rsa-2.3.8.tgz", - "integrity": "sha512-ES/RVEHu8VMYXgrg3gjb1m/XG0KJWnV4qyZZ7mAg7rrF3VTmRbLxO8mk+uy0Hme7geSMebp+Wvi2U6RLLEs12Q==", - "dev": true, - "requires": { - "@peculiar/asn1-schema": "^2.3.8", - "@peculiar/asn1-x509": "^2.3.8", - "asn1js": "^3.0.5", - "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + }, + "@nomicfoundation/hardhat-chai-matchers": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-2.0.3.tgz", + "integrity": "sha512-A40s7EAK4Acr8UP1Yudgi9GGD9Cca/K3LHt3DzmRIje14lBfHtg9atGQ7qK56vdPcTwKmeaGn30FzxMUfPGEMw==", + "dev": true, + "peer": true, + "requires": { + "@types/chai-as-promised": "^7.1.3", + "chai-as-promised": "^7.1.1", + "deep-eql": "^4.0.1", + "ordinal": "^1.0.3" + } + }, + "@nomicfoundation/hardhat-ethers": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ethers/-/hardhat-ethers-3.0.5.tgz", + "integrity": "sha512-RNFe8OtbZK6Ila9kIlHp0+S80/0Bu/3p41HUpaRIoHLm6X3WekTd83vob3rE54Duufu1edCiBDxspBzi2rxHHw==", + "dev": true, + "peer": true, + "requires": { + "debug": "^4.1.1", + "lodash.isequal": "^4.5.0" + } + }, + "@nomicfoundation/hardhat-toolbox": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-toolbox/-/hardhat-toolbox-4.0.0.tgz", + "integrity": "sha512-jhcWHp0aHaL0aDYj8IJl80v4SZXWMS1A2XxXa1CA6pBiFfJKuZinCkO6wb+POAt0LIfXB3gA3AgdcOccrcwBwA==", + "dev": true, + "requires": {} + }, + "@simplewebauthn/server": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@simplewebauthn/server/-/server-9.0.0.tgz", + "integrity": "sha512-pm3UWhZrneBoSDQmtYTScZeOhcKbPch/zmMgfJZJY3sE1l0VAQsAKlIjoLGRrw2vXYSL7Eslhh0Qdb301IPxTQ==", + "dev": true, + "requires": { + "@hexagon/base64": "^1.1.27", + "@peculiar/asn1-android": "^2.3.10", + "@peculiar/asn1-ecc": "^2.3.8", + "@peculiar/asn1-rsa": "^2.3.8", + "@peculiar/asn1-schema": "^2.3.8", + "@peculiar/asn1-x509": "^2.3.8", + "@simplewebauthn/types": "^9.0.0", + "cbor-x": "^1.5.2", + "cross-fetch": "^4.0.0" + } + }, + "@typechain/ethers-v6": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@typechain/ethers-v6/-/ethers-v6-0.5.1.tgz", + "integrity": "sha512-F+GklO8jBWlsaVV+9oHaPh5NJdd6rAKN4tklGfInX1Q7h0xPgVLP39Jl3eCulPB5qexI71ZFHwbljx4ZXNfouA==", + "dev": true, + "peer": true, + "requires": { + "lodash": "^4.17.15", + "ts-essentials": "^7.0.1" + } + }, + "@typechain/hardhat": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@typechain/hardhat/-/hardhat-9.1.0.tgz", + "integrity": "sha512-mtaUlzLlkqTlfPwB3FORdejqBskSnh+Jl8AIJGjXNAQfRQ4ofHADPl1+oU7Z3pAJzmZbUXII8MhOLQltcHgKnA==", + "dev": true, + "peer": true, + "requires": { + "fs-extra": "^9.1.0" + } + }, + "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==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, + "commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "dev": true - } - } - }, - "@peculiar/asn1-schema": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.3.8.tgz", - "integrity": "sha512-ULB1XqHKx1WBU/tTFIA+uARuRoBVZ4pNdOA878RDrRbBfBGcSzi5HBkdScC6ZbHn8z7L8gmKCgPC1LHRrP46tA==", - "dev": true, - "requires": { - "asn1js": "^3.0.5", - "pvtsutils": "^1.3.5", - "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + }, + "ethers": { + "version": "6.11.1", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.11.1.tgz", + "integrity": "sha512-mxTAE6wqJQAbp5QAe/+o+rXOID7Nw91OZXvgpjDa1r4fAbq2Nu314oEZSbjoRLacuCzs7kUC3clEvkCQowffGg==", + "dev": true, + "requires": { + "@adraffy/ens-normalize": "1.10.1", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@types/node": "18.15.13", + "aes-js": "4.0.0-beta.5", + "tslib": "2.4.0", + "ws": "8.5.0" + }, + "dependencies": { + "@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "dev": true, + "requires": { + "@noble/hashes": "1.3.2" + } + }, + "@types/node": { + "version": "18.15.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", + "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==", + "dev": true + } + } + }, + "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==", + "dev": true, + "peer": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "peer": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true - } - } - }, - "@peculiar/asn1-x509": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509/-/asn1-x509-2.3.8.tgz", - "integrity": "sha512-voKxGfDU1c6r9mKiN5ZUsZWh3Dy1BABvTM3cimf0tztNwyMJPhiXY94eRTgsMQe6ViLfT6EoXxkWVzcm3mFAFw==", - "dev": true, - "requires": { - "@peculiar/asn1-schema": "^2.3.8", - "asn1js": "^3.0.5", - "ipaddr.js": "^2.1.0", - "pvtsutils": "^1.3.5", - "tslib": "^2.6.2" - }, - "dependencies": { + }, + "solc": { + "version": "0.8.24", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.8.24.tgz", + "integrity": "sha512-G5yUqjTUPc8Np74sCFwfsevhBPlUifUOfhYrgyu6CmYlC6feSw0YS6eZW47XDT23k3JYdKx5nJ+Q7whCEmNcoA==", + "dev": true, + "requires": { + "command-exists": "^1.2.8", + "commander": "^8.1.0", + "follow-redirects": "^1.12.1", + "js-sha3": "0.8.0", + "memorystream": "^0.3.1", + "semver": "^5.5.0", + "tmp": "0.0.33" + } + }, "tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", "dev": true - } - } - }, - "@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 - }, - "@pkgr/core": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.0.tgz", - "integrity": "sha512-Zwq5OCzuwJC2jwqmpEQt7Ds1DTi6BWSwoGkbb1n9pO3hzb35BoJELx7c0T23iDkBGkh2e7tvOtjF3tr3OaQHDQ==", - "dev": true - }, - "@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 - }, - "@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, - "requires": { - "graceful-fs": "4.2.10" - }, - "dependencies": { - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + }, + "universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "peer": true + }, + "ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "dev": true, + "requires": {} + }, + "yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true } } }, - "@pnpm/npm-conf": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.2.2.tgz", - "integrity": "sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==", - "dev": true, + "@safe-global/safe-4337-local-bundler": { + "version": "file:packages/4337-local-bundler", "requires": { - "@pnpm/config.env-replace": "^1.1.0", - "@pnpm/network.ca-file": "^1.0.1", - "config-chain": "^1.1.11" - } - }, - "@rollup/rollup-android-arm-eabi": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.5.tgz", - "integrity": "sha512-idWaG8xeSRCfRq9KpRysDHJ/rEHBEXcHuJ82XY0yYFIWnLMjZv9vF/7DOq8djQ2n3Lk6+3qfSH8AqlmHlmi1MA==", - "dev": true, - "optional": true - }, - "@rollup/rollup-android-arm64": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.5.tgz", - "integrity": "sha512-f14d7uhAMtsCGjAYwZGv6TwuS3IFaM4ZnGMUn3aCBgkcHAYErhV1Ad97WzBvS2o0aaDv4mVz+syiN0ElMyfBPg==", - "dev": true, - "optional": true - }, - "@rollup/rollup-darwin-arm64": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.5.tgz", - "integrity": "sha512-ndoXeLx455FffL68OIUrVr89Xu1WLzAG4n65R8roDlCoYiQcGGg6MALvs2Ap9zs7AHg8mpHtMpwC8jBBjZrT/w==", - "dev": true, - "optional": true - }, - "@rollup/rollup-darwin-x64": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.5.tgz", - "integrity": "sha512-UmElV1OY2m/1KEEqTlIjieKfVwRg0Zwg4PLgNf0s3glAHXBN99KLpw5A5lrSYCa1Kp63czTpVll2MAqbZYIHoA==", - "dev": true, - "optional": true - }, - "@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.5.tgz", - "integrity": "sha512-Q0LcU61v92tQB6ae+udZvOyZ0wfpGojtAKrrpAaIqmJ7+psq4cMIhT/9lfV6UQIpeItnq/2QDROhNLo00lOD1g==", - "dev": true, - "optional": true - }, - "@rollup/rollup-linux-arm64-gnu": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.5.tgz", - "integrity": "sha512-dkRscpM+RrR2Ee3eOQmRWFjmV/payHEOrjyq1VZegRUa5OrZJ2MAxBNs05bZuY0YCtpqETDy1Ix4i/hRqX98cA==", - "dev": true, - "optional": true - }, - "@rollup/rollup-linux-arm64-musl": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.5.tgz", - "integrity": "sha512-QaKFVOzzST2xzY4MAmiDmURagWLFh+zZtttuEnuNn19AiZ0T3fhPyjPPGwLNdiDT82ZE91hnfJsUiDwF9DClIQ==", - "dev": true, - "optional": true - }, - "@rollup/rollup-linux-riscv64-gnu": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.5.tgz", - "integrity": "sha512-HeGqmRJuyVg6/X6MpE2ur7GbymBPS8Np0S/vQFHDmocfORT+Zt76qu+69NUoxXzGqVP1pzaY6QIi0FJWLC3OPA==", - "dev": true, - "optional": true - }, - "@rollup/rollup-linux-x64-gnu": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.5.tgz", - "integrity": "sha512-Dq1bqBdLaZ1Gb/l2e5/+o3B18+8TI9ANlA1SkejZqDgdU/jK/ThYaMPMJpVMMXy2uRHvGKbkz9vheVGdq3cJfA==", - "dev": true, - "optional": true - }, - "@rollup/rollup-linux-x64-musl": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.5.tgz", - "integrity": "sha512-ezyFUOwldYpj7AbkwyW9AJ203peub81CaAIVvckdkyH8EvhEIoKzaMFJj0G4qYJ5sw3BpqhFrsCc30t54HV8vg==", - "dev": true, - "optional": true - }, - "@rollup/rollup-win32-arm64-msvc": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.5.tgz", - "integrity": "sha512-aHSsMnUw+0UETB0Hlv7B/ZHOGY5bQdwMKJSzGfDfvyhnpmVxLMGnQPGNE9wgqkLUs3+gbG1Qx02S2LLfJ5GaRQ==", - "dev": true, - "optional": true - }, - "@rollup/rollup-win32-ia32-msvc": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.5.tgz", - "integrity": "sha512-AiqiLkb9KSf7Lj/o1U3SEP9Zn+5NuVKgFdRIZkvd4N0+bYrTOovVd0+LmYCPQGbocT4kvFyK+LXCDiXPBF3fyA==", - "dev": true, - "optional": true - }, - "@rollup/rollup-win32-x64-msvc": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.5.tgz", - "integrity": "sha512-1q+mykKE3Vot1kaFJIDoUFv5TuW+QQVaf2FmTT9krg86pQrGStOSJJ0Zil7CFagyxDuouTepzt5Y5TVzyajOdQ==", - "dev": true, - "optional": true - }, - "@safe-global/4337-gas-metering": { - "version": "file:examples/4337-gas-metering", - "requires": { - "@alchemy/aa-accounts": "2.4.0", - "@alchemy/aa-alchemy": "2.4.0", - "@alchemy/aa-core": "2.3.1", - "@gelatonetwork/relay-sdk": "^5.5.6", - "@types/node": "20.11.18", - "alchemy-sdk": "3.1.2", - "dotenv": "16.4.4", - "permissionless": "0.0.35", - "rimraf": "^5.0.5", - "tsx": "4.7.1", - "typescript": "^5.3.3", - "viem": "2.7.9" + "@nomicfoundation/hardhat-toolbox": "^4.0.0", + "@safe-global/safe-4337-provider": "^0.0.0", + "ethers": "^6.11.1", + "hardhat-deploy": "^0.12.1", + "node-fetch": "^2.7.0" }, "dependencies": { + "@adraffy/ens-normalize": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz", + "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==" + }, "@noble/curves": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", "requires": { - "@noble/hashes": "1.3.2" + "@noble/hashes": "1.3.2" + } + }, + "@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==" + }, + "@nomicfoundation/hardhat-chai-matchers": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-2.0.6.tgz", + "integrity": "sha512-Te1Uyo9oJcTCF0Jy9dztaLpshmlpjLf2yPtWXlXuLjMt3RRSmJLm/+rKVTW6gfadAEs12U/it6D0ZRnnRGiICQ==", + "peer": true, + "requires": { + "@types/chai-as-promised": "^7.1.3", + "chai-as-promised": "^7.1.1", + "deep-eql": "^4.0.1", + "ordinal": "^1.0.3" + } + }, + "@nomicfoundation/hardhat-ethers": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ethers/-/hardhat-ethers-3.0.5.tgz", + "integrity": "sha512-RNFe8OtbZK6Ila9kIlHp0+S80/0Bu/3p41HUpaRIoHLm6X3WekTd83vob3rE54Duufu1edCiBDxspBzi2rxHHw==", + "peer": true, + "requires": { + "debug": "^4.1.1", + "lodash.isequal": "^4.5.0" } }, - "@noble/hashes": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", - "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==" + "@nomicfoundation/hardhat-toolbox": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-toolbox/-/hardhat-toolbox-4.0.0.tgz", + "integrity": "sha512-jhcWHp0aHaL0aDYj8IJl80v4SZXWMS1A2XxXa1CA6pBiFfJKuZinCkO6wb+POAt0LIfXB3gA3AgdcOccrcwBwA==", + "requires": {} }, - "@scure/bip32": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.2.tgz", - "integrity": "sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA==", + "@typechain/ethers-v6": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@typechain/ethers-v6/-/ethers-v6-0.5.1.tgz", + "integrity": "sha512-F+GklO8jBWlsaVV+9oHaPh5NJdd6rAKN4tklGfInX1Q7h0xPgVLP39Jl3eCulPB5qexI71ZFHwbljx4ZXNfouA==", + "peer": true, "requires": { - "@noble/curves": "~1.2.0", - "@noble/hashes": "~1.3.2", - "@scure/base": "~1.1.2" + "lodash": "^4.17.15", + "ts-essentials": "^7.0.1" } }, - "@scure/bip39": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.1.tgz", - "integrity": "sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==", + "@typechain/hardhat": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@typechain/hardhat/-/hardhat-9.1.0.tgz", + "integrity": "sha512-mtaUlzLlkqTlfPwB3FORdejqBskSnh+Jl8AIJGjXNAQfRQ4ofHADPl1+oU7Z3pAJzmZbUXII8MhOLQltcHgKnA==", + "peer": true, "requires": { - "@noble/hashes": "~1.3.0", - "@scure/base": "~1.1.0" + "fs-extra": "^9.1.0" } }, - "abitype": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/abitype/-/abitype-1.0.0.tgz", - "integrity": "sha512-NMeMah//6bJ56H5XRj8QCV4AwuW6hB6zqz2LnhhLdcWVQOsXki6/Pn3APeqxCma62nXIcmZWdu1DlHWS74umVQ==", - "requires": {} + "@types/node": { + "version": "18.15.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", + "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==" }, - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, + "ethers": { + "version": "6.11.1", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.11.1.tgz", + "integrity": "sha512-mxTAE6wqJQAbp5QAe/+o+rXOID7Nw91OZXvgpjDa1r4fAbq2Nu314oEZSbjoRLacuCzs7kUC3clEvkCQowffGg==", "requires": { - "balanced-match": "^1.0.0" + "@adraffy/ens-normalize": "1.10.1", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@types/node": "18.15.13", + "aes-js": "4.0.0-beta.5", + "tslib": "2.4.0", + "ws": "8.5.0" } }, - "glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", - "dev": true, + "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==", + "peer": true, "requires": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" } }, - "minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "peer": true, "requires": { - "brace-expansion": "^2.0.1" + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" } }, - "permissionless": { - "version": "0.0.35", - "resolved": "https://registry.npmjs.org/permissionless/-/permissionless-0.0.35.tgz", - "integrity": "sha512-wWnFJW9bCiIBvLVkZ7aPbX0w5LIeelb5dsBOKHIEaRf9xKaxNrpRWCsBRHHjiL0lhvqPlHvEmjJ71Y2mxPyDpg==", + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, + "universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "peer": true + }, + "ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", "requires": {} + } + } + }, + "@safe-global/safe-4337-provider": { + "version": "file:packages/4337-provider", + "requires": { + "ethers": "^6.11.1" + }, + "dependencies": { + "@adraffy/ens-normalize": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz", + "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==" }, - "rimraf": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", - "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", - "dev": true, + "@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", "requires": { - "glob": "^10.3.7" + "@noble/hashes": "1.3.2" } }, - "viem": { - "version": "2.7.9", - "resolved": "https://registry.npmjs.org/viem/-/viem-2.7.9.tgz", - "integrity": "sha512-iDfc8TwaZFp1K95zlsxYh6Cs0OWCt35Tqs8uYgXKSxtz7w075mZ0H5SJ8zSyJGoEaticVDhtdmRRX6TtcW9EeQ==", + "@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==" + }, + "@types/node": { + "version": "18.15.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", + "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==" + }, + "ethers": { + "version": "6.11.1", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.11.1.tgz", + "integrity": "sha512-mxTAE6wqJQAbp5QAe/+o+rXOID7Nw91OZXvgpjDa1r4fAbq2Nu314oEZSbjoRLacuCzs7kUC3clEvkCQowffGg==", "requires": { - "@adraffy/ens-normalize": "1.10.0", + "@adraffy/ens-normalize": "1.10.1", "@noble/curves": "1.2.0", "@noble/hashes": "1.3.2", - "@scure/bip32": "1.3.2", - "@scure/bip39": "1.2.1", - "abitype": "1.0.0", - "isows": "1.0.3", - "ws": "8.13.0" + "@types/node": "18.15.13", + "aes-js": "4.0.0-beta.5", + "tslib": "2.4.0", + "ws": "8.5.0" } }, + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, "ws": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", - "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", "requires": {} } } @@ -17613,10 +20022,9 @@ "chai": "^4.2.0", "dotenv": "^16.4.4", "ethers": "^6.11.1", - "hardhat": "^2.20.1", - "hardhat-deploy": "^0.11.45", + "hardhat": "^2.21.0", + "hardhat-deploy": "^0.12.1", "hardhat-gas-reporter": "^1.0.10", - "rimraf": "^5.0.5", "solhint": "4.1.1", "solidity-coverage": "^0.8.7", "ts-node": "^10.9.2", @@ -17693,15 +20101,6 @@ "fs-extra": "^9.1.0" } }, - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, "ethers": { "version": "6.11.1", "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.11.1.tgz", @@ -17737,19 +20136,6 @@ "universalify": "^2.0.0" } }, - "glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", - "dev": true, - "requires": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - } - }, "jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", @@ -17760,24 +20146,6 @@ "universalify": "^2.0.0" } }, - "minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "rimraf": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", - "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", - "dev": true, - "requires": { - "glob": "^10.3.7" - } - }, "tslib": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", @@ -17814,156 +20182,271 @@ "semver": "^7.3.7" }, "dependencies": { - "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==", - "dev": true, + "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==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@safe-global/safe-modules-example-4337-gas-metering": { + "version": "file:examples/4337-gas-metering", + "requires": { + "@alchemy/aa-accounts": "2.4.0", + "@alchemy/aa-alchemy": "2.4.0", + "@alchemy/aa-core": "2.3.1", + "@gelatonetwork/relay-sdk": "^5.5.6", + "@types/node": "20.11.18", + "alchemy-sdk": "3.1.2", + "dotenv": "16.4.4", + "permissionless": "0.0.35", + "tsx": "4.7.1", + "typescript": "^5.3.3", + "viem": "2.7.9" + }, + "dependencies": { + "@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", "requires": { - "yallist": "^4.0.0" + "@noble/hashes": "1.3.2" } }, - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, + "@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==" + }, + "@scure/bip32": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.2.tgz", + "integrity": "sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA==", "requires": { - "lru-cache": "^6.0.0" + "@noble/curves": "~1.2.0", + "@noble/hashes": "~1.3.2", + "@scure/base": "~1.1.2" + } + }, + "@scure/bip39": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.1.tgz", + "integrity": "sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==", + "requires": { + "@noble/hashes": "~1.3.0", + "@scure/base": "~1.1.0" + } + }, + "abitype": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/abitype/-/abitype-1.0.0.tgz", + "integrity": "sha512-NMeMah//6bJ56H5XRj8QCV4AwuW6hB6zqz2LnhhLdcWVQOsXki6/Pn3APeqxCma62nXIcmZWdu1DlHWS74umVQ==", + "requires": {} + }, + "permissionless": { + "version": "0.0.35", + "resolved": "https://registry.npmjs.org/permissionless/-/permissionless-0.0.35.tgz", + "integrity": "sha512-wWnFJW9bCiIBvLVkZ7aPbX0w5LIeelb5dsBOKHIEaRf9xKaxNrpRWCsBRHHjiL0lhvqPlHvEmjJ71Y2mxPyDpg==", + "requires": {} + }, + "viem": { + "version": "2.7.9", + "resolved": "https://registry.npmjs.org/viem/-/viem-2.7.9.tgz", + "integrity": "sha512-iDfc8TwaZFp1K95zlsxYh6Cs0OWCt35Tqs8uYgXKSxtz7w075mZ0H5SJ8zSyJGoEaticVDhtdmRRX6TtcW9EeQ==", + "requires": { + "@adraffy/ens-normalize": "1.10.0", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@scure/bip32": "1.3.2", + "@scure/bip39": "1.2.1", + "abitype": "1.0.0", + "isows": "1.0.3", + "ws": "8.13.0" } + }, + "ws": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "requires": {} } } }, - "@safe-global/safe-erc4337": { - "version": "file:modules/4337", + "@safe-global/safe-modules-example-4337-passkeys": { + "version": "file:examples/4337-passkeys", "requires": { - "@account-abstraction/contracts": "^0.7.0", - "@noble/curves": "^1.3.0", - "@nomicfoundation/hardhat-toolbox": "^4.0.0", - "@openzeppelin/contracts": "^5.0.2", - "@safe-global/safe-contracts": "^1.4.1", - "@simplewebauthn/server": "9.0.0", - "@types/chai": "^4.3.11", - "@types/mocha": "^10.0.6", - "@types/node": "^20.11.18", - "@types/yargs": "^17.0.32", - "cbor": "^9.0.2", - "debug": "^4.3.4", - "dotenv": "^16.4.4", + "@safe-global/safe-4337": "^0.3.0", + "@types/react": "^18.2.55", + "@types/react-dom": "^18.2.19", + "@vitejs/plugin-react-swc": "^3.6.0", + "@web3modal/ethers": "^4.0.5", "ethers": "^6.11.1", - "hardhat": "^2.20.1", - "hardhat-deploy": "0.11.45", - "husky": "^9.0.11", - "solc": "^0.8.24", - "solhint": "^4.1.1", - "ts-node": "^10.9.2", + "react": "^18.2.0", + "react-dom": "^18.2.0", "typescript": "^5.3.3", - "yargs": "^17.7.2" + "vite": "^5.1.3" }, "dependencies": { "@adraffy/ens-normalize": { "version": "1.10.1", "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz", - "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==", - "dev": true + "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==" + }, + "@lit/reactive-element": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.0.4.tgz", + "integrity": "sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==", + "requires": { + "@lit-labs/ssr-dom-shim": "^1.2.0" + } + }, + "@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "requires": { + "@noble/hashes": "1.3.2" + } }, "@noble/hashes": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", - "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", - "dev": true + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==" }, - "@nomicfoundation/hardhat-chai-matchers": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-2.0.3.tgz", - "integrity": "sha512-A40s7EAK4Acr8UP1Yudgi9GGD9Cca/K3LHt3DzmRIje14lBfHtg9atGQ7qK56vdPcTwKmeaGn30FzxMUfPGEMw==", - "dev": true, - "peer": true, + "@types/node": { + "version": "18.15.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", + "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==" + }, + "@web3modal/common": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@web3modal/common/-/common-4.1.1.tgz", + "integrity": "sha512-InaJY+PfjtcT4ewySMDTCON2jGuk5kKVuleIz04BWNU92Gm2S4hU7knLhIzPshpyv31Hv3/kO2NFhaxx3CLD+w==", "requires": { - "@types/chai-as-promised": "^7.1.3", - "chai-as-promised": "^7.1.1", - "deep-eql": "^4.0.1", - "ordinal": "^1.0.3" + "dayjs": "1.11.10" } }, - "@nomicfoundation/hardhat-ethers": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ethers/-/hardhat-ethers-3.0.5.tgz", - "integrity": "sha512-RNFe8OtbZK6Ila9kIlHp0+S80/0Bu/3p41HUpaRIoHLm6X3WekTd83vob3rE54Duufu1edCiBDxspBzi2rxHHw==", - "dev": true, - "peer": true, + "@web3modal/core": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@web3modal/core/-/core-4.1.1.tgz", + "integrity": "sha512-+FT73nYHKqF0VlkB9lo6mvfR/WjB4dz24JPwKb2Vq05JVyOcnbt5S06IeTtjI7zgKv3MyKzDzxh6z1ScgbTaRA==", "requires": { - "debug": "^4.1.1", - "lodash.isequal": "^4.5.0" + "@web3modal/common": "4.1.1", + "@web3modal/wallet": "4.1.1", + "valtio": "1.11.2" } }, - "@nomicfoundation/hardhat-toolbox": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-toolbox/-/hardhat-toolbox-4.0.0.tgz", - "integrity": "sha512-jhcWHp0aHaL0aDYj8IJl80v4SZXWMS1A2XxXa1CA6pBiFfJKuZinCkO6wb+POAt0LIfXB3gA3AgdcOccrcwBwA==", - "dev": true, - "requires": {} + "@web3modal/ethers": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@web3modal/ethers/-/ethers-4.1.1.tgz", + "integrity": "sha512-GLGYAGmJgAnlNnjEehLFIaPKzyQIQky9UO4gzxNfEl7Mt3p9gHwY5idZzzLlNL+omZMtL8EeZRnsbDOKoYoyaQ==", + "requires": { + "@coinbase/wallet-sdk": "3.9.1", + "@walletconnect/ethereum-provider": "2.11.1", + "@web3modal/polyfills": "4.1.1", + "@web3modal/scaffold": "4.1.1", + "@web3modal/scaffold-react": "4.1.1", + "@web3modal/scaffold-utils": "4.1.1", + "@web3modal/scaffold-vue": "4.1.1", + "@web3modal/siwe": "4.1.1", + "react": ">=17", + "react-dom": ">=17", + "valtio": "1.11.2", + "vue": ">=3" + } }, - "@simplewebauthn/server": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@simplewebauthn/server/-/server-9.0.0.tgz", - "integrity": "sha512-pm3UWhZrneBoSDQmtYTScZeOhcKbPch/zmMgfJZJY3sE1l0VAQsAKlIjoLGRrw2vXYSL7Eslhh0Qdb301IPxTQ==", - "dev": true, + "@web3modal/polyfills": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@web3modal/polyfills/-/polyfills-4.1.1.tgz", + "integrity": "sha512-HQ90relyjjLfTj5XJhhDV9l3Mp10Rvv/MN+GCvzEx/xY7Tz4yhmKZUX3c519pz2BeVYjea+xwwu6OoOwd3GAXQ==", "requires": { - "@hexagon/base64": "^1.1.27", - "@peculiar/asn1-android": "^2.3.10", - "@peculiar/asn1-ecc": "^2.3.8", - "@peculiar/asn1-rsa": "^2.3.8", - "@peculiar/asn1-schema": "^2.3.8", - "@peculiar/asn1-x509": "^2.3.8", - "@simplewebauthn/types": "^9.0.0", - "cbor-x": "^1.5.2", - "cross-fetch": "^4.0.0" + "buffer": "6.0.3" } }, - "@typechain/ethers-v6": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@typechain/ethers-v6/-/ethers-v6-0.5.1.tgz", - "integrity": "sha512-F+GklO8jBWlsaVV+9oHaPh5NJdd6rAKN4tklGfInX1Q7h0xPgVLP39Jl3eCulPB5qexI71ZFHwbljx4ZXNfouA==", - "dev": true, - "peer": true, + "@web3modal/scaffold": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@web3modal/scaffold/-/scaffold-4.1.1.tgz", + "integrity": "sha512-GBryCiyl+taz5DPq0expxzfMVcrpKjWvEBSAqT1tPUSthnzOWnVF77XlUAYgFZqzPsEu9lQ1dHCdqZx7WWMCXA==", "requires": { - "lodash": "^4.17.15", - "ts-essentials": "^7.0.1" + "@web3modal/common": "4.1.1", + "@web3modal/core": "4.1.1", + "@web3modal/siwe": "4.1.1", + "@web3modal/ui": "4.1.1", + "lit": "3.1.0" } }, - "@typechain/hardhat": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/@typechain/hardhat/-/hardhat-9.1.0.tgz", - "integrity": "sha512-mtaUlzLlkqTlfPwB3FORdejqBskSnh+Jl8AIJGjXNAQfRQ4ofHADPl1+oU7Z3pAJzmZbUXII8MhOLQltcHgKnA==", - "dev": true, - "peer": true, + "@web3modal/scaffold-react": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@web3modal/scaffold-react/-/scaffold-react-4.1.1.tgz", + "integrity": "sha512-g+iVswup3MRlDTnwJoIayLDVhFyCVTNTfVaEYaxvr8ADKNb90t3nzY742ZVQOdYitvrWrAMboVaOB6LuLCvrsA==", "requires": { - "fs-extra": "^9.1.0" + "@web3modal/scaffold": "4.1.1" } }, - "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==", - "dev": true, + "@web3modal/scaffold-utils": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@web3modal/scaffold-utils/-/scaffold-utils-4.1.1.tgz", + "integrity": "sha512-v9TlKchCPTOGitduI3hUm7PReWcxt55aifYHuCFklwgFatBlUZb/JrXpiCUhp6RpOfnSIA5gV65eyEucIbKY5A==", "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" + "@web3modal/core": "4.1.1", + "@web3modal/polyfills": "4.1.1", + "valtio": "1.11.2" } }, - "commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true + "@web3modal/scaffold-vue": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@web3modal/scaffold-vue/-/scaffold-vue-4.1.1.tgz", + "integrity": "sha512-8qDnRmOR1jMlEB6fuFZ2CiWFYtq6M1OGKcN2DGz4c0dggivsa10cjUXqJqrsic6nUxWKPWou0+osIlJ9hR1YBA==", + "requires": { + "@web3modal/scaffold": "4.1.1" + } + }, + "@web3modal/siwe": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@web3modal/siwe/-/siwe-4.1.1.tgz", + "integrity": "sha512-qQ4NKxrlD0gcFqh1G3yLlyRYABoBU7uXw3RQqpf1BiJSSMT2ePBfOwsCTJ6OPuT1RjKt9JNBADctua/sqEItCw==", + "optional": true, + "requires": { + "@web3modal/core": "4.1.1", + "@web3modal/scaffold-utils": "4.1.1", + "lit": "3.1.0", + "valtio": "1.11.2" + } + }, + "@web3modal/ui": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@web3modal/ui/-/ui-4.1.1.tgz", + "integrity": "sha512-6ntwIdi3VHR1HLIiyoannOAcckDs3XYrxxIu8cflba6UyuASJ6AH/AY3ULE88fvE55jM/Lra3uuOYj8yE5QjUw==", + "requires": { + "lit": "3.1.0", + "qrcode": "1.5.3" + } + }, + "@web3modal/wallet": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@web3modal/wallet/-/wallet-4.1.1.tgz", + "integrity": "sha512-KgITukYJXDete4MeH95jditHtQ1gvB+q97td0cjxA+xwzLCgihDfHZEq1kuVg5Fj40ECUV4O6IBc++cNeL9EXQ==", + "requires": { + "zod": "3.22.4" + } }, "ethers": { "version": "6.11.1", "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.11.1.tgz", "integrity": "sha512-mxTAE6wqJQAbp5QAe/+o+rXOID7Nw91OZXvgpjDa1r4fAbq2Nu314oEZSbjoRLacuCzs7kUC3clEvkCQowffGg==", - "dev": true, "requires": { "@adraffy/ens-normalize": "1.10.1", "@noble/curves": "1.2.0", @@ -17971,120 +20454,63 @@ "@types/node": "18.15.13", "aes-js": "4.0.0-beta.5", "tslib": "2.4.0", - "ws": "8.5.0" - }, - "dependencies": { - "@noble/curves": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", - "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", - "dev": true, - "requires": { - "@noble/hashes": "1.3.2" - } - }, - "@types/node": { - "version": "18.15.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", - "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==", - "dev": true - } - } - }, - "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==", - "dev": true, - "peer": true, - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "ws": "8.5.0" } }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "peer": true, + "lit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lit/-/lit-3.1.0.tgz", + "integrity": "sha512-rzo/hmUqX8zmOdamDAeydfjsGXbbdtAFqMhmocnh2j9aDYqbu0fjXygjCa0T99Od9VQ/2itwaGrjZz/ZELVl7w==", "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" + "@lit/reactive-element": "^2.0.0", + "lit-element": "^4.0.0", + "lit-html": "^3.1.0" } }, - "semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true + "lit-element": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.0.4.tgz", + "integrity": "sha512-98CvgulX6eCPs6TyAIQoJZBCQPo80rgXR+dVBs61cstJXqtI+USQZAbA4gFHh6L/mxBx9MrgPLHLsUgDUHAcCQ==", + "requires": { + "@lit-labs/ssr-dom-shim": "^1.2.0", + "@lit/reactive-element": "^2.0.4", + "lit-html": "^3.1.2" + } }, - "solc": { - "version": "0.8.24", - "resolved": "https://registry.npmjs.org/solc/-/solc-0.8.24.tgz", - "integrity": "sha512-G5yUqjTUPc8Np74sCFwfsevhBPlUifUOfhYrgyu6CmYlC6feSw0YS6eZW47XDT23k3JYdKx5nJ+Q7whCEmNcoA==", - "dev": true, + "lit-html": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.1.2.tgz", + "integrity": "sha512-3OBZSUrPnAHoKJ9AMjRL/m01YJxQMf+TMHanNtTHG68ubjnZxK0RFl102DPzsw4mWnHibfZIBJm3LWCZ/LmMvg==", "requires": { - "command-exists": "^1.2.8", - "commander": "^8.1.0", - "follow-redirects": "^1.12.1", - "js-sha3": "0.8.0", - "memorystream": "^0.3.1", - "semver": "^5.5.0", - "tmp": "0.0.33" + "@types/trusted-types": "^2.0.2" } }, "tslib": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", - "dev": true - }, - "universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "peer": true + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" }, "ws": { "version": "8.5.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", - "dev": true, "requires": {} - }, - "yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "requires": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - } - }, - "yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true } } }, "@safe-global/safe-passkey": { "version": "file:modules/passkey", "requires": { + "@account-abstraction/contracts": "^0.7.0", "@noble/curves": "^1.3.0", "@nomicfoundation/hardhat-toolbox": "^4.0.0", - "hardhat": "^2.20.1", + "@safe-global/safe-4337": "^0.3.0", + "@safe-global/safe-4337-local-bundler": "^0.0.0", + "@safe-global/safe-contracts": "^1.4.1-build.0", + "@simplewebauthn/server": "^9.0.3", + "cbor": "^9.0.2", + "dotenv": "^16.4.5", + "hardhat": "^2.21.0", "hardhat-deploy": "^0.12.1", "solhint": "^4.1.1" }, @@ -18096,144 +20522,6 @@ "dev": true, "peer": true }, - "@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==", - "dev": true, - "requires": { - "@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" - } - }, - "@ethersproject/hdnode": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", - "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", - "dev": true, - "requires": { - "@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" - } - }, - "@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==", - "dev": true, - "requires": { - "@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" - }, - "dependencies": { - "aes-js": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", - "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", - "dev": true - } - } - }, - "@ethersproject/pbkdf2": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", - "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", - "dev": true, - "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/sha2": "^5.7.0" - } - }, - "@ethersproject/solidity": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", - "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", - "dev": true, - "requires": { - "@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" - } - }, - "@ethersproject/units": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", - "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", - "dev": true, - "requires": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0" - } - }, - "@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==", - "dev": true, - "requires": { - "@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" - } - }, - "@ethersproject/wordlists": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", - "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", - "dev": true, - "requires": { - "@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" - } - }, "@noble/curves": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", @@ -18287,59 +20575,31 @@ "dev": true, "peer": true, "requires": { - "lodash": "^4.17.15", - "ts-essentials": "^7.0.1" - } - }, - "@typechain/hardhat": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/@typechain/hardhat/-/hardhat-9.1.0.tgz", - "integrity": "sha512-mtaUlzLlkqTlfPwB3FORdejqBskSnh+Jl8AIJGjXNAQfRQ4ofHADPl1+oU7Z3pAJzmZbUXII8MhOLQltcHgKnA==", - "dev": true, - "peer": true, - "requires": { - "fs-extra": "^9.1.0" - } - }, - "@types/node": { - "version": "18.15.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", - "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==", - "dev": true, - "peer": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "lodash": "^4.17.15", + "ts-essentials": "^7.0.1" } }, - "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==", + "@typechain/hardhat": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@typechain/hardhat/-/hardhat-9.1.0.tgz", + "integrity": "sha512-mtaUlzLlkqTlfPwB3FORdejqBskSnh+Jl8AIJGjXNAQfRQ4ofHADPl1+oU7Z3pAJzmZbUXII8MhOLQltcHgKnA==", "dev": true, + "peer": true, "requires": { - "color-name": "~1.1.4" + "fs-extra": "^9.1.0" } }, - "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==", + "@types/node": { + "version": "18.15.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", + "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==", + "dev": true, + "peer": true + }, + "dotenv": { + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", "dev": true }, "ethers": { @@ -18371,114 +20631,17 @@ "universalify": "^2.0.0" } }, - "hardhat-deploy": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/hardhat-deploy/-/hardhat-deploy-0.12.1.tgz", - "integrity": "sha512-ayPJqBCElzPeiwdHUEV0rKQ6NvKStjQAxCqCPlsavQVaxl7uZUHt/d+XbLqglVFqOOpHHs6L9K4W1vxPbsOy5Q==", - "dev": true, - "requires": { - "@ethersproject/abi": "^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/contracts": "^5.7.0", - "@ethersproject/providers": "^5.7.2", - "@ethersproject/solidity": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/wallet": "^5.7.0", - "@types/qs": "^6.9.7", - "axios": "^0.21.1", - "chalk": "^4.1.2", - "chokidar": "^3.5.2", - "debug": "^4.3.2", - "enquirer": "^2.3.6", - "ethers": "^5.7.0", - "form-data": "^4.0.0", - "fs-extra": "^10.0.0", - "match-all": "^1.2.6", - "murmur-128": "^0.2.1", - "qs": "^6.9.4", - "zksync-ethers": "^5.0.0" - }, - "dependencies": { - "ethers": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", - "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", - "dev": true, - "requires": { - "@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" - } - }, - "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==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - } - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, "jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, + "peer": true, "requires": { "graceful-fs": "^4.1.6", "universalify": "^2.0.0" } }, - "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, - "requires": { - "has-flag": "^4.0.0" - } - }, "tslib": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", @@ -18490,7 +20653,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true + "dev": true, + "peer": true }, "ws": { "version": "8.5.0", @@ -18517,7 +20681,6 @@ "version": "1.1.5", "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", - "dev": true, "requires": { "@noble/hashes": "~1.2.0", "@noble/secp256k1": "~1.7.0", @@ -18528,7 +20691,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", - "dev": true, "requires": { "@noble/hashes": "~1.2.0", "@scure/base": "~1.1.0" @@ -18538,7 +20700,6 @@ "version": "5.30.0", "resolved": "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz", "integrity": "sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==", - "dev": true, "requires": { "@sentry/hub": "5.30.0", "@sentry/minimal": "5.30.0", @@ -18551,7 +20712,6 @@ "version": "5.30.0", "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-5.30.0.tgz", "integrity": "sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==", - "dev": true, "requires": { "@sentry/types": "5.30.0", "@sentry/utils": "5.30.0", @@ -18562,7 +20722,6 @@ "version": "5.30.0", "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.30.0.tgz", "integrity": "sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==", - "dev": true, "requires": { "@sentry/hub": "5.30.0", "@sentry/types": "5.30.0", @@ -18573,7 +20732,6 @@ "version": "5.30.0", "resolved": "https://registry.npmjs.org/@sentry/node/-/node-5.30.0.tgz", "integrity": "sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==", - "dev": true, "requires": { "@sentry/core": "5.30.0", "@sentry/hub": "5.30.0", @@ -18590,7 +20748,6 @@ "version": "5.30.0", "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-5.30.0.tgz", "integrity": "sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==", - "dev": true, "requires": { "@sentry/hub": "5.30.0", "@sentry/minimal": "5.30.0", @@ -18602,19 +20759,34 @@ "@sentry/types": { "version": "5.30.0", "resolved": "https://registry.npmjs.org/@sentry/types/-/types-5.30.0.tgz", - "integrity": "sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==", - "dev": true + "integrity": "sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==" }, "@sentry/utils": { "version": "5.30.0", "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-5.30.0.tgz", "integrity": "sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==", - "dev": true, "requires": { "@sentry/types": "5.30.0", "tslib": "^1.9.3" } }, + "@simplewebauthn/server": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@simplewebauthn/server/-/server-9.0.3.tgz", + "integrity": "sha512-FMZieoBosrVLFxCnxPFD9Enhd1U7D8nidVDT4MsHc6l4fdVcjoeHjDueeXCloO1k5O/fZg1fsSXXPKbY2XTzDA==", + "dev": true, + "requires": { + "@hexagon/base64": "^1.1.27", + "@levischuck/tiny-cbor": "^0.2.2", + "@peculiar/asn1-android": "^2.3.10", + "@peculiar/asn1-ecc": "^2.3.8", + "@peculiar/asn1-rsa": "^2.3.8", + "@peculiar/asn1-schema": "^2.3.8", + "@peculiar/asn1-x509": "^2.3.8", + "@simplewebauthn/types": "^9.0.1", + "cross-fetch": "^4.0.0" + } + }, "@simplewebauthn/types": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/@simplewebauthn/types/-/types-9.0.1.tgz", @@ -18631,7 +20803,6 @@ "version": "0.14.5", "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.14.5.tgz", "integrity": "sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg==", - "dev": true, "requires": { "antlr4ts": "^0.5.0-alpha.4" } @@ -18786,7 +20957,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.4.1.tgz", "integrity": "sha512-3y+Y8js+e7BbM16iND+6Rcs3jdiL28q3iVtYsCviYSSpP2uUVKkp5sJnCY4pg8AaVvyN7CGQHO7gLEZQ5ByozQ==", - "dev": true, + "devOptional": true, "requires": { "@swc/core-darwin-arm64": "1.4.1", "@swc/core-darwin-x64": "1.4.1", @@ -18876,13 +21047,13 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.2.tgz", "integrity": "sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw==", - "dev": true + "devOptional": true }, "@swc/types": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.5.tgz", "integrity": "sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==", - "dev": true + "devOptional": true }, "@szmarczak/http-timer": { "version": "5.0.1", @@ -18896,32 +21067,27 @@ "@tsconfig/node10": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==" }, "@tsconfig/node12": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==" }, "@tsconfig/node14": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==" }, "@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==", - "dev": true + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==" }, "@types/bn.js": { "version": "5.1.5", "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.5.tgz", "integrity": "sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==", - "dev": true, "requires": { "@types/node": "*" } @@ -18929,14 +21095,12 @@ "@types/chai": { "version": "4.3.11", "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.11.tgz", - "integrity": "sha512-qQR1dr2rGIHYlJulmr8Ioq3De0Le9E4MJ5AiaeAETJJpndT1uUNHsGFK3L/UIu+rbkQSdj8J/w2bCsBZc/Y5fQ==", - "dev": true + "integrity": "sha512-qQR1dr2rGIHYlJulmr8Ioq3De0Le9E4MJ5AiaeAETJJpndT1uUNHsGFK3L/UIu+rbkQSdj8J/w2bCsBZc/Y5fQ==" }, "@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==", - "dev": true, "requires": { "@types/chai": "*" } @@ -18945,7 +21109,6 @@ "version": "1.6.1", "resolved": "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-1.6.1.tgz", "integrity": "sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==", - "dev": true, "requires": { "@types/node": "*" } @@ -18968,7 +21131,6 @@ "version": "0.0.33", "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-0.0.33.tgz", "integrity": "sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw==", - "dev": true, "requires": { "@types/node": "*" } @@ -18977,7 +21139,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", - "dev": true, "requires": { "@types/minimatch": "*", "@types/node": "*" @@ -19004,20 +21165,17 @@ "@types/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==", - "dev": true + "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==" }, "@types/minimatch": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", - "dev": true + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==" }, "@types/mocha": { "version": "10.0.6", "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.6.tgz", - "integrity": "sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg==", - "dev": true + "integrity": "sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg==" }, "@types/ms": { "version": "0.7.34", @@ -19028,7 +21186,6 @@ "version": "20.11.18", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.18.tgz", "integrity": "sha512-ABT5VWnnYneSBcNWYSCuR05M826RoMyMSGiFivXGx6ZUIsXb9vn4643IEwkg2zbEOSgAiSogtapN2fgc4mAPlw==", - "dev": true, "requires": { "undici-types": "~5.26.4" } @@ -19037,7 +21194,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.2.tgz", "integrity": "sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==", - "dev": true, "requires": { "@types/node": "*" } @@ -19045,8 +21201,7 @@ "@types/prettier": { "version": "2.7.3", "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", - "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", - "dev": true + "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==" }, "@types/prop-types": { "version": "15.7.11", @@ -19057,8 +21212,7 @@ "@types/qs": { "version": "6.9.11", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.11.tgz", - "integrity": "sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==", - "dev": true + "integrity": "sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==" }, "@types/react": { "version": "18.2.55", @@ -19080,16 +21234,6 @@ "@types/react": "*" } }, - "@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==", - "dev": true, - "requires": { - "@types/node": "*", - "safe-buffer": "~5.1.1" - } - }, "@types/scheduler": { "version": "0.16.8", "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", @@ -19100,7 +21244,6 @@ "version": "4.0.6", "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.6.tgz", "integrity": "sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==", - "dev": true, "requires": { "@types/node": "*" } @@ -19673,255 +21816,85 @@ "events": "^3.3.0" } }, - "@walletconnect/time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@walletconnect/time/-/time-1.0.2.tgz", - "integrity": "sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g==", - "requires": { - "tslib": "1.14.1" - } - }, - "@walletconnect/types": { - "version": "2.11.1", - "resolved": "https://registry.npmjs.org/@walletconnect/types/-/types-2.11.1.tgz", - "integrity": "sha512-UbdbX+d6MOK0AXKxt5imV3KvAcLVpZUHylaRDIP5ffwVylM/p4DHnKppil1Qq5N+IGDr3RsUwLGFkKjqsQYRKw==", - "requires": { - "@walletconnect/events": "^1.0.1", - "@walletconnect/heartbeat": "1.2.1", - "@walletconnect/jsonrpc-types": "1.0.3", - "@walletconnect/keyvaluestorage": "^1.1.1", - "@walletconnect/logger": "^2.0.1", - "events": "^3.3.0" - } - }, - "@walletconnect/universal-provider": { - "version": "2.11.1", - "resolved": "https://registry.npmjs.org/@walletconnect/universal-provider/-/universal-provider-2.11.1.tgz", - "integrity": "sha512-BJvPYByIfbBYF4x8mqDV79ebQX0tD54pp8itsqrHWn0qKZeJyIH8sQ69yY0GnbJrzoFS3ZLULdC0yDxWDeuRGw==", - "requires": { - "@walletconnect/jsonrpc-http-connection": "^1.0.7", - "@walletconnect/jsonrpc-provider": "1.0.13", - "@walletconnect/jsonrpc-types": "^1.0.2", - "@walletconnect/jsonrpc-utils": "^1.0.7", - "@walletconnect/logger": "^2.0.1", - "@walletconnect/sign-client": "2.11.1", - "@walletconnect/types": "2.11.1", - "@walletconnect/utils": "2.11.1", - "events": "^3.3.0" - } - }, - "@walletconnect/utils": { - "version": "2.11.1", - "resolved": "https://registry.npmjs.org/@walletconnect/utils/-/utils-2.11.1.tgz", - "integrity": "sha512-wRFDHN86dZ05mCET1H3912odIeQa8j7cZKxl1FlWRpV2YsILj9HCYSX6Uq2brwO02Kv2vryke44G1r8XI/LViA==", - "requires": { - "@stablelib/chacha20poly1305": "1.0.1", - "@stablelib/hkdf": "1.0.1", - "@stablelib/random": "^1.0.2", - "@stablelib/sha256": "1.0.1", - "@stablelib/x25519": "^1.0.3", - "@walletconnect/relay-api": "^1.0.9", - "@walletconnect/safe-json": "^1.0.2", - "@walletconnect/time": "^1.0.2", - "@walletconnect/types": "2.11.1", - "@walletconnect/window-getters": "^1.0.1", - "@walletconnect/window-metadata": "^1.0.1", - "detect-browser": "5.3.0", - "query-string": "7.1.3", - "uint8arrays": "^3.1.0" - } - }, - "@walletconnect/window-getters": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@walletconnect/window-getters/-/window-getters-1.0.1.tgz", - "integrity": "sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q==", - "requires": { - "tslib": "1.14.1" - } - }, - "@walletconnect/window-metadata": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@walletconnect/window-metadata/-/window-metadata-1.0.1.tgz", - "integrity": "sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA==", - "requires": { - "@walletconnect/window-getters": "^1.0.1", - "tslib": "1.14.1" - } - }, - "@web3modal/common": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@web3modal/common/-/common-4.0.5.tgz", - "integrity": "sha512-RQKyqJi3T+Ti57XEkb/4dYbrWMdGduZUacb1k+5H7GU4+Ev3HXjOdp2bcPqfEyr1DYKD/IsW/q/0oqXatwEeUQ==", - "requires": { - "dayjs": "1.11.10" - } - }, - "@web3modal/core": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@web3modal/core/-/core-4.0.5.tgz", - "integrity": "sha512-1QQHa8aNF1KX6ZAKBUU6UE4kwIa9x3FWX7Ak9eER/bTvmgyu2abJe3IwWPEt++nAjbvMKbIO6cATUXfSVk1Zyw==", - "requires": { - "@web3modal/common": "4.0.5", - "@web3modal/wallet": "4.0.5", - "valtio": "1.11.2" - } - }, - "@web3modal/polyfills": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@web3modal/polyfills/-/polyfills-4.0.5.tgz", - "integrity": "sha512-2jnu4CEVnhatq/Bzyk4IgkPVGY3GgD13hZAPCx8mztZzPkrbKrSKfuq2KTVuTjw392DPp7EMmxmm8SSFnjwzuA==", - "requires": { - "buffer": "6.0.3" - } - }, - "@web3modal/scaffold": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@web3modal/scaffold/-/scaffold-4.0.5.tgz", - "integrity": "sha512-K2j/fmUAPyZ6M5DvOAf88qcubrB//ulkOIS1ZX7R7g8isp9z7AtWn2c0b/O+l9CEeiKn0ZSIa7VF7GrUFDZ8vQ==", - "requires": { - "@web3modal/common": "4.0.5", - "@web3modal/core": "4.0.5", - "@web3modal/ui": "4.0.5", - "lit": "3.1.0" - }, - "dependencies": { - "@lit/reactive-element": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.0.4.tgz", - "integrity": "sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==", - "requires": { - "@lit-labs/ssr-dom-shim": "^1.2.0" - } - }, - "lit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lit/-/lit-3.1.0.tgz", - "integrity": "sha512-rzo/hmUqX8zmOdamDAeydfjsGXbbdtAFqMhmocnh2j9aDYqbu0fjXygjCa0T99Od9VQ/2itwaGrjZz/ZELVl7w==", - "requires": { - "@lit/reactive-element": "^2.0.0", - "lit-element": "^4.0.0", - "lit-html": "^3.1.0" - } - }, - "lit-element": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.0.4.tgz", - "integrity": "sha512-98CvgulX6eCPs6TyAIQoJZBCQPo80rgXR+dVBs61cstJXqtI+USQZAbA4gFHh6L/mxBx9MrgPLHLsUgDUHAcCQ==", - "requires": { - "@lit-labs/ssr-dom-shim": "^1.2.0", - "@lit/reactive-element": "^2.0.4", - "lit-html": "^3.1.2" - } - }, - "lit-html": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.1.2.tgz", - "integrity": "sha512-3OBZSUrPnAHoKJ9AMjRL/m01YJxQMf+TMHanNtTHG68ubjnZxK0RFl102DPzsw4mWnHibfZIBJm3LWCZ/LmMvg==", - "requires": { - "@types/trusted-types": "^2.0.2" - } - } - } - }, - "@web3modal/scaffold-react": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@web3modal/scaffold-react/-/scaffold-react-4.0.5.tgz", - "integrity": "sha512-4JQhLHH+IRjpsRbVtt2skaxzTKYqpLTr7zTMZyTECgOXpWyOtTCN0vgc2YatWbct972sZlJ0V8llIwDiGodHgA==", + "@walletconnect/time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@walletconnect/time/-/time-1.0.2.tgz", + "integrity": "sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g==", "requires": { - "@web3modal/scaffold": "4.0.5" + "tslib": "1.14.1" } }, - "@web3modal/scaffold-utils": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@web3modal/scaffold-utils/-/scaffold-utils-4.0.5.tgz", - "integrity": "sha512-FUjtpnf22TEgYpsG6oom1YtyDeydkWFmdXxf+xbnp+SlxuMpff9iF22bWIw1uM5eZYFQH3nIyDozCbOD/grQ+Q==", + "@walletconnect/types": { + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/@walletconnect/types/-/types-2.11.1.tgz", + "integrity": "sha512-UbdbX+d6MOK0AXKxt5imV3KvAcLVpZUHylaRDIP5ffwVylM/p4DHnKppil1Qq5N+IGDr3RsUwLGFkKjqsQYRKw==", "requires": { - "@web3modal/polyfills": "4.0.5", - "@web3modal/scaffold": "4.0.5", - "valtio": "1.11.2" + "@walletconnect/events": "^1.0.1", + "@walletconnect/heartbeat": "1.2.1", + "@walletconnect/jsonrpc-types": "1.0.3", + "@walletconnect/keyvaluestorage": "^1.1.1", + "@walletconnect/logger": "^2.0.1", + "events": "^3.3.0" } }, - "@web3modal/scaffold-vue": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@web3modal/scaffold-vue/-/scaffold-vue-4.0.5.tgz", - "integrity": "sha512-FrFDoqGRATPfNYdYug6vX0g79HdL8u08QcC3ZTix1yv2iYz424X7tSm+zQ0FBh7DnZPMYIximSNy1jrEw1wPoQ==", + "@walletconnect/universal-provider": { + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/@walletconnect/universal-provider/-/universal-provider-2.11.1.tgz", + "integrity": "sha512-BJvPYByIfbBYF4x8mqDV79ebQX0tD54pp8itsqrHWn0qKZeJyIH8sQ69yY0GnbJrzoFS3ZLULdC0yDxWDeuRGw==", "requires": { - "@web3modal/scaffold": "4.0.5" + "@walletconnect/jsonrpc-http-connection": "^1.0.7", + "@walletconnect/jsonrpc-provider": "1.0.13", + "@walletconnect/jsonrpc-types": "^1.0.2", + "@walletconnect/jsonrpc-utils": "^1.0.7", + "@walletconnect/logger": "^2.0.1", + "@walletconnect/sign-client": "2.11.1", + "@walletconnect/types": "2.11.1", + "@walletconnect/utils": "2.11.1", + "events": "^3.3.0" } }, - "@web3modal/siwe": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@web3modal/siwe/-/siwe-4.0.5.tgz", - "integrity": "sha512-JxYoM0rvgekpvd2Wyw1mtq7mbv8JBsbP22K5Evf4ZUupVAgoeNHDGCBKK8nKwdwMuc2AfsAcdNqx+rwS6N9WLQ==", - "optional": true, + "@walletconnect/utils": { + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/@walletconnect/utils/-/utils-2.11.1.tgz", + "integrity": "sha512-wRFDHN86dZ05mCET1H3912odIeQa8j7cZKxl1FlWRpV2YsILj9HCYSX6Uq2brwO02Kv2vryke44G1r8XI/LViA==", "requires": { - "@web3modal/core": "4.0.5", - "@web3modal/scaffold-utils": "4.0.5", - "react": ">=17", - "react-dom": ">=17", - "vue": ">=3" + "@stablelib/chacha20poly1305": "1.0.1", + "@stablelib/hkdf": "1.0.1", + "@stablelib/random": "^1.0.2", + "@stablelib/sha256": "1.0.1", + "@stablelib/x25519": "^1.0.3", + "@walletconnect/relay-api": "^1.0.9", + "@walletconnect/safe-json": "^1.0.2", + "@walletconnect/time": "^1.0.2", + "@walletconnect/types": "2.11.1", + "@walletconnect/window-getters": "^1.0.1", + "@walletconnect/window-metadata": "^1.0.1", + "detect-browser": "5.3.0", + "query-string": "7.1.3", + "uint8arrays": "^3.1.0" } }, - "@web3modal/ui": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@web3modal/ui/-/ui-4.0.5.tgz", - "integrity": "sha512-IGNzHtRWZjbjv/8s7kbVknrlV/R0OrVTmlrQMa4H16kEuInWBZkKjfJ6zlqEKNrhppJ01Ft11h4d3NWscu47fg==", + "@walletconnect/window-getters": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@walletconnect/window-getters/-/window-getters-1.0.1.tgz", + "integrity": "sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q==", "requires": { - "lit": "3.1.0", - "qrcode": "1.5.3" - }, - "dependencies": { - "@lit/reactive-element": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.0.4.tgz", - "integrity": "sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==", - "requires": { - "@lit-labs/ssr-dom-shim": "^1.2.0" - } - }, - "lit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lit/-/lit-3.1.0.tgz", - "integrity": "sha512-rzo/hmUqX8zmOdamDAeydfjsGXbbdtAFqMhmocnh2j9aDYqbu0fjXygjCa0T99Od9VQ/2itwaGrjZz/ZELVl7w==", - "requires": { - "@lit/reactive-element": "^2.0.0", - "lit-element": "^4.0.0", - "lit-html": "^3.1.0" - } - }, - "lit-element": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.0.4.tgz", - "integrity": "sha512-98CvgulX6eCPs6TyAIQoJZBCQPo80rgXR+dVBs61cstJXqtI+USQZAbA4gFHh6L/mxBx9MrgPLHLsUgDUHAcCQ==", - "requires": { - "@lit-labs/ssr-dom-shim": "^1.2.0", - "@lit/reactive-element": "^2.0.4", - "lit-html": "^3.1.2" - } - }, - "lit-html": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.1.2.tgz", - "integrity": "sha512-3OBZSUrPnAHoKJ9AMjRL/m01YJxQMf+TMHanNtTHG68ubjnZxK0RFl102DPzsw4mWnHibfZIBJm3LWCZ/LmMvg==", - "requires": { - "@types/trusted-types": "^2.0.2" - } - } + "tslib": "1.14.1" } }, - "@web3modal/wallet": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@web3modal/wallet/-/wallet-4.0.5.tgz", - "integrity": "sha512-rw9LtXX7azOjpV/WWh2KRG4zlvXW+tE+QRxl0b12S4WgQXLoteqzAFiumvg/H4fBf73WFJ6Bos3g7Mf4M8Dp6A==", + "@walletconnect/window-metadata": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@walletconnect/window-metadata/-/window-metadata-1.0.1.tgz", + "integrity": "sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA==", "requires": { - "zod": "3.22.4" + "@walletconnect/window-getters": "^1.0.1", + "tslib": "1.14.1" } }, "abbrev": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", - "integrity": "sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==", - "dev": true + "integrity": "sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==" }, "abitype": { "version": "0.8.11", @@ -19944,14 +21917,12 @@ "acorn-walk": { "version": "8.3.1", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.1.tgz", - "integrity": "sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==", - "dev": true + "integrity": "sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==" }, "adm-zip": { "version": "0.4.16", "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", - "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", - "dev": true + "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==" }, "aes-js": { "version": "4.0.0-beta.5", @@ -19962,7 +21933,6 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, "requires": { "debug": "4" } @@ -19971,7 +21941,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, "requires": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -20140,7 +22109,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==", - "dev": true, "optional": true, "peer": true }, @@ -20148,7 +22116,6 @@ "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, "requires": { "string-width": "^4.1.0" } @@ -20156,14 +22123,12 @@ "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==", - "dev": true + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==" }, "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, "requires": { "type-fest": "^0.21.3" } @@ -20177,7 +22142,6 @@ "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, "requires": { "color-convert": "^1.9.0" } @@ -20191,8 +22155,7 @@ "antlr4ts": { "version": "0.5.0-alpha.4", "resolved": "https://registry.npmjs.org/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz", - "integrity": "sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==", - "dev": true + "integrity": "sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==" }, "anymatch": { "version": "3.1.3", @@ -20206,20 +22169,17 @@ "arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" }, "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 + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "array-back": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", - "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", - "dev": true + "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==" }, "array-buffer-byte-length": { "version": "1.0.0", @@ -20247,14 +22207,12 @@ "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 + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" }, "array-uniq": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", - "dev": true + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==" }, "array.prototype.findlastindex": { "version": "1.2.3", @@ -20311,8 +22269,7 @@ "asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "dev": true + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" }, "asn1js": { "version": "3.0.5", @@ -20336,8 +22293,7 @@ "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 + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==" }, "ast-parents": { "version": "0.0.1", @@ -20348,14 +22304,12 @@ "astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==" }, "async": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==", - "dev": true + "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==" }, "async-mutex": { "version": "0.2.6", @@ -20380,8 +22334,7 @@ "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==", - "dev": true + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" }, "atomic-sleep": { "version": "1.0.0", @@ -20398,7 +22351,6 @@ "version": "0.21.4", "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "dev": true, "requires": { "follow-redirects": "^1.14.0" } @@ -20406,14 +22358,12 @@ "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "base-x": { "version": "3.0.9", "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", - "dev": true, "requires": { "safe-buffer": "^5.0.1" } @@ -20434,12 +22384,6 @@ "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" }, - "bigint-crypto-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/bigint-crypto-utils/-/bigint-crypto-utils-3.3.0.tgz", - "integrity": "sha512-jOTSb+drvEDxEq6OuUybOAv/xxoh3cuYRUIPyu8sSHQNKM303UQ2R1DAo45o1AkcIXw6fzbaFI1+xGGdaXs2lg==", - "dev": true - }, "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -20448,8 +22392,7 @@ "blakejs": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", - "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==", - "dev": true + "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==" }, "bn.js": { "version": "5.2.1", @@ -20460,7 +22403,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", - "dev": true, "requires": { "ansi-align": "^3.0.0", "camelcase": "^6.2.0", @@ -20476,7 +22418,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -20485,7 +22426,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -20495,7 +22435,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "requires": { "color-name": "~1.1.4" } @@ -20503,20 +22442,17 @@ "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==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, "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, "requires": { "has-flag": "^4.0.0" } @@ -20524,8 +22460,7 @@ "type-fest": { "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 + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" } } }, @@ -20533,7 +22468,6 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -20555,14 +22489,12 @@ "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 + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==" }, "browserify-aes": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, "requires": { "buffer-xor": "^1.0.3", "cipher-base": "^1.0.0", @@ -20576,7 +22508,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", - "dev": true, "requires": { "base-x": "^3.0.2" } @@ -20585,7 +22516,6 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", - "dev": true, "requires": { "bs58": "^4.0.0", "create-hash": "^1.1.0", @@ -20604,14 +22534,12 @@ "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==", - "dev": true + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, "buffer-xor": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", - "dev": true + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" }, "bufferutil": { "version": "4.0.8", @@ -20624,8 +22552,7 @@ "bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" }, "cacheable-lookup": { "version": "7.0.0", @@ -20652,7 +22579,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", - "dev": true, "requires": { "function-bind": "^1.1.2", "get-intrinsic": "^1.2.1", @@ -20668,14 +22594,12 @@ "camelcase": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", - "dev": true + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" }, "cbor": { "version": "9.0.2", @@ -20715,7 +22639,6 @@ "version": "4.4.0", "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.0.tgz", "integrity": "sha512-x9cHNq1uvkCdU+5xTkNh5WtgD4e4yDFCsp9jVc7N7qVeKeftv3gO/ZrviX5d+3ZfxdYnZXZYujjRInu1RogU6A==", - "dev": true, "requires": { "assertion-error": "^1.1.0", "check-error": "^1.0.3", @@ -20730,7 +22653,6 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", - "dev": true, "requires": { "check-error": "^1.0.2" } @@ -20739,7 +22661,6 @@ "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, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -20749,14 +22670,12 @@ "charenc": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", - "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", - "dev": true + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==" }, "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, "requires": { "get-func-name": "^2.0.2" } @@ -20779,14 +22698,12 @@ "ci-info": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" }, "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==", - "dev": true, "requires": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -20803,20 +22720,17 @@ "clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" }, "cli-boxes": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", - "dev": true + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==" }, "cli-table3": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz", "integrity": "sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==", - "dev": true, "requires": { "colors": "^1.1.2", "object-assign": "^4.1.0", @@ -20826,20 +22740,17 @@ "ansi-regex": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", - "dev": true + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==" }, "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==", - "dev": true + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==" }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" @@ -20849,7 +22760,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", - "dev": true, "requires": { "ansi-regex": "^3.0.0" } @@ -20870,7 +22780,6 @@ "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, "requires": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -20891,7 +22800,6 @@ "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, "requires": { "color-name": "1.1.3" } @@ -20899,14 +22807,12 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, "colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "dev": true + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" }, "combined-stream": { "version": "1.0.8", @@ -20919,14 +22825,12 @@ "command-exists": { "version": "1.2.9", "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", - "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", - "dev": true + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==" }, "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==", - "dev": true, "requires": { "array-back": "^3.1.0", "find-replace": "^3.0.0", @@ -20938,7 +22842,6 @@ "version": "6.1.3", "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.3.tgz", "integrity": "sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==", - "dev": true, "requires": { "array-back": "^4.0.2", "chalk": "^2.4.2", @@ -20949,34 +22852,29 @@ "array-back": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", - "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", - "dev": true + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==" }, "typical": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", - "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", - "dev": true + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==" } } }, "commander": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", - "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", - "dev": true + "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==" }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "concat-stream": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, "requires": { "buffer-from": "^1.0.0", "inherits": "^2.0.3", @@ -20987,14 +22885,12 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" }, "readable-stream": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -21009,7 +22905,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, "requires": { "safe-buffer": "~5.1.0" } @@ -21034,8 +22929,7 @@ "cookie": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "dev": true + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==" }, "cookie-es": { "version": "1.0.0", @@ -21045,8 +22939,7 @@ "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==", - "dev": true + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, "cosmiconfig": { "version": "8.3.6", @@ -21069,7 +22962,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, "requires": { "cipher-base": "^1.0.1", "inherits": "^2.0.1", @@ -21082,7 +22974,6 @@ "version": "1.1.7", "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, "requires": { "cipher-base": "^1.0.3", "create-hash": "^1.1.0", @@ -21095,8 +22986,7 @@ "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==", - "dev": true + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" }, "cross-fetch": { "version": "4.0.0", @@ -21125,8 +23015,7 @@ "crypt": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", - "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", - "dev": true + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==" }, "csstype": { "version": "3.1.3", @@ -21150,8 +23039,7 @@ "death": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/death/-/death-1.1.0.tgz", - "integrity": "sha512-vsV6S4KVHvTGxbEcij7hkWRv0It+sGGWVOM67dQde/o5Xjnr+KmLjxWJii2uEObIrt1CcM9w0Yaovx+iOlIL+w==", - "dev": true + "integrity": "sha512-vsV6S4KVHvTGxbEcij7hkWRv0It+sGGWVOM67dQde/o5Xjnr+KmLjxWJii2uEObIrt1CcM9w0Yaovx+iOlIL+w==" }, "debug": { "version": "4.3.4", @@ -21164,8 +23052,7 @@ "decamelize": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==" }, "decode-uri-component": { "version": "0.2.2", @@ -21193,7 +23080,6 @@ "version": "4.1.3", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", - "dev": true, "requires": { "type-detect": "^4.0.0" } @@ -21201,14 +23087,12 @@ "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==", - "dev": true + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" }, "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 + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" }, "defer-to-connect": { "version": "2.0.1", @@ -21220,7 +23104,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", - "dev": true, "requires": { "get-intrinsic": "^1.2.1", "gopd": "^1.0.1", @@ -21256,8 +23139,7 @@ "depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" }, "destr": { "version": "2.0.2", @@ -21279,14 +23161,12 @@ "diff": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "dev": true + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==" }, "difflib": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/difflib/-/difflib-0.2.4.tgz", "integrity": "sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w==", - "dev": true, "requires": { "heap": ">= 0.2.0" } @@ -21300,7 +23180,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, "requires": { "path-type": "^4.0.0" } @@ -21379,7 +23258,6 @@ "version": "2.4.1", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", - "dev": true, "requires": { "ansi-colors": "^4.1.1", "strip-ansi": "^6.0.1" @@ -21393,8 +23271,7 @@ "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 + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==" }, "error-ex": { "version": "1.3.2", @@ -21547,20 +23424,17 @@ "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" }, "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 + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" }, "escodegen": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", "integrity": "sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A==", - "dev": true, "requires": { "esprima": "^2.7.1", "estraverse": "^1.9.1", @@ -21572,14 +23446,12 @@ "estraverse": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", - "integrity": "sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA==", - "dev": true + "integrity": "sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA==" }, "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "dev": true, "requires": { "prelude-ls": "~1.1.2", "type-check": "~0.3.2" @@ -21589,7 +23461,6 @@ "version": "0.8.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, "requires": { "deep-is": "~0.1.3", "fast-levenshtein": "~2.0.6", @@ -21602,14 +23473,12 @@ "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "dev": true + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==" }, "source-map": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", "integrity": "sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA==", - "dev": true, "optional": true, "peer": true, "requires": { @@ -21620,7 +23489,6 @@ "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "dev": true, "requires": { "prelude-ls": "~1.1.2" } @@ -21965,8 +23833,7 @@ "esprima": { "version": "2.7.3", "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==", - "dev": true + "integrity": "sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==" }, "esquery": { "version": "1.5.0", @@ -22000,8 +23867,7 @@ "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" }, "eth-block-tracker": { "version": "7.1.0", @@ -22026,7 +23892,6 @@ "version": "0.2.27", "resolved": "https://registry.npmjs.org/eth-gas-reporter/-/eth-gas-reporter-0.2.27.tgz", "integrity": "sha512-femhvoAM7wL0GcI8ozTdxfuBtBFJ9qsyIAsmKVjlWAHUbdnnXHt+lKzz/kmldM5lA9jLuNHGwuIxorNpLbR1Zw==", - "dev": true, "requires": { "@solidity-parser/parser": "^0.14.0", "axios": "^1.5.1", @@ -22047,7 +23912,6 @@ "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==", - "dev": true, "requires": { "@ethersproject/abi": "^5.7.0", "@ethersproject/abstract-provider": "^5.7.0", @@ -22065,7 +23929,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", - "dev": true, "requires": { "@ethersproject/abstract-signer": "^5.7.0", "@ethersproject/basex": "^5.7.0", @@ -22085,7 +23948,6 @@ "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==", - "dev": true, "requires": { "@ethersproject/abstract-signer": "^5.7.0", "@ethersproject/address": "^5.7.0", @@ -22106,7 +23968,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", - "dev": true, "requires": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/sha2": "^5.7.0" @@ -22116,7 +23977,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", - "dev": true, "requires": { "@ethersproject/bignumber": "^5.7.0", "@ethersproject/bytes": "^5.7.0", @@ -22130,7 +23990,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", - "dev": true, "requires": { "@ethersproject/bignumber": "^5.7.0", "@ethersproject/constants": "^5.7.0", @@ -22141,7 +24000,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", - "dev": true, "requires": { "@ethersproject/abstract-provider": "^5.7.0", "@ethersproject/abstract-signer": "^5.7.0", @@ -22164,7 +24022,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", - "dev": true, "requires": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/hash": "^5.7.0", @@ -22175,15 +24032,13 @@ }, "aes-js": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", - "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", - "dev": true + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==" }, "axios": { "version": "1.6.5", "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.5.tgz", "integrity": "sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg==", - "dev": true, "requires": { "follow-redirects": "^1.15.4", "form-data": "^4.0.0", @@ -22194,7 +24049,6 @@ "version": "5.7.2", "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", - "dev": true, "requires": { "@ethersproject/abi": "5.7.0", "@ethersproject/abstract-provider": "5.7.0", @@ -22270,7 +24124,6 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz", "integrity": "sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==", - "dev": true, "requires": { "js-sha3": "^0.8.0" } @@ -22279,7 +24132,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz", "integrity": "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==", - "dev": true, "requires": { "@noble/hashes": "1.2.0", "@noble/secp256k1": "1.7.1", @@ -22291,7 +24143,6 @@ "version": "0.6.8", "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz", "integrity": "sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==", - "dev": true, "requires": { "bn.js": "^4.11.8", "ethereumjs-util": "^6.0.0" @@ -22300,8 +24151,7 @@ "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==", - "dev": true + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" } } }, @@ -22309,7 +24159,6 @@ "version": "6.2.1", "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", - "dev": true, "requires": { "@types/bn.js": "^4.11.3", "bn.js": "^4.11.0", @@ -22324,7 +24173,6 @@ "version": "4.11.6", "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", - "dev": true, "requires": { "@types/node": "*" } @@ -22332,14 +24180,12 @@ "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==", - "dev": true + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" }, "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==", - "dev": true, "requires": { "@types/pbkdf2": "^3.0.0", "@types/secp256k1": "^4.0.1", @@ -22692,7 +24538,6 @@ "version": "0.1.6", "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", "integrity": "sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==", - "dev": true, "requires": { "bn.js": "4.11.6", "number-to-bn": "1.7.0" @@ -22701,8 +24546,7 @@ "bn.js": { "version": "4.11.6", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", - "dev": true + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==" } } }, @@ -22710,7 +24554,6 @@ "version": "0.1.6", "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", - "dev": true, "requires": { "is-hex-prefixed": "1.0.0", "strip-hex-prefix": "1.0.0" @@ -22739,7 +24582,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, "requires": { "md5.js": "^1.3.4", "safe-buffer": "^5.1.1" @@ -22786,8 +24628,7 @@ "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 + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "fast-diff": { "version": "1.3.0", @@ -22799,7 +24640,6 @@ "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, "requires": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -22817,8 +24657,7 @@ "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 + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" }, "fast-redact": { "version": "3.3.0", @@ -22834,7 +24673,6 @@ "version": "1.16.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz", "integrity": "sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==", - "dev": true, "requires": { "reusify": "^1.0.4" } @@ -22865,7 +24703,6 @@ "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==", - "dev": true, "requires": { "array-back": "^3.0.1" } @@ -22874,7 +24711,6 @@ "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==", - "dev": true, "requires": { "locate-path": "^2.0.0" } @@ -22882,8 +24718,7 @@ "flat": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==" }, "flat-cache": { "version": "3.2.0", @@ -22917,7 +24752,6 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/fmix/-/fmix-0.1.0.tgz", "integrity": "sha512-Y6hyofImk9JdzU8k5INtTXX1cu8LDlePWDFU5sftm9H+zKCr5SGrVjdhkvsim646cw5zD0nADj8oHyXMZmCZ9w==", - "dev": true, "requires": { "imul": "^1.0.0" } @@ -22965,14 +24799,12 @@ "fp-ts": { "version": "1.19.3", "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz", - "integrity": "sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==", - "dev": true + "integrity": "sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==" }, "fs-extra": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, "requires": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", @@ -22982,14 +24814,12 @@ "fs-readdir-recursive": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", - "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", - "dev": true + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==" }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "fsevents": { "version": "2.3.3", @@ -23000,8 +24830,7 @@ "function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" }, "function.prototype.name": { "version": "1.1.6", @@ -23029,14 +24858,12 @@ "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 + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==" }, "get-intrinsic": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", - "dev": true, "requires": { "function-bind": "^1.1.2", "has-proto": "^1.0.1", @@ -23047,8 +24874,7 @@ "get-port": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", - "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==", - "dev": true + "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==" }, "get-port-please": { "version": "3.1.2", @@ -23084,7 +24910,6 @@ "version": "0.0.2", "resolved": "https://registry.npmjs.org/ghost-testrpc/-/ghost-testrpc-0.0.2.tgz", "integrity": "sha512-i08dAEgJ2g8z5buJIrCTduwPIhih3DP+hOCTyyryikfV8T0bNvHnGXO67i0DD1H4GBDETTclPy9njZbfluQYrQ==", - "dev": true, "requires": { "chalk": "^2.4.2", "node-emoji": "^1.10.0" @@ -23094,7 +24919,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -23116,7 +24940,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", - "dev": true, "requires": { "global-prefix": "^3.0.0" } @@ -23125,7 +24948,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", - "dev": true, "requires": { "ini": "^1.3.5", "kind-of": "^6.0.2", @@ -23136,7 +24958,6 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, "requires": { "isexe": "^2.0.0" } @@ -23187,7 +25008,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, "requires": { "get-intrinsic": "^1.1.3" } @@ -23214,8 +25034,7 @@ "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==", - "dev": true + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, "graphemer": { "version": "1.4.0", @@ -23243,7 +25062,6 @@ "version": "4.7.8", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", - "dev": true, "requires": { "minimist": "^1.2.5", "neo-async": "^2.6.2", @@ -23253,24 +25071,16 @@ } }, "hardhat": { - "version": "2.20.1", - "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.20.1.tgz", - "integrity": "sha512-q75xDQiQtCZcTMBwjTovrXEU5ECr49baxr4/OBkIu/ULTPzlB20yk1dRWNmD2IFbAeAeXggaWvQAdpiScaHtPw==", - "dev": true, + "version": "2.22.1", + "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.22.1.tgz", + "integrity": "sha512-cTWYIJc5jQ132XUI8oRI/TO9L6oavPoJRCTRU9sIjkVxvkxz0Axz0K83Z3BEdJTqBQ2W84ZRoTekti84kBwCjg==", "requires": { "@ethersproject/abi": "^5.1.2", "@metamask/eth-sig-util": "^4.0.0", - "@nomicfoundation/ethereumjs-block": "5.0.4", - "@nomicfoundation/ethereumjs-blockchain": "7.0.4", + "@nomicfoundation/edr": "^0.3.1", "@nomicfoundation/ethereumjs-common": "4.0.4", - "@nomicfoundation/ethereumjs-evm": "2.0.4", - "@nomicfoundation/ethereumjs-rlp": "5.0.4", - "@nomicfoundation/ethereumjs-statemanager": "2.0.4", - "@nomicfoundation/ethereumjs-trie": "6.0.4", "@nomicfoundation/ethereumjs-tx": "5.0.4", "@nomicfoundation/ethereumjs-util": "9.0.4", - "@nomicfoundation/ethereumjs-verkle": "0.0.2", - "@nomicfoundation/ethereumjs-vm": "7.0.4", "@nomicfoundation/solidity-analyzer": "^0.1.0", "@sentry/node": "^5.18.1", "@types/bn.js": "^5.1.0", @@ -23311,10 +25121,9 @@ } }, "hardhat-deploy": { - "version": "0.11.45", - "resolved": "https://registry.npmjs.org/hardhat-deploy/-/hardhat-deploy-0.11.45.tgz", - "integrity": "sha512-aC8UNaq3JcORnEUIwV945iJuvBwi65tjHVDU3v6mOcqik7WAzHVCJ7cwmkkipsHrWysrB5YvGF1q9S1vIph83w==", - "dev": true, + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/hardhat-deploy/-/hardhat-deploy-0.12.2.tgz", + "integrity": "sha512-Xp/4Lb5lC/j3kvitaWW5IZN5Meqv5D3kTIifc3ZwBoQtFLN26/fDfRV6MWAAcRO9gH64hZVokvtcDdl/fd7w3A==", "requires": { "@ethersproject/abi": "^5.7.0", "@ethersproject/abstract-signer": "^5.7.0", @@ -23339,14 +25148,13 @@ "match-all": "^1.2.6", "murmur-128": "^0.2.1", "qs": "^6.9.4", - "zksync-web3": "^0.14.3" + "zksync-ethers": "^5.0.0" }, "dependencies": { "@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==", - "dev": true, "requires": { "@ethersproject/abi": "^5.7.0", "@ethersproject/abstract-provider": "^5.7.0", @@ -23364,7 +25172,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", - "dev": true, "requires": { "@ethersproject/abstract-signer": "^5.7.0", "@ethersproject/basex": "^5.7.0", @@ -23384,7 +25191,6 @@ "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==", - "dev": true, "requires": { "@ethersproject/abstract-signer": "^5.7.0", "@ethersproject/address": "^5.7.0", @@ -23405,7 +25211,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", - "dev": true, "requires": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/sha2": "^5.7.0" @@ -23415,7 +25220,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", - "dev": true, "requires": { "@ethersproject/bignumber": "^5.7.0", "@ethersproject/bytes": "^5.7.0", @@ -23429,7 +25233,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", - "dev": true, "requires": { "@ethersproject/bignumber": "^5.7.0", "@ethersproject/constants": "^5.7.0", @@ -23440,7 +25243,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", - "dev": true, "requires": { "@ethersproject/abstract-provider": "^5.7.0", "@ethersproject/abstract-signer": "^5.7.0", @@ -23463,7 +25265,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", - "dev": true, "requires": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/hash": "^5.7.0", @@ -23475,14 +25276,12 @@ "aes-js": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", - "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", - "dev": true + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==" }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -23491,7 +25290,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -23501,7 +25299,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "requires": { "color-name": "~1.1.4" } @@ -23509,14 +25306,12 @@ "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==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "ethers": { "version": "5.7.2", "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", - "dev": true, "requires": { "@ethersproject/abi": "5.7.0", "@ethersproject/abstract-provider": "5.7.0", @@ -23554,7 +25349,6 @@ "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==", - "dev": true, "requires": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -23564,14 +25358,12 @@ "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, "jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, "requires": { "graceful-fs": "^4.1.6", "universalify": "^2.0.0" @@ -23581,7 +25373,6 @@ "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, "requires": { "has-flag": "^4.0.0" } @@ -23589,15 +25380,7 @@ "universalify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true - }, - "zksync-web3": { - "version": "0.14.4", - "resolved": "https://registry.npmjs.org/zksync-web3/-/zksync-web3-0.14.4.tgz", - "integrity": "sha512-kYehMD/S6Uhe1g434UnaMN+sBr9nQm23Ywn0EUP5BfQCsbjcr3ORuS68PosZw8xUTu3pac7G6YMSnNHk+fwzvg==", - "dev": true, - "requires": {} + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==" } } }, @@ -23605,7 +25388,6 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.10.tgz", "integrity": "sha512-02N4+So/fZrzJ88ci54GqwVA3Zrf0C9duuTyGt0CFRIh/CdNwbnTgkXkRfojOMLBQ+6t+lBIkgbsOtqMvNwikA==", - "dev": true, "requires": { "array-uniq": "1.0.3", "eth-gas-reporter": "^0.2.25", @@ -23621,14 +25403,12 @@ "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==", - "dev": true + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" }, "has-property-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", - "dev": true, "requires": { "get-intrinsic": "^1.2.2" } @@ -23636,14 +25416,12 @@ "has-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "dev": true + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" }, "has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" }, "has-tostringtag": { "version": "1.0.0", @@ -23658,7 +25436,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dev": true, "requires": { "inherits": "^2.0.4", "readable-stream": "^3.6.0", @@ -23668,8 +25445,7 @@ "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==", - "dev": true + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" } } }, @@ -23686,7 +25462,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", - "dev": true, "requires": { "function-bind": "^1.1.2" } @@ -23694,14 +25469,12 @@ "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 + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" }, "heap": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz", - "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==", - "dev": true + "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==" }, "hey-listen": { "version": "1.0.8", @@ -23722,7 +25495,6 @@ "version": "8.1.3", "resolved": "https://registry.npmjs.org/http-basic/-/http-basic-8.1.3.tgz", "integrity": "sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw==", - "dev": true, "requires": { "caseless": "^0.12.0", "concat-stream": "^1.6.2", @@ -23740,7 +25512,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, "requires": { "depd": "2.0.0", "inherits": "2.0.4", @@ -23753,7 +25524,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz", "integrity": "sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==", - "dev": true, "requires": { "@types/node": "^10.0.3" }, @@ -23761,8 +25531,7 @@ "@types/node": { "version": "10.17.60", "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", - "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==", - "dev": true + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" } } }, @@ -23785,7 +25554,6 @@ "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==", - "dev": true, "requires": { "agent-base": "6", "debug": "4" @@ -23806,7 +25574,6 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, "requires": { "safer-buffer": ">= 2.1.2 < 3" } @@ -23824,14 +25591,12 @@ "ignore": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", - "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", - "dev": true + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==" }, "immutable": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz", - "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==", - "dev": true + "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==" }, "import-fresh": { "version": "3.3.0", @@ -23846,8 +25611,7 @@ "imul": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/imul/-/imul-1.0.1.tgz", - "integrity": "sha512-WFAgfwPLAjU66EKt6vRdTlKj4nAgIDQzh29JonLa4Bqtl6D8JrIMvWjCnx7xEjVNmP3U0fM5o8ZObk7d0f62bA==", - "dev": true + "integrity": "sha512-WFAgfwPLAjU66EKt6vRdTlKj4nAgIDQzh29JonLa4Bqtl6D8JrIMvWjCnx7xEjVNmP3U0fM5o8ZObk7d0f62bA==" }, "imurmurhash": { "version": "0.1.4", @@ -23858,14 +25622,12 @@ "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==", - "dev": true + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -23879,8 +25641,7 @@ "ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, "internal-slot": { "version": "1.0.6", @@ -23896,14 +25657,12 @@ "interpret": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" }, "io-ts": { "version": "1.10.4", "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-1.10.4.tgz", "integrity": "sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==", - "dev": true, "requires": { "fp-ts": "^1.0.0" } @@ -24029,8 +25788,7 @@ "is-hex-prefixed": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", - "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==", - "dev": true + "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==" }, "is-inside-container": { "version": "1.0.0", @@ -24069,8 +25827,7 @@ "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==", - "dev": true + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==" }, "is-regex": { "version": "1.1.4", @@ -24131,8 +25888,7 @@ "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 + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" }, "is-weakref": { "version": "1.0.2", @@ -24207,12 +25963,6 @@ "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==" }, - "js-sdsl": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.2.tgz", - "integrity": "sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w==", - "dev": true - }, "js-sha3": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", @@ -24227,7 +25977,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, "requires": { "argparse": "^2.0.1" } @@ -24295,7 +26044,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, "requires": { "graceful-fs": "^4.1.6" } @@ -24303,8 +26051,7 @@ "jsonschema": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.1.tgz", - "integrity": "sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==", - "dev": true + "integrity": "sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==" }, "keccak": { "version": "3.0.4", @@ -24333,14 +26080,12 @@ "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==", - "dev": true + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" }, "klaw": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", "integrity": "sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==", - "dev": true, "requires": { "graceful-fs": "^4.1.9" } @@ -24427,7 +26172,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", - "dev": true, "requires": { "p-locate": "^2.0.0", "path-exists": "^3.0.0" @@ -24436,20 +26180,17 @@ "lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "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==", - "dev": true + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" }, "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==", - "dev": true + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" }, "lodash.defaults": { "version": "4.2.0", @@ -24475,14 +26216,12 @@ "lodash.truncate": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "dev": true + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==" }, "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, "requires": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" @@ -24492,7 +26231,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -24501,7 +26239,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -24511,7 +26248,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "requires": { "color-name": "~1.1.4" } @@ -24519,20 +26255,17 @@ "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==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, "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, "requires": { "has-flag": "^4.0.0" } @@ -24551,7 +26284,6 @@ "version": "2.3.7", "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", - "dev": true, "requires": { "get-func-name": "^2.0.1" } @@ -24565,8 +26297,7 @@ "lru_map": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", - "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==", - "dev": true + "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==" }, "lru-cache": { "version": "10.2.0", @@ -24584,26 +26315,22 @@ "make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" }, "markdown-table": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz", - "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==", - "dev": true + "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==" }, "match-all": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/match-all/-/match-all-1.2.6.tgz", - "integrity": "sha512-0EESkXiTkWzrQQntBu2uzKvLu6vVkUGz40nGPbSZuegcfE5UuSzNjLaIu76zJWuaT/2I3Z/8M06OlUOZLGwLlQ==", - "dev": true + "integrity": "sha512-0EESkXiTkWzrQQntBu2uzKvLu6vVkUGz40nGPbSZuegcfE5UuSzNjLaIu76zJWuaT/2I3Z/8M06OlUOZLGwLlQ==" }, "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==", - "dev": true, "requires": { "hash-base": "^3.0.0", "inherits": "^2.0.1", @@ -24613,8 +26340,7 @@ "memorystream": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", - "dev": true + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==" }, "merge-stream": { "version": "2.0.0", @@ -24624,8 +26350,7 @@ "merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" }, "micro-ftch": { "version": "0.3.1", @@ -24684,7 +26409,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, "requires": { "brace-expansion": "^1.1.7" } @@ -24692,8 +26416,7 @@ "minimist": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" }, "minipass": { "version": "7.0.4", @@ -24705,7 +26428,6 @@ "version": "0.5.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, "requires": { "minimist": "^1.2.6" } @@ -24725,7 +26447,6 @@ "version": "0.38.5", "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz", "integrity": "sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==", - "dev": true, "requires": { "obliterator": "^2.0.0" } @@ -24734,7 +26455,6 @@ "version": "10.2.0", "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", - "dev": true, "requires": { "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", @@ -24762,14 +26482,12 @@ "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==", - "dev": true + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==" }, "brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, "requires": { "balanced-match": "^1.0.0" } @@ -24777,14 +26495,12 @@ "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 + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" }, "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, "requires": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -24793,14 +26509,12 @@ "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, "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, "requires": { "p-locate": "^5.0.0" } @@ -24809,7 +26523,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", - "dev": true, "requires": { "brace-expansion": "^2.0.1" } @@ -24817,14 +26530,12 @@ "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 + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "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, "requires": { "yocto-queue": "^0.1.0" } @@ -24833,7 +26544,6 @@ "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, "requires": { "p-limit": "^3.0.2" } @@ -24841,14 +26551,12 @@ "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 + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" }, "supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -24887,7 +26595,6 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/murmur-128/-/murmur-128-0.2.1.tgz", "integrity": "sha512-WseEgiRkI6aMFBbj8Cg9yBj/y+OdipwVC7zUo3W2W1JAJITwouUOtpqsmGSg67EQmwwSyod7hsVsWY5LsrfQVg==", - "dev": true, "requires": { "encode-utf8": "^1.0.2", "fmix": "^0.1.0", @@ -24897,8 +26604,7 @@ "nanoid": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", - "dev": true + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==" }, "natural-compare": { "version": "1.4.0", @@ -24909,8 +26615,7 @@ "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==", - "dev": true + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, "next-tick": { "version": "1.1.0", @@ -24926,7 +26631,6 @@ "version": "1.11.0", "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", - "dev": true, "requires": { "lodash": "^4.17.21" } @@ -24967,14 +26671,12 @@ "nofilter": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz", - "integrity": "sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==", - "dev": true + "integrity": "sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==" }, "nopt": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==", - "dev": true, "requires": { "abbrev": "1" } @@ -25009,7 +26711,6 @@ "version": "1.7.0", "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", "integrity": "sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==", - "dev": true, "requires": { "bn.js": "4.11.6", "strip-hex-prefix": "1.0.0" @@ -25018,22 +26719,19 @@ "bn.js": { "version": "4.11.6", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", - "dev": true + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==" } } }, "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==", - "dev": true + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" }, "object-inspect": { "version": "1.13.1", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", - "dev": true + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==" }, "object-keys": { "version": "1.1.1", @@ -25090,8 +26788,7 @@ "obliterator": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.4.tgz", - "integrity": "sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==", - "dev": true + "integrity": "sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==" }, "ofetch": { "version": "1.3.3", @@ -25146,14 +26843,12 @@ "ordinal": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/ordinal/-/ordinal-1.0.3.tgz", - "integrity": "sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ==", - "dev": true + "integrity": "sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ==" }, "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 + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==" }, "p-cancelable": { "version": "3.0.0", @@ -25165,7 +26860,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, "requires": { "p-try": "^1.0.0" } @@ -25174,7 +26868,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", - "dev": true, "requires": { "p-limit": "^1.1.0" } @@ -25183,7 +26876,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, "requires": { "aggregate-error": "^3.0.0" } @@ -25191,8 +26883,7 @@ "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==", - "dev": true + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==" }, "package-json": { "version": "8.1.1", @@ -25238,8 +26929,7 @@ "parse-cache-control": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz", - "integrity": "sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==", - "dev": true + "integrity": "sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==" }, "parse-json": { "version": "5.2.0", @@ -25256,14 +26946,12 @@ "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==" }, "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==", - "dev": true + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" }, "path-key": { "version": "3.1.1", @@ -25273,8 +26961,7 @@ "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 + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "path-scurry": { "version": "1.10.1", @@ -25289,8 +26976,7 @@ "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 + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" }, "pathe": { "version": "1.1.2", @@ -25300,14 +26986,12 @@ "pathval": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==" }, "pbkdf2": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "dev": true, "requires": { "create-hash": "^1.1.2", "create-hmac": "^1.1.4", @@ -25329,8 +27013,7 @@ "pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" }, "pino": { "version": "7.11.0", @@ -25473,8 +27156,7 @@ "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==", - "dev": true + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "process-warning": { "version": "1.0.0", @@ -25485,7 +27167,6 @@ "version": "8.3.0", "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", - "dev": true, "requires": { "asap": "~2.0.6" } @@ -25509,8 +27190,7 @@ "punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==" }, "pvtsutils": { "version": "1.3.5", @@ -25678,7 +27358,6 @@ "version": "6.11.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", - "dev": true, "requires": { "side-channel": "^1.0.4" } @@ -25697,8 +27376,7 @@ "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 + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" }, "quick-format-unescaped": { "version": "4.0.4", @@ -25720,7 +27398,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, "requires": { "safe-buffer": "^5.1.0" } @@ -25729,7 +27406,6 @@ "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==", - "dev": true, "requires": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -25801,7 +27477,6 @@ "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", - "dev": true, "requires": { "resolve": "^1.1.6" } @@ -25810,7 +27485,6 @@ "version": "2.2.3", "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", - "dev": true, "requires": { "minimatch": "^3.0.5" } @@ -25831,8 +27505,7 @@ "reduce-flatten": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", - "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", - "dev": true + "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==" }, "regexp.prototype.flags": { "version": "1.5.1", @@ -25867,7 +27540,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/req-cwd/-/req-cwd-2.0.0.tgz", "integrity": "sha512-ueoIoLo1OfB6b05COxAA9UpeoscNpYyM+BqYlA7H6LVF4hKGPXQQSSaD2YmvDVJMkk4UDpAHIeU1zG53IqjvlQ==", - "dev": true, "requires": { "req-from": "^2.0.0" } @@ -25876,7 +27548,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/req-from/-/req-from-2.0.0.tgz", "integrity": "sha512-LzTfEVDVQHBRfjOUMgNBA+V6DWsSnoeKzf42J7l0xa/B4jyPOuuF5MlNSmomLNGemWTnV2TIdjSSLnEn95fOQA==", - "dev": true, "requires": { "resolve-from": "^3.0.0" }, @@ -25884,8 +27555,7 @@ "resolve-from": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", - "dev": true + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==" } } }, @@ -25897,8 +27567,7 @@ "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==", - "dev": true + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" }, "require-main-filename": { "version": "2.0.0", @@ -25909,7 +27578,6 @@ "version": "1.17.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", - "dev": true, "requires": { "path-parse": "^1.0.6" } @@ -25944,23 +27612,54 @@ "reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" }, "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", + "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", "dev": true, "requires": { - "glob": "^7.1.3" + "glob": "^10.3.7" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dev": true, + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + } + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } } }, "ripemd160": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, "requires": { "hash-base": "^3.0.0", "inherits": "^2.0.1" @@ -25970,7 +27669,6 @@ "version": "2.2.7", "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", - "dev": true, "requires": { "bn.js": "^5.2.0" } @@ -26002,110 +27700,10 @@ "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, "requires": { "queue-microtask": "^1.2.2" } }, - "rust-verkle-wasm": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/rust-verkle-wasm/-/rust-verkle-wasm-0.0.1.tgz", - "integrity": "sha512-BN6fiTsxcd2dCECz/cHtGTt9cdLJR925nh7iAuRcj8ymKw7OOaPmCneQZ7JePOJ/ia27TjEL91VdOi88Yf+mcA==", - "dev": true - }, - "rustbn-wasm": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/rustbn-wasm/-/rustbn-wasm-0.2.0.tgz", - "integrity": "sha512-FThvYFNTqrEKGqXuseeg0zR7yROh/6U1617mCHF68OVqrN1tNKRN7Tdwy4WayPVsCmmK+eMxtIZX1qL6JxTkMg==", - "dev": true, - "requires": { - "@scure/base": "^1.1.1" - } - }, - "safe-4337-passkeys": { - "version": "file:examples/safe-4337-passkeys", - "requires": { - "@safe-global/safe-erc4337": "^0.3.0", - "@types/react": "^18.2.55", - "@types/react-dom": "^18.2.19", - "@vitejs/plugin-react-swc": "^3.6.0", - "@web3modal/ethers": "^4.0.5", - "ethers": "^6.11.1", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "typescript": "^5.3.3", - "vite": "^5.1.3" - }, - "dependencies": { - "@adraffy/ens-normalize": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz", - "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==" - }, - "@noble/curves": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", - "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", - "requires": { - "@noble/hashes": "1.3.2" - } - }, - "@noble/hashes": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", - "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==" - }, - "@types/node": { - "version": "18.15.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", - "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==" - }, - "@web3modal/ethers": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@web3modal/ethers/-/ethers-4.0.5.tgz", - "integrity": "sha512-3SteVnMGxQ2LeH1QZ+kE2S+eRqeDweMFgHWCo0z5hxocoAmeduV2E+uIsbx0OH0eC7frHgO6Ghc31e8/9509Sw==", - "requires": { - "@coinbase/wallet-sdk": "3.9.1", - "@walletconnect/ethereum-provider": "2.11.1", - "@web3modal/polyfills": "4.0.5", - "@web3modal/scaffold": "4.0.5", - "@web3modal/scaffold-react": "4.0.5", - "@web3modal/scaffold-utils": "4.0.5", - "@web3modal/scaffold-vue": "4.0.5", - "@web3modal/siwe": "4.0.5", - "react": ">=17", - "react-dom": ">=17", - "valtio": "1.11.2", - "vue": ">=3" - } - }, - "ethers": { - "version": "6.11.1", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.11.1.tgz", - "integrity": "sha512-mxTAE6wqJQAbp5QAe/+o+rXOID7Nw91OZXvgpjDa1r4fAbq2Nu314oEZSbjoRLacuCzs7kUC3clEvkCQowffGg==", - "requires": { - "@adraffy/ens-normalize": "1.10.1", - "@noble/curves": "1.2.0", - "@noble/hashes": "1.3.2", - "@types/node": "18.15.13", - "aes-js": "4.0.0-beta.5", - "tslib": "2.4.0", - "ws": "8.5.0" - } - }, - "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" - }, - "ws": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", - "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", - "requires": {} - } - } - }, "safe-array-concat": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", @@ -26142,14 +27740,12 @@ "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "sc-istanbul": { "version": "0.4.6", "resolved": "https://registry.npmjs.org/sc-istanbul/-/sc-istanbul-0.4.6.tgz", "integrity": "sha512-qJFF/8tW/zJsbyfh/iT/ZM5QNHE3CXxtLJbZsL+CzdJLBsPD7SedJZoUA4d8iAcN2IoMp/Dx80shOOd2x96X/g==", - "dev": true, "requires": { "abbrev": "1.0.x", "async": "1.x", @@ -26171,7 +27767,6 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, "requires": { "sprintf-js": "~1.0.2" } @@ -26180,7 +27775,6 @@ "version": "5.0.15", "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", "integrity": "sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==", - "dev": true, "requires": { "inflight": "^1.0.4", "inherits": "2", @@ -26192,14 +27786,12 @@ "has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", - "dev": true + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==" }, "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, "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -26208,22 +27800,19 @@ "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 + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" } } }, "resolve": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==", - "dev": true + "integrity": "sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==" }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", - "dev": true, "requires": { "has-flag": "^1.0.0" } @@ -26232,7 +27821,6 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, "requires": { "isexe": "^2.0.0" } @@ -26256,7 +27844,6 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", - "dev": true, "requires": { "elliptic": "^6.5.4", "node-addon-api": "^2.0.0", @@ -26266,14 +27853,12 @@ "semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" }, "serialize-javascript": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, "requires": { "randombytes": "^2.1.0" } @@ -26287,7 +27872,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", - "dev": true, "requires": { "define-data-property": "^1.1.1", "get-intrinsic": "^1.2.1", @@ -26309,14 +27893,12 @@ "setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", - "dev": true + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" }, "setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, "sha.js": { "version": "2.4.11", @@ -26331,7 +27913,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/sha1/-/sha1-1.1.1.tgz", "integrity": "sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA==", - "dev": true, "requires": { "charenc": ">= 0.0.1", "crypt": ">= 0.0.1" @@ -26354,7 +27935,6 @@ "version": "0.8.5", "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", - "dev": true, "requires": { "glob": "^7.0.0", "interpret": "^1.0.0", @@ -26365,7 +27945,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, "requires": { "call-bind": "^1.0.0", "get-intrinsic": "^1.0.2", @@ -26380,14 +27959,12 @@ "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" }, "slice-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, "requires": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -26398,7 +27975,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -26407,7 +27983,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "requires": { "color-name": "~1.1.4" } @@ -26415,8 +27990,7 @@ "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==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" } } }, @@ -26424,7 +27998,6 @@ "version": "0.7.3", "resolved": "https://registry.npmjs.org/solc/-/solc-0.7.3.tgz", "integrity": "sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA==", - "dev": true, "requires": { "command-exists": "^1.2.8", "commander": "3.0.2", @@ -26441,7 +28014,6 @@ "version": "0.30.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", "integrity": "sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==", - "dev": true, "requires": { "graceful-fs": "^4.1.2", "jsonfile": "^2.1.0", @@ -26454,16 +28026,22 @@ "version": "2.4.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", - "dev": true, "requires": { "graceful-fs": "^4.1.6" } }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + }, "semver": { "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" } } }, @@ -26626,7 +28204,6 @@ "version": "0.8.7", "resolved": "https://registry.npmjs.org/solidity-coverage/-/solidity-coverage-0.8.7.tgz", "integrity": "sha512-RzcPuNsIqVGq5F8rjQZPdI2EVdsRU7w2f1Uk1UY567n9eNcg5LSEQ3Q1WFoy9bi/2AD5SYbYK9SS/Nwh2oYbNw==", - "dev": true, "requires": { "@ethersproject/abi": "^5.0.9", "@solidity-parser/parser": "^0.18.0", @@ -26652,14 +28229,12 @@ "@solidity-parser/parser": { "version": "0.18.0", "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.18.0.tgz", - "integrity": "sha512-yfORGUIPgLck41qyN7nbwJRAx17/jAIXCTanHOJZhB6PJ1iAk/84b/xlsVKFSyNyLXIj0dhppoE0+CRws7wlzA==", - "dev": true + "integrity": "sha512-yfORGUIPgLck41qyN7nbwJRAx17/jAIXCTanHOJZhB6PJ1iAk/84b/xlsVKFSyNyLXIj0dhppoE0+CRws7wlzA==" }, "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==", - "dev": true, "requires": { "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", @@ -26670,7 +28245,6 @@ "version": "10.0.2", "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", - "dev": true, "requires": { "@types/glob": "^7.1.1", "array-union": "^2.1.0", @@ -26686,7 +28260,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, "requires": { "yallist": "^4.0.0" } @@ -26695,7 +28268,6 @@ "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, "requires": { "lru-cache": "^6.0.0" } @@ -26713,8 +28285,7 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "source-map-js": { "version": "1.0.2", @@ -26725,7 +28296,6 @@ "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==", - "dev": true, "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -26744,14 +28314,12 @@ "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" }, "stacktrace-parser": { "version": "0.1.10", "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", - "dev": true, "requires": { "type-fest": "^0.7.1" }, @@ -26759,8 +28327,7 @@ "type-fest": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", - "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", - "dev": true + "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==" } } }, @@ -26772,8 +28339,7 @@ "statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" }, "std-env": { "version": "3.7.0", @@ -26808,8 +28374,7 @@ "string-format": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/string-format/-/string-format-2.0.0.tgz", - "integrity": "sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==", - "dev": true + "integrity": "sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==" }, "string-width": { "version": "4.2.3", @@ -26897,7 +28462,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==", - "dev": true, "requires": { "is-hex-prefixed": "1.0.0" } @@ -26905,8 +28469,7 @@ "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 + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" }, "sturdy-websocket": { "version": "0.2.1", @@ -26922,7 +28485,6 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -26937,7 +28499,6 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/sync-request/-/sync-request-6.1.0.tgz", "integrity": "sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw==", - "dev": true, "requires": { "http-response-object": "^3.0.1", "sync-rpc": "^1.2.1", @@ -26948,7 +28509,6 @@ "version": "1.3.6", "resolved": "https://registry.npmjs.org/sync-rpc/-/sync-rpc-1.3.6.tgz", "integrity": "sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw==", - "dev": true, "requires": { "get-port": "^3.1.0" } @@ -26980,7 +28540,6 @@ "version": "6.8.1", "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", - "dev": true, "requires": { "ajv": "^8.0.1", "lodash.truncate": "^4.4.2", @@ -26993,7 +28552,6 @@ "version": "8.12.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, "requires": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -27004,8 +28562,7 @@ "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==", - "dev": true + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" } } }, @@ -27013,7 +28570,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz", "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==", - "dev": true, "requires": { "array-back": "^4.0.1", "deep-extend": "~0.6.0", @@ -27024,14 +28580,12 @@ "array-back": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", - "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", - "dev": true + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==" }, "typical": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", - "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", - "dev": true + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==" } } }, @@ -27045,7 +28599,6 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/then-request/-/then-request-6.0.2.tgz", "integrity": "sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA==", - "dev": true, "requires": { "@types/concat-stream": "^1.6.0", "@types/form-data": "0.0.33", @@ -27063,14 +28616,12 @@ "@types/node": { "version": "8.10.66", "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz", - "integrity": "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==", - "dev": true + "integrity": "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==" }, "form-data": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", - "dev": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -27091,7 +28642,6 @@ "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, "requires": { "os-tmpdir": "~1.0.2" } @@ -27107,8 +28657,7 @@ "toidentifier": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" }, "tr46": { "version": "0.0.3", @@ -27126,7 +28675,6 @@ "version": "2.5.1", "resolved": "https://registry.npmjs.org/ts-command-line-args/-/ts-command-line-args-2.5.1.tgz", "integrity": "sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw==", - "dev": true, "requires": { "chalk": "^4.1.0", "command-line-args": "^5.1.1", @@ -27138,7 +28686,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -27147,7 +28694,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -27157,7 +28703,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "requires": { "color-name": "~1.1.4" } @@ -27165,20 +28710,17 @@ "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==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, "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, "requires": { "has-flag": "^4.0.0" } @@ -27189,14 +28731,12 @@ "version": "7.0.3", "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-7.0.3.tgz", "integrity": "sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==", - "dev": true, "requires": {} }, "ts-node": { "version": "10.9.2", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", - "dev": true, "requires": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", @@ -27216,8 +28756,7 @@ "diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" } } }, @@ -27241,8 +28780,7 @@ "tsort": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/tsort/-/tsort-0.0.1.tgz", - "integrity": "sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==", - "dev": true + "integrity": "sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==" }, "tsx": { "version": "4.7.1", @@ -27258,14 +28796,12 @@ "tweetnacl": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", - "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", - "dev": true + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" }, "tweetnacl-util": { "version": "0.15.1", "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", - "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==", - "dev": true + "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==" }, "type": { "version": "1.2.0", @@ -27284,20 +28820,17 @@ "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 + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" }, "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 + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" }, "typechain": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/typechain/-/typechain-8.3.2.tgz", "integrity": "sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q==", - "dev": true, "requires": { "@types/prettier": "^2.1.1", "debug": "^4.3.1", @@ -27315,7 +28848,6 @@ "version": "7.1.7", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -27328,14 +28860,12 @@ "mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" }, "prettier": { "version": "2.8.8", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", - "dev": true + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==" } } }, @@ -27389,8 +28919,7 @@ "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", - "dev": true + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" }, "typedarray-to-buffer": { "version": "3.1.5", @@ -27408,8 +28937,7 @@ "typical": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", - "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", - "dev": true + "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==" }, "ufo": { "version": "1.4.0", @@ -27420,7 +28948,6 @@ "version": "3.17.4", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", - "dev": true, "optional": true, "peer": true }, @@ -27453,7 +28980,6 @@ "version": "5.28.3", "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.3.tgz", "integrity": "sha512-3ItfzbrhDlINjaP0duwnNsKpDQk3acHI3gVJ1z4fmwMK31k5G9OVIAMLSIaP6w4FaGkaAkN6zaQO9LUvZ1t7VA==", - "dev": true, "requires": { "@fastify/busboy": "^2.0.0" } @@ -27461,8 +28987,7 @@ "undici-types": { "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" }, "unenv": { "version": "1.9.0", @@ -27484,14 +29009,12 @@ "universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" }, "unstorage": { "version": "1.10.1", @@ -27530,7 +29053,6 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, "requires": { "punycode": "^2.1.0" } @@ -27552,8 +29074,7 @@ "utf8": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", - "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==", - "dev": true + "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==" }, "util-deprecate": { "version": "1.0.2", @@ -27563,14 +29084,12 @@ "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 + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" }, "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==", - "dev": true + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==" }, "valtio": { "version": "1.11.2", @@ -27670,7 +29189,6 @@ "version": "1.10.3", "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.3.tgz", "integrity": "sha512-OqcUrEE16fDBbGoQtZXWdavsPzbGIDc5v3VrRTZ0XrIpefC/viZ1ZU9bGEemazyS0catk/3rkOOxpzTfY+XsyQ==", - "dev": true, "requires": { "@ethereumjs/util": "^8.1.0", "bn.js": "^5.2.1", @@ -27686,7 +29204,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.1.0.tgz", "integrity": "sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==", - "dev": true, "requires": { "@noble/hashes": "1.3.1" } @@ -27694,14 +29211,12 @@ "@noble/hashes": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", - "integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==", - "dev": true + "integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==" }, "@scure/bip32": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.1.tgz", "integrity": "sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A==", - "dev": true, "requires": { "@noble/curves": "~1.1.0", "@noble/hashes": "~1.3.1", @@ -27712,7 +29227,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.1.tgz", "integrity": "sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==", - "dev": true, "requires": { "@noble/hashes": "~1.3.0", "@scure/base": "~1.1.0" @@ -27722,7 +29236,6 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.1.2.tgz", "integrity": "sha512-Z5Ba0T0ImZ8fqXrJbpHcbpAvIswRte2wGNR/KePnu8GbbvgJ47lMxT/ZZPG6i9Jaht4azPDop4HaM00J0J59ug==", - "dev": true, "requires": { "@noble/curves": "1.1.0", "@noble/hashes": "1.3.1", @@ -27817,7 +29330,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", - "dev": true, "requires": { "string-width": "^4.0.0" } @@ -27825,20 +29337,17 @@ "word-wrap": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==" }, "wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", - "dev": true + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==" }, "wordwrapjs": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", - "dev": true, "requires": { "reduce-flatten": "^2.0.0", "typical": "^5.2.0" @@ -27847,22 +29356,19 @@ "typical": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", - "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", - "dev": true + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==" } } }, "workerpool": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", - "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", - "dev": true + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==" }, "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, "requires": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -27873,7 +29379,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -27882,7 +29387,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "requires": { "color-name": "~1.1.4" } @@ -27890,8 +29394,7 @@ "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==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" } } }, @@ -27951,8 +29454,7 @@ "y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" }, "yaeti": { "version": "0.0.6", @@ -27968,7 +29470,6 @@ "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, "requires": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -27982,14 +29483,12 @@ "yargs-parser": { "version": "20.2.4", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==" }, "yargs-unparser": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, "requires": { "camelcase": "^6.0.0", "decamelize": "^4.0.0", @@ -28000,20 +29499,17 @@ "yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==" }, "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 + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" }, "zksync-ethers": { "version": "5.4.0", "resolved": "https://registry.npmjs.org/zksync-ethers/-/zksync-ethers-5.4.0.tgz", "integrity": "sha512-UG6czQ/xGqe7iv/Pvs3r1W/ardflSUyCZ5ZbpINNunFArxVEPVobjNLNIJjD0ZRFnEi8LGXSnBPmBnurwk4FRQ==", - "dev": true, "requires": { "ethers": "~5.7.0" }, @@ -28022,7 +29518,6 @@ "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==", - "dev": true, "requires": { "@ethersproject/abi": "^5.7.0", "@ethersproject/abstract-provider": "^5.7.0", @@ -28040,7 +29535,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", - "dev": true, "requires": { "@ethersproject/abstract-signer": "^5.7.0", "@ethersproject/basex": "^5.7.0", @@ -28060,7 +29554,6 @@ "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==", - "dev": true, "requires": { "@ethersproject/abstract-signer": "^5.7.0", "@ethersproject/address": "^5.7.0", @@ -28081,7 +29574,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", - "dev": true, "requires": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/sha2": "^5.7.0" @@ -28091,7 +29583,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", - "dev": true, "requires": { "@ethersproject/bignumber": "^5.7.0", "@ethersproject/bytes": "^5.7.0", @@ -28105,7 +29596,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", - "dev": true, "requires": { "@ethersproject/bignumber": "^5.7.0", "@ethersproject/constants": "^5.7.0", @@ -28116,7 +29606,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", - "dev": true, "requires": { "@ethersproject/abstract-provider": "^5.7.0", "@ethersproject/abstract-signer": "^5.7.0", @@ -28139,7 +29628,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", - "dev": true, "requires": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/hash": "^5.7.0", @@ -28151,14 +29639,12 @@ "aes-js": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", - "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", - "dev": true + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==" }, "ethers": { "version": "5.7.2", "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", - "dev": true, "requires": { "@ethersproject/abi": "5.7.0", "@ethersproject/abstract-provider": "5.7.0", From e0738cde6787cdfe67553c47f5ec1f8e6a82acbe Mon Sep 17 00:00:00 2001 From: Shebin John Date: Tue, 19 Mar 2024 17:57:47 +0530 Subject: [PATCH 09/12] Improving the type definition of `SAFE_ADDRESS_MAP` (#333) This PR just improves the `type` definition of `SAFE_ADDRESS_MAP` to remove some of the linting errors. P.S. `userOps` linting errors will be solved with either #294 or #316. --- examples/4337-gas-metering/alchemy/alchemy.ts | 7 +++---- examples/4337-gas-metering/gelato/gelato.ts | 7 +++---- examples/4337-gas-metering/pimlico/pimlico.ts | 7 +++---- examples/4337-gas-metering/utils/address.ts | 13 +++++++++++-- 4 files changed, 20 insertions(+), 14 deletions(-) diff --git a/examples/4337-gas-metering/alchemy/alchemy.ts b/examples/4337-gas-metering/alchemy/alchemy.ts index 4e76ffd8a..498f78934 100644 --- a/examples/4337-gas-metering/alchemy/alchemy.ts +++ b/examples/4337-gas-metering/alchemy/alchemy.ts @@ -59,10 +59,9 @@ if (!txTypes.includes(txType)) { throw new Error('TX Type Argument Invalid') } -const safeAddresses = (SAFE_ADDRESSES_MAP as Record>)[safeVersion] -let chainAddresses -if (safeAddresses) { - chainAddresses = safeAddresses[chainID] +const chainAddresses = SAFE_ADDRESSES_MAP[safeVersion]?.[chainID] +if (!chainAddresses) { + throw new Error('Missing deployment information for the passed Safe Version & chainID.') } if (apiKey === undefined) { diff --git a/examples/4337-gas-metering/gelato/gelato.ts b/examples/4337-gas-metering/gelato/gelato.ts index b8348a9ce..091a078ab 100644 --- a/examples/4337-gas-metering/gelato/gelato.ts +++ b/examples/4337-gas-metering/gelato/gelato.ts @@ -37,10 +37,9 @@ if (!txTypes.includes(txType)) { throw new Error('TX Type Argument Invalid') } -const safeAddresses = (SAFE_ADDRESSES_MAP as Record>)[safeVersion] -let chainAddresses -if (safeAddresses) { - chainAddresses = safeAddresses[chainID] +const chainAddresses = SAFE_ADDRESSES_MAP[safeVersion]?.[chainID] +if (!chainAddresses) { + throw new Error('Missing deployment information for the passed Safe Version & chainID.') } if (apiKey === undefined) { diff --git a/examples/4337-gas-metering/pimlico/pimlico.ts b/examples/4337-gas-metering/pimlico/pimlico.ts index c0d20496c..0169a5ab5 100644 --- a/examples/4337-gas-metering/pimlico/pimlico.ts +++ b/examples/4337-gas-metering/pimlico/pimlico.ts @@ -51,10 +51,9 @@ if (!txTypes.includes(txType)) { throw new Error('TX Type Argument Invalid') } -const safeAddresses = (SAFE_ADDRESSES_MAP as Record>)[safeVersion] -let chainAddresses -if (safeAddresses) { - chainAddresses = safeAddresses[chainID] +const chainAddresses = SAFE_ADDRESSES_MAP[safeVersion]?.[chainID] +if (!chainAddresses) { + throw new Error('Missing deployment information for the passed Safe Version & chainID.') } if (apiKey === undefined) { diff --git a/examples/4337-gas-metering/utils/address.ts b/examples/4337-gas-metering/utils/address.ts index dae137bc5..6fb4a9345 100644 --- a/examples/4337-gas-metering/utils/address.ts +++ b/examples/4337-gas-metering/utils/address.ts @@ -1,4 +1,13 @@ -export const SAFE_ADDRESSES_MAP = { +import { Address } from 'viem' + +export interface SafeAddresses { + ADD_MODULES_LIB_ADDRESS: Address + SAFE_4337_MODULE_ADDRESS: Address + SAFE_PROXY_FACTORY_ADDRESS: Address + SAFE_SINGLETON_ADDRESS: Address +} + +export const SAFE_ADDRESSES_MAP: Record | undefined> = { '1.4.1': { '5': { ADD_MODULES_LIB_ADDRESS: '0x8EcD4ec46D4D2a6B64fE960B3D64e8B94B2234eb', @@ -25,4 +34,4 @@ export const SAFE_ADDRESSES_MAP = { SAFE_SINGLETON_ADDRESS: '0x41675C099F32341bf84BFc5382aF534df5C7461a', }, }, -} as const +} From 91df0457fa91fdece5642302f619b7ba40c4a668 Mon Sep 17 00:00:00 2001 From: Shebin John Date: Wed, 20 Mar 2024 15:58:12 +0530 Subject: [PATCH 10/12] Porting passkey tests from 4337 (#335) This PR ports the passkey-related tests from `4337` to `passkey` module. Related to #291 --- examples/4337-passkeys/README.md | 2 +- examples/4337-passkeys/src/logic/safe.ts | 4 +- .../contracts/experimental/WebAuthnSigner.sol | 2 +- .../TestSafeSignerLaunchpad.sol} | 9 +- .../4337/contracts/test/TestUniqueSigner.sol | 19 +- modules/4337/src/deploy/experimental.ts | 44 ---- modules/4337/src/deploy/launchpad.ts | 23 -- modules/4337/test/e2e/UniqueSigner.spec.ts | 6 +- modules/4337/test/e2e/WebAuthnSigner.spec.ts | 228 ------------------ .../contracts/test/4337Dependencies.sol | 1 + .../test/TestWebAuthnSingletonSigner.sol | 53 ++++ modules/passkey/package.json | 1 + .../test/4337/WebAuthn.spec.ts} | 85 +++---- .../4337}/WebAuthnSingletonSigner.spec.ts | 32 +-- 14 files changed, 132 insertions(+), 377 deletions(-) rename modules/4337/contracts/{experimental/SafeSignerLaunchpad.sol => test/TestSafeSignerLaunchpad.sol} (97%) delete mode 100644 modules/4337/src/deploy/experimental.ts delete mode 100644 modules/4337/src/deploy/launchpad.ts delete mode 100644 modules/4337/test/e2e/WebAuthnSigner.spec.ts create mode 100644 modules/passkey/contracts/test/TestWebAuthnSingletonSigner.sol rename modules/{4337/test/erc4337/ERC4337WebAuthn.spec.ts => passkey/test/4337/WebAuthn.spec.ts} (80%) rename modules/{4337/test/e2e => passkey/test/4337}/WebAuthnSingletonSigner.spec.ts (84%) diff --git a/examples/4337-passkeys/README.md b/examples/4337-passkeys/README.md index fbe5dcbb7..0fce47cb0 100644 --- a/examples/4337-passkeys/README.md +++ b/examples/4337-passkeys/README.md @@ -1,6 +1,6 @@ # Safe + 4337 + Passkeys example application -This minimalistic example application demonstrates a Safe{Core} Smart Account deployment leveraging 4337 and Passkeys. It uses experimental and unaudited (at the moment of writing) contracts: [SafeSignerLaunchpad](https://github.com/safe-global/safe-modules/blob/959b0d3b420ce6d7d15811363e4b8fcc4640ae32/modules/4337/contracts/experimental/SafeSignerLaunchpad.sol) and [WebAuthnSigner](https://github.com/safe-global/safe-modules/blob/main/modules/4337/contracts/experimental/WebAuthnSigner.sol), which uses [FreshCryptoLib](https://github.com/rdubois-crypto/FreshCryptoLib/) under the hood. +This minimalistic example application demonstrates a Safe{Core} Smart Account deployment leveraging 4337 and Passkeys. It uses experimental and unaudited (at the moment of writing) contracts: [TestSafeSignerLaunchpad](https://github.com/safe-global/safe-modules/blob/959b0d3b420ce6d7d15811363e4b8fcc4640ae32/modules/4337/contracts/test/TestSafeSignerLaunchpad.sol) and [WebAuthnSigner](https://github.com/safe-global/safe-modules/blob/main/modules/4337/contracts/experimental/WebAuthnSigner.sol), which uses [FreshCryptoLib](https://github.com/rdubois-crypto/FreshCryptoLib/) under the hood. ## Running the app diff --git a/examples/4337-passkeys/src/logic/safe.ts b/examples/4337-passkeys/src/logic/safe.ts index 88e5eb2aa..386c0e366 100644 --- a/examples/4337-passkeys/src/logic/safe.ts +++ b/examples/4337-passkeys/src/logic/safe.ts @@ -1,5 +1,5 @@ import { ethers } from 'ethers' -import { abi as SafeSignerLaunchpadAbi } from '@safe-global/safe-4337/build/artifacts/contracts/experimental/SafeSignerLaunchpad.sol/SafeSignerLaunchpad.json' +import { abi as SafeSignerLaunchpadAbi } from '@safe-global/safe-4337/build/artifacts/contracts/test/TestSafeSignerLaunchpad.sol/TestSafeSignerLaunchpad.json' import { abi as WebAuthnSignerFactoryAbi } from '@safe-global/safe-4337/build/artifacts/contracts/experimental/WebAuthnSigner.sol/WebAuthnSignerFactory.json' import { abi as SetupModuleSetupAbi } from '@safe-global/safe-4337/build/artifacts/contracts/SafeModuleSetup.sol/SafeModuleSetup.json' import { @@ -9,7 +9,7 @@ import { import { abi as Safe4337ModuleAbi } from '@safe-global/safe-4337/build/artifacts/contracts/Safe4337Module.sol/Safe4337Module.json' import { abi as SafeProxyFactoryAbi } from '@safe-global/safe-4337/build/artifacts/@safe-global/safe-contracts/contracts/proxies/SafeProxyFactory.sol/SafeProxyFactory.json' import type { - SafeSignerLaunchpad, + TestSafeSignerLaunchpad as SafeSignerLaunchpad, Safe4337Module, SafeProxyFactory, WebAuthnSigner, diff --git a/modules/4337/contracts/experimental/WebAuthnSigner.sol b/modules/4337/contracts/experimental/WebAuthnSigner.sol index fe96cb456..f236917a4 100644 --- a/modules/4337/contracts/experimental/WebAuthnSigner.sol +++ b/modules/4337/contracts/experimental/WebAuthnSigner.sol @@ -3,7 +3,7 @@ pragma solidity >=0.8.0; import {SignatureValidatorConstants} from "./SignatureValidatorConstants.sol"; -import {IUniqueSignerFactory} from "./SafeSignerLaunchpad.sol"; +import {IUniqueSignerFactory} from "../test/TestSafeSignerLaunchpad.sol"; import {SignatureValidator} from "./SignatureValidator.sol"; import {IWebAuthnVerifier, WebAuthnConstants} from "./verifiers/WebAuthnVerifier.sol"; diff --git a/modules/4337/contracts/experimental/SafeSignerLaunchpad.sol b/modules/4337/contracts/test/TestSafeSignerLaunchpad.sol similarity index 97% rename from modules/4337/contracts/experimental/SafeSignerLaunchpad.sol rename to modules/4337/contracts/test/TestSafeSignerLaunchpad.sol index d0d2454dd..55aa9bee7 100644 --- a/modules/4337/contracts/experimental/SafeSignerLaunchpad.sol +++ b/modules/4337/contracts/test/TestSafeSignerLaunchpad.sol @@ -5,7 +5,6 @@ import {IAccount} from "@account-abstraction/contracts/interfaces/IAccount.sol"; import {PackedUserOperation} from "@account-abstraction/contracts/interfaces/PackedUserOperation.sol"; import {_packValidationData} from "@account-abstraction/contracts/core/Helpers.sol"; import {SafeStorage} from "@safe-global/safe-contracts/contracts/libraries/SafeStorage.sol"; -import {SignatureValidatorConstants} from "./SignatureValidatorConstants.sol"; interface IUniqueSignerFactory { /** @@ -44,7 +43,7 @@ interface IUniqueSignerFactory { * @title SafeOpLaunchpad - A contract for Safe initialization with custom unique signers that would violate ERC-4337 factory rules. * @dev The is intended to be set as a Safe proxy's implementation for ERC-4337 user operation that deploys the account. */ -contract SafeSignerLaunchpad is IAccount, SafeStorage, SignatureValidatorConstants { +contract TestSafeSignerLaunchpad is IAccount, SafeStorage { bytes32 private constant DOMAIN_SEPARATOR_TYPEHASH = keccak256("EIP712Domain(uint256 chainId,address verifyingContract)"); // keccak256("SafeSignerLaunchpad.initHash") - 1 @@ -204,7 +203,11 @@ contract SafeSignerLaunchpad is IAccount, SafeStorage, SignatureValidatorConstan bytes4 magicValue ) { // The timestamps are validated by the entry point, therefore we will not check them again - validationData = _packValidationData(magicValue != EIP1271_MAGIC_VALUE, validUntil, validAfter); + validationData = _packValidationData( + magicValue != IUniqueSignerFactory.isValidSignatureForSigner.selector, + validUntil, + validAfter + ); } catch { validationData = _packValidationData(true, validUntil, validAfter); } diff --git a/modules/4337/contracts/test/TestUniqueSigner.sol b/modules/4337/contracts/test/TestUniqueSigner.sol index fdc5c113e..58705b77e 100644 --- a/modules/4337/contracts/test/TestUniqueSigner.sol +++ b/modules/4337/contracts/test/TestUniqueSigner.sol @@ -2,29 +2,32 @@ /* solhint-disable one-contract-per-file */ pragma solidity >=0.8.0; -import {IUniqueSignerFactory} from "../experimental/SafeSignerLaunchpad.sol"; -import {SignatureValidator} from "../experimental/SignatureValidator.sol"; -import {SignatureValidatorConstants} from "../experimental/SignatureValidatorConstants.sol"; +import {ISignatureValidator} from "@safe-global/safe-contracts/contracts/interfaces/ISignatureValidator.sol"; +import {IUniqueSignerFactory} from "./TestSafeSignerLaunchpad.sol"; function checkSignature(bytes32 message, uint256 signature, uint256 key) pure returns (bool isValid) { // A very silly signing scheme where the `message = signature ^ key` isValid = uint256(message) == signature ^ key; } -contract TestUniqueSigner is SignatureValidator { +contract TestUniqueSigner is ISignatureValidator { uint256 public immutable KEY; constructor(uint256 key) { KEY = key; } - function _verifySignature(bytes32 message, bytes calldata signatureData) internal view virtual override returns (bool isValid) { + function isValidSignature(bytes memory data, bytes memory signatureData) public view virtual override returns (bytes4 magicValue) { uint256 signature = abi.decode(signatureData, (uint256)); - isValid = checkSignature(message, signature, KEY); + + // A very silly signing scheme where the `message = signature ^ key` + if (checkSignature(keccak256(data), signature, KEY)) { + magicValue = this.isValidSignature.selector; + } } } -contract TestUniqueSignerFactory is IUniqueSignerFactory, SignatureValidatorConstants { +contract TestUniqueSignerFactory is IUniqueSignerFactory { function getSigner(bytes calldata data) public view returns (address signer) { uint256 key = abi.decode(data, (uint256)); signer = _getSigner(key); @@ -47,7 +50,7 @@ contract TestUniqueSignerFactory is IUniqueSignerFactory, SignatureValidatorCons uint256 key = abi.decode(signerData, (uint256)); uint256 signature = abi.decode(signatureData, (uint256)); if (checkSignature(message, signature, key)) { - magicValue = EIP1271_MAGIC_VALUE; + magicValue = this.isValidSignatureForSigner.selector; } } diff --git a/modules/4337/src/deploy/experimental.ts b/modules/4337/src/deploy/experimental.ts deleted file mode 100644 index e8f94b220..000000000 --- a/modules/4337/src/deploy/experimental.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { DeployFunction } from 'hardhat-deploy/types' - -const deploy: DeployFunction = async ({ deployments, getNamedAccounts, network }) => { - if (!network.tags.dev && !network.tags.test) { - return - } - - const { deployer } = await getNamedAccounts() - const { deploy } = deployments - - const entryPoint = await deployments.get('EntryPoint') - - const p256Verifier = await deploy('P256Verifier', { - from: deployer, - args: [], - log: true, - deterministicDeployment: true, - }) - - await deploy('WebAuthnVerifier', { - from: deployer, - args: [p256Verifier.address], - log: true, - deterministicDeployment: true, - }) - - await deploy('WebAuthnSignerFactory', { - from: deployer, - args: [], - log: true, - deterministicDeployment: true, - }) - - await deploy('SafeSignerLaunchpad', { - from: deployer, - args: [entryPoint.address], - log: true, - deterministicDeployment: true, - }) -} - -deploy.dependencies = ['entrypoint'] - -export default deploy diff --git a/modules/4337/src/deploy/launchpad.ts b/modules/4337/src/deploy/launchpad.ts deleted file mode 100644 index 70071f673..000000000 --- a/modules/4337/src/deploy/launchpad.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { DeployFunction } from 'hardhat-deploy/types' - -const deploy: DeployFunction = async ({ deployments, getNamedAccounts, network }) => { - if (!network.tags.dev && !network.tags.test) { - return - } - - const { deployer } = await getNamedAccounts() - const { deploy } = deployments - - const entryPoint = await deployments.get('EntryPoint') - - await deploy('SafeSignerLaunchpad', { - from: deployer, - args: [entryPoint.address], - log: true, - deterministicDeployment: true, - }) -} - -deploy.dependencies = ['entrypoint'] - -export default deploy diff --git a/modules/4337/test/e2e/UniqueSigner.spec.ts b/modules/4337/test/e2e/UniqueSigner.spec.ts index 7b62e05da..be52c9821 100644 --- a/modules/4337/test/e2e/UniqueSigner.spec.ts +++ b/modules/4337/test/e2e/UniqueSigner.spec.ts @@ -12,7 +12,7 @@ describe('Unique Signers [@4337]', () => { }) const setupTests = deployments.createFixture(async ({ deployments }) => { - const { EntryPoint, Safe4337Module, SafeSignerLaunchpad, SafeProxyFactory, SafeModuleSetup, SafeL2, MultiSend } = + const { EntryPoint, Safe4337Module, SafeProxyFactory, SafeModuleSetup, SafeL2, MultiSend } = await deployments.run() const [user] = await prepareAccounts() const bundler = bundlerRpc() @@ -21,10 +21,12 @@ describe('Unique Signers [@4337]', () => { const module = await ethers.getContractAt('Safe4337Module', Safe4337Module.address) const proxyFactory = await ethers.getContractAt('SafeProxyFactory', SafeProxyFactory.address) const safeModuleSetup = await ethers.getContractAt('SafeModuleSetup', SafeModuleSetup.address) - const signerLaunchpad = await ethers.getContractAt('SafeSignerLaunchpad', SafeSignerLaunchpad.address) const singleton = await ethers.getContractAt('SafeL2', SafeL2.address) const multiSend = await ethers.getContractAt('MultiSend', MultiSend.address) + const TestSafeSignerLaunchpad = await ethers.getContractFactory('TestSafeSignerLaunchpad') + const signerLaunchpad = await TestSafeSignerLaunchpad.deploy(entryPoint) + const TestUniqueSignerFactory = await ethers.getContractFactory('TestUniqueSignerFactory') const signerFactory = await TestUniqueSignerFactory.deploy() diff --git a/modules/4337/test/e2e/WebAuthnSigner.spec.ts b/modules/4337/test/e2e/WebAuthnSigner.spec.ts deleted file mode 100644 index b70edd512..000000000 --- a/modules/4337/test/e2e/WebAuthnSigner.spec.ts +++ /dev/null @@ -1,228 +0,0 @@ -import { bundlerRpc, prepareAccounts, waitForUserOp } from '@safe-global/safe-4337-local-bundler' -import { expect } from 'chai' -import { deployments, ethers, network } from 'hardhat' -import { chainId } from '../utils/encoding' -import { - UserVerificationRequirement, - WebAuthnCredentials, - extractClientDataFields, - extractPublicKey, - extractSignature, -} from '../utils/webauthn' -import { packGasParameters, unpackUserOperation } from '../../src/utils/userOp' - -describe('WebAuthn Signers [@4337]', () => { - before(function () { - if (network.name !== 'localhost') { - this.skip() - } - }) - - const setupTests = deployments.createFixture(async ({ deployments }) => { - const { EntryPoint, Safe4337Module, SafeSignerLaunchpad, SafeProxyFactory, SafeModuleSetup, SafeL2, WebAuthnVerifier } = - await deployments.run() - const [user] = await prepareAccounts() - const bundler = bundlerRpc() - - const entryPoint = await ethers.getContractAt('IEntryPoint', EntryPoint.address) - const module = await ethers.getContractAt('Safe4337Module', Safe4337Module.address) - const proxyFactory = await ethers.getContractAt('SafeProxyFactory', SafeProxyFactory.address) - const safeModuleSetup = await ethers.getContractAt('SafeModuleSetup', SafeModuleSetup.address) - const signerLaunchpad = await ethers.getContractAt('SafeSignerLaunchpad', SafeSignerLaunchpad.address) - const singleton = await ethers.getContractAt('SafeL2', SafeL2.address) - const webAuthnVerifier = await ethers.getContractAt('WebAuthnVerifier', WebAuthnVerifier.address) - - const WebAuthnSignerFactory = await ethers.getContractFactory('WebAuthnSignerFactory') - const signerFactory = await WebAuthnSignerFactory.deploy() - - const navigator = { - credentials: new WebAuthnCredentials(), - } - - return { - user, - bundler, - proxyFactory, - safeModuleSetup, - module, - entryPoint, - signerLaunchpad, - singleton, - signerFactory, - navigator, - webAuthnVerifier, - } - }) - - it('should execute a user op and deploy a WebAuthn signer', async () => { - const { - user, - bundler, - proxyFactory, - safeModuleSetup, - module, - entryPoint, - signerLaunchpad, - singleton, - signerFactory, - navigator, - webAuthnVerifier, - } = await setupTests() - const webAuthnVerifierAddress = await webAuthnVerifier.getAddress() - - const credential = navigator.credentials.create({ - publicKey: { - rp: { - name: 'Safe', - id: 'safe.global', - }, - user: { - id: ethers.getBytes(ethers.id('chucknorris')), - name: 'chucknorris', - displayName: 'Chuck Norris', - }, - challenge: ethers.toBeArray(Date.now()), - pubKeyCredParams: [{ type: 'public-key', alg: -7 }], - }, - }) - const publicKey = extractPublicKey(credential.response) - const signerData = ethers.AbiCoder.defaultAbiCoder().encode( - ['uint256', 'uint256', 'address'], - [publicKey.x, publicKey.y, webAuthnVerifierAddress], - ) - const signerAddress = await signerFactory.getSigner(signerData) - - const safeInit = { - singleton: singleton.target, - signerFactory: signerFactory.target, - signerData, - setupTo: safeModuleSetup.target, - setupData: safeModuleSetup.interface.encodeFunctionData('enableModules', [[module.target]]), - fallbackHandler: module.target, - } - const safeInitHash = ethers.TypedDataEncoder.hash( - { verifyingContract: await signerLaunchpad.getAddress(), chainId: await chainId() }, - { - SafeInit: [ - { type: 'address', name: 'singleton' }, - { type: 'address', name: 'signerFactory' }, - { type: 'bytes', name: 'signerData' }, - { type: 'address', name: 'setupTo' }, - { type: 'bytes', name: 'setupData' }, - { type: 'address', name: 'fallbackHandler' }, - ], - }, - safeInit, - ) - - expect( - await signerLaunchpad.getInitHash( - safeInit.singleton, - safeInit.signerFactory, - safeInit.signerData, - safeInit.setupTo, - safeInit.setupData, - safeInit.fallbackHandler, - ), - ).to.equal(safeInitHash) - - const launchpadInitializer = signerLaunchpad.interface.encodeFunctionData('preValidationSetup', [ - safeInitHash, - ethers.ZeroAddress, - '0x', - ]) - const safeSalt = Date.now() - const safe = await proxyFactory.createProxyWithNonce.staticCall(signerLaunchpad.target, launchpadInitializer, safeSalt) - - const packedUserOp = { - sender: safe, - nonce: ethers.toBeHex(await entryPoint.getNonce(safe, 0)), - initCode: ethers.solidityPacked( - ['address', 'bytes'], - [ - proxyFactory.target, - proxyFactory.interface.encodeFunctionData('createProxyWithNonce', [signerLaunchpad.target, launchpadInitializer, safeSalt]), - ], - ), - callData: signerLaunchpad.interface.encodeFunctionData('initializeThenUserOp', [ - safeInit.singleton, - safeInit.signerFactory, - safeInit.signerData, - safeInit.setupTo, - safeInit.setupData, - safeInit.fallbackHandler, - module.interface.encodeFunctionData('executeUserOp', [user.address, ethers.parseEther('0.5'), '0x', 0]), - ]), - preVerificationGas: ethers.toBeHex(60000), - ...packGasParameters({ - verificationGasLimit: 500000, - callGasLimit: 2000000, - maxFeePerGas: 10000000000, - maxPriorityFeePerGas: 10000000000, - }), - paymasterAndData: '0x', - } - - const safeInitOp = { - userOpHash: await entryPoint.getUserOpHash({ ...packedUserOp, signature: '0x' }), - validAfter: 0, - validUntil: 0, - entryPoint: entryPoint.target, - } - const safeInitOpHash = ethers.TypedDataEncoder.hash( - { verifyingContract: await signerLaunchpad.getAddress(), chainId: await chainId() }, - { - SafeInitOp: [ - { type: 'bytes32', name: 'userOpHash' }, - { type: 'uint48', name: 'validAfter' }, - { type: 'uint48', name: 'validUntil' }, - { type: 'address', name: 'entryPoint' }, - ], - }, - safeInitOp, - ) - - const assertion = navigator.credentials.get({ - publicKey: { - challenge: ethers.getBytes(safeInitOpHash), - rpId: 'safe.global', - allowCredentials: [{ type: 'public-key', id: new Uint8Array(credential.rawId) }], - userVerification: UserVerificationRequirement.required, - }, - }) - const signature = ethers.solidityPacked( - ['uint48', 'uint48', 'bytes'], - [ - safeInitOp.validAfter, - safeInitOp.validUntil, - ethers.AbiCoder.defaultAbiCoder().encode( - ['bytes', 'bytes', 'uint256[2]'], - [ - new Uint8Array(assertion.response.authenticatorData), - extractClientDataFields(assertion.response), - extractSignature(assertion.response), - ], - ), - ], - ) - - await user.sendTransaction({ to: safe, value: ethers.parseEther('1') }).then((tx) => tx.wait()) - expect(await ethers.provider.getBalance(safe)).to.equal(ethers.parseEther('1')) - expect(await ethers.provider.getCode(safe)).to.equal('0x') - expect(await ethers.provider.getCode(signerAddress)).to.equal('0x') - - const userOp = await unpackUserOperation({ ...packedUserOp, signature }) - await bundler.sendUserOperation(userOp, await entryPoint.getAddress()) - - await waitForUserOp(userOp) - expect(await ethers.provider.getBalance(safe)).to.be.lessThanOrEqual(ethers.parseEther('0.5')) - expect(await ethers.provider.getCode(safe)).to.not.equal('0x') - expect(await ethers.provider.getCode(signerAddress)).to.not.equal('0x') - - const [implementation] = ethers.AbiCoder.defaultAbiCoder().decode(['address'], await ethers.provider.getStorage(safe, 0)) - expect(implementation).to.equal(singleton.target) - - const safeInstance = await ethers.getContractAt('SafeL2', safe) - expect(await safeInstance.getOwners()).to.deep.equal([signerAddress]) - }) -}) diff --git a/modules/passkey/contracts/test/4337Dependencies.sol b/modules/passkey/contracts/test/4337Dependencies.sol index 24c4d6723..43668bcec 100644 --- a/modules/passkey/contracts/test/4337Dependencies.sol +++ b/modules/passkey/contracts/test/4337Dependencies.sol @@ -3,3 +3,4 @@ pragma solidity >=0.8.0; import "@account-abstraction/contracts/interfaces/IEntryPoint.sol"; +import "@safe-global/safe-4337/contracts/test/TestStakedFactory.sol"; diff --git a/modules/passkey/contracts/test/TestWebAuthnSingletonSigner.sol b/modules/passkey/contracts/test/TestWebAuthnSingletonSigner.sol new file mode 100644 index 000000000..d2117b4e8 --- /dev/null +++ b/modules/passkey/contracts/test/TestWebAuthnSingletonSigner.sol @@ -0,0 +1,53 @@ +// SPDX-License-Identifier: LGPL-3.0-only +pragma solidity >=0.8.0; + +import {SignatureValidator} from "../base/SignatureValidator.sol"; +import {WebAuthn, IP256Verifier} from "../libraries/WebAuthn.sol"; + +/** + * @title WebAuthn Singleton Signer + * @dev A contract for verifying WebAuthn signatures for multiple accounts. + */ +contract TestWebAuthnSingletonSigner is SignatureValidator { + /** + * @notice Data associated with a WebAuthn signer. It reprensents the X and Y coordinates of the signer's public + * key. This is stored in a mapping using the account address as the key. + */ + struct OwnerData { + uint256 x; + uint256 y; + IP256Verifier verifier; + } + + /** + * @notice A mapping of account address to public keys of the owner. + */ + mapping(address => OwnerData) private owners; + + /** + * @notice Return the owner data for the specified account. + * @param account The account to request owner data for. + */ + function getOwner(address account) external view returns (OwnerData memory owner) { + owner = owners[account]; + } + + /** + * @notice Sets the owner data for the calling account. + * @param owner The new owner data to set for the calling account. + */ + function setOwner(OwnerData memory owner) external { + owners[msg.sender] = owner; + } + + /** + * @inheritdoc SignatureValidator + */ + function _verifySignature(bytes32 message, bytes calldata signature) internal view virtual override returns (bool isValid) { + OwnerData memory owner = owners[msg.sender]; + + isValid = + address(owner.verifier) != address(0) && + WebAuthn.verifySignature(message, signature, WebAuthn.USER_VERIFICATION, owner.x, owner.y, owner.verifier); + } +} diff --git a/modules/passkey/package.json b/modules/passkey/package.json index 3c4148c7a..bfd56f951 100644 --- a/modules/passkey/package.json +++ b/modules/passkey/package.json @@ -39,6 +39,7 @@ "test": "hardhat test", "test:4337": "4337-local-bundler-test", "test:4337:upstream": "USE_UPSTREAM_BUNDLER=1 4337-local-bundler-test", + "test:all": "npm run test && npm run test:4337", "prepare": "npm run build -w ../4337 && npm run build" }, "devDependencies": { diff --git a/modules/4337/test/erc4337/ERC4337WebAuthn.spec.ts b/modules/passkey/test/4337/WebAuthn.spec.ts similarity index 80% rename from modules/4337/test/erc4337/ERC4337WebAuthn.spec.ts rename to modules/passkey/test/4337/WebAuthn.spec.ts index 6245bec55..053bf8540 100644 --- a/modules/4337/test/erc4337/ERC4337WebAuthn.spec.ts +++ b/modules/passkey/test/4337/WebAuthn.spec.ts @@ -1,37 +1,35 @@ import { expect } from 'chai' import { deployments, ethers } from 'hardhat' -import { getEntryPoint } from '../utils/setup' -import { buildSignatureBytes, logGas } from '../../src/utils/execution' +import { buildSignatureBytes, logGas } from '@safe-global/safe-4337/src/utils/execution' import { buildSafeUserOpTransaction, buildPackedUserOperationFromSafeUserOperation, calculateSafeOperationHash, packGasParameters, -} from '../../src/utils/userOp' -import { chainId } from '../utils/encoding' +} from '@safe-global/safe-4337/src/utils/userOp' +import { chainId } from '@safe-global/safe-4337/test/utils/encoding' import { UserVerificationRequirement, WebAuthnCredentials, extractClientDataFields, extractPublicKey, extractSignature, -} from '../utils/webauthn' -import { Safe4337 } from '../../src/utils/safe' +} from '@safe-global/safe-4337/test/utils/webauthn' +import { Safe4337 } from '@safe-global/safe-4337/src/utils/safe' describe('Safe4337Module - WebAuthn Owner', () => { const setupTests = deployments.createFixture(async ({ deployments }) => { - const { SafeModuleSetup, SafeL2, SafeProxyFactory, WebAuthnVerifier } = await deployments.fixture() + const { SafeModuleSetup, SafeL2, SafeProxyFactory, FCLP256Verifier, Safe4337Module, SafeECDSASignerLaunchpad, EntryPoint } = + await deployments.fixture() const [user] = await ethers.getSigners() - const entryPoint = await getEntryPoint() - const moduleFactory = await ethers.getContractFactory('Safe4337Module') - const module = await moduleFactory.deploy(entryPoint.target) - const proxyFactory = await ethers.getContractAt('SafeProxyFactory', SafeProxyFactory.address) - const safeModuleSetup = await ethers.getContractAt('SafeModuleSetup', SafeModuleSetup.address) - const signerLaunchpadFactory = await ethers.getContractFactory('SafeSignerLaunchpad') - const signerLaunchpad = await signerLaunchpadFactory.deploy(entryPoint.target) - const singleton = await ethers.getContractAt('SafeL2', SafeL2.address) - const webAuthnVerifier = await ethers.getContractAt('WebAuthnVerifier', WebAuthnVerifier.address) + const entryPoint = await ethers.getContractAt('IEntryPoint', EntryPoint.address) + const module = await ethers.getContractAt(Safe4337Module.abi, Safe4337Module.address) + const proxyFactory = await ethers.getContractAt(SafeProxyFactory.abi, SafeProxyFactory.address) + const safeModuleSetup = await ethers.getContractAt(SafeModuleSetup.abi, SafeModuleSetup.address) + const signerLaunchpad = await ethers.getContractAt('SafeECDSASignerLaunchpad', SafeECDSASignerLaunchpad.address) + const singleton = await ethers.getContractAt(SafeL2.abi, SafeL2.address) + const verifier = await ethers.getContractAt('IP256Verifier', FCLP256Verifier.address) const WebAuthnSignerFactory = await ethers.getContractFactory('WebAuthnSignerFactory') const signerFactory = await WebAuthnSignerFactory.deploy() @@ -50,25 +48,15 @@ describe('Safe4337Module - WebAuthn Owner', () => { singleton, signerFactory, navigator, - webAuthnVerifier, + verifier, } }) describe('executeUserOp - new account', () => { it('should execute user operation', async () => { - const { - user, - proxyFactory, - safeModuleSetup, - module, - entryPoint, - signerLaunchpad, - singleton, - signerFactory, - navigator, - webAuthnVerifier, - } = await setupTests() - const webAuthnVerifierAddress = await webAuthnVerifier.getAddress() + const { user, proxyFactory, safeModuleSetup, module, entryPoint, signerLaunchpad, singleton, signerFactory, navigator, verifier } = + await setupTests() + const verifierAddress = await verifier.getAddress() const credential = navigator.credentials.create({ publicKey: { @@ -86,16 +74,14 @@ describe('Safe4337Module - WebAuthn Owner', () => { }, }) const publicKey = extractPublicKey(credential.response) - const signerData = ethers.AbiCoder.defaultAbiCoder().encode( - ['uint256', 'uint256', 'address'], - [publicKey.x, publicKey.y, webAuthnVerifierAddress], - ) - const signerAddress = await signerFactory.getSigner(signerData) + const signerAddress = await signerFactory.getSigner(publicKey.x, publicKey.y, verifierAddress) const safeInit = { singleton: singleton.target, signerFactory: signerFactory.target, - signerData, + signerX: publicKey.x, + signerY: publicKey.y, + signerVerifier: verifierAddress, setupTo: safeModuleSetup.target, setupData: safeModuleSetup.interface.encodeFunctionData('enableModules', [[module.target]]), fallbackHandler: module.target, @@ -106,7 +92,9 @@ describe('Safe4337Module - WebAuthn Owner', () => { SafeInit: [ { type: 'address', name: 'singleton' }, { type: 'address', name: 'signerFactory' }, - { type: 'bytes', name: 'signerData' }, + { type: 'uint256', name: 'signerX' }, + { type: 'uint256', name: 'signerY' }, + { type: 'address', name: 'signerVerifier' }, { type: 'address', name: 'setupTo' }, { type: 'bytes', name: 'setupData' }, { type: 'address', name: 'fallbackHandler' }, @@ -119,7 +107,9 @@ describe('Safe4337Module - WebAuthn Owner', () => { await signerLaunchpad.getInitHash( safeInit.singleton, safeInit.signerFactory, - safeInit.signerData, + safeInit.signerX, + safeInit.signerY, + safeInit.signerVerifier, safeInit.setupTo, safeInit.setupData, safeInit.fallbackHandler, @@ -147,7 +137,9 @@ describe('Safe4337Module - WebAuthn Owner', () => { callData: signerLaunchpad.interface.encodeFunctionData('initializeThenUserOp', [ safeInit.singleton, safeInit.signerFactory, - safeInit.signerData, + safeInit.signerX, + safeInit.signerY, + safeInit.signerVerifier, safeInit.setupTo, safeInit.setupData, safeInit.fallbackHandler, @@ -220,16 +212,15 @@ describe('Safe4337Module - WebAuthn Owner', () => { const [implementation] = ethers.AbiCoder.defaultAbiCoder().decode(['address'], await ethers.provider.getStorage(safe, 0)) expect(implementation).to.equal(singleton.target) - const safeInstance = await ethers.getContractAt('SafeL2', safe) + const safeInstance = singleton.attach(safe) as typeof singleton expect(await safeInstance.getOwners()).to.deep.equal([signerAddress]) }) }) describe('executeUserOp - existing account', () => { it('should execute user operation', async () => { - const { user, proxyFactory, safeModuleSetup, module, entryPoint, singleton, signerFactory, navigator, webAuthnVerifier } = - await setupTests() - const webAuthnVerifierAddress = await webAuthnVerifier.getAddress() + const { user, proxyFactory, safeModuleSetup, module, entryPoint, singleton, signerFactory, navigator, verifier } = await setupTests() + const verifierAddress = await verifier.getAddress() const credential = navigator.credentials.create({ publicKey: { rp: { @@ -246,12 +237,8 @@ describe('Safe4337Module - WebAuthn Owner', () => { }, }) const publicKey = extractPublicKey(credential.response) - const signerData = ethers.AbiCoder.defaultAbiCoder().encode( - ['uint256', 'uint256', 'address'], - [publicKey.x, publicKey.y, webAuthnVerifierAddress], - ) - await signerFactory.createSigner(signerData) - const signer = await ethers.getContractAt('WebAuthnSigner', await signerFactory.getSigner(signerData)) + await signerFactory.createSigner(publicKey.x, publicKey.y, verifierAddress) + const signer = await ethers.getContractAt('WebAuthnSigner', await signerFactory.getSigner(publicKey.x, publicKey.y, verifierAddress)) const safe = await Safe4337.withSigner(await signer.getAddress(), { safeSingleton: await singleton.getAddress(), diff --git a/modules/4337/test/e2e/WebAuthnSingletonSigner.spec.ts b/modules/passkey/test/4337/WebAuthnSingletonSigner.spec.ts similarity index 84% rename from modules/4337/test/e2e/WebAuthnSingletonSigner.spec.ts rename to modules/passkey/test/4337/WebAuthnSingletonSigner.spec.ts index 688212551..6de126166 100644 --- a/modules/4337/test/e2e/WebAuthnSingletonSigner.spec.ts +++ b/modules/passkey/test/4337/WebAuthnSingletonSigner.spec.ts @@ -1,20 +1,20 @@ import { bundlerRpc, prepareAccounts, waitForUserOp } from '@safe-global/safe-4337-local-bundler' import { expect } from 'chai' import { deployments, ethers, network } from 'hardhat' -import { encodeMultiSendTransactions } from '../utils/encoding' +import { encodeMultiSendTransactions } from '@safe-global/safe-4337/test/utils/encoding' import { UserVerificationRequirement, WebAuthnCredentials, extractClientDataFields, extractPublicKey, extractSignature, -} from '../utils/webauthn' +} from '@safe-global/safe-4337/test/utils/webauthn' import { buildSafeUserOpTransaction, buildPackedUserOperationFromSafeUserOperation, buildRpcUserOperationFromSafeUserOperation, -} from '../../src/utils/userOp' -import { buildSignatureBytes } from '../../src/utils/execution' +} from '@safe-global/safe-4337/src/utils/userOp' +import { buildSignatureBytes } from '@safe-global/safe-4337/src/utils/execution' describe('WebAuthn Singleton Signers [@4337]', () => { before(function () { @@ -24,17 +24,17 @@ describe('WebAuthn Singleton Signers [@4337]', () => { }) const setupTests = deployments.createFixture(async ({ deployments }) => { - const { EntryPoint, Safe4337Module, SafeProxyFactory, SafeModuleSetup, MultiSend, SafeL2, WebAuthnVerifier } = await deployments.run() + const { EntryPoint, Safe4337Module, SafeProxyFactory, SafeModuleSetup, MultiSend, SafeL2, FCLP256Verifier } = await deployments.run() const [user] = await prepareAccounts() const bundler = bundlerRpc() const entryPoint = await ethers.getContractAt('IEntryPoint', EntryPoint.address) - const module = await ethers.getContractAt('Safe4337Module', Safe4337Module.address) - const proxyFactory = await ethers.getContractAt('SafeProxyFactory', SafeProxyFactory.address) - const safeModuleSetup = await ethers.getContractAt('SafeModuleSetup', SafeModuleSetup.address) - const multiSend = await ethers.getContractAt('MultiSend', MultiSend.address) - const singleton = await ethers.getContractAt('SafeL2', SafeL2.address) - const webAuthnVerifier = await ethers.getContractAt('WebAuthnVerifier', WebAuthnVerifier.address) + const module = await ethers.getContractAt(Safe4337Module.abi, Safe4337Module.address) + const proxyFactory = await ethers.getContractAt(SafeProxyFactory.abi, SafeProxyFactory.address) + const safeModuleSetup = await ethers.getContractAt(SafeModuleSetup.abi, SafeModuleSetup.address) + const multiSend = await ethers.getContractAt(MultiSend.abi, MultiSend.address) + const singleton = await ethers.getContractAt(SafeL2.abi, SafeL2.address) + const verifier = await ethers.getContractAt('IP256Verifier', FCLP256Verifier.address) const TestStakedFactory = await ethers.getContractFactory('TestStakedFactory') const stakedFactory = await TestStakedFactory.deploy(proxyFactory.target) @@ -45,7 +45,7 @@ describe('WebAuthn Singleton Signers [@4337]', () => { }) .then((tx) => tx.wait()) - const WebAuthnSingletonSigner = await ethers.getContractFactory('WebAuthnSingletonSigner') + const WebAuthnSingletonSigner = await ethers.getContractFactory('TestWebAuthnSingletonSigner') const signer = await WebAuthnSingletonSigner.deploy() const navigator = { @@ -61,7 +61,7 @@ describe('WebAuthn Singleton Signers [@4337]', () => { entryPoint, multiSend, singleton, - webAuthnVerifier, + verifier, stakedFactory, signer, navigator, @@ -78,7 +78,7 @@ describe('WebAuthn Singleton Signers [@4337]', () => { entryPoint, multiSend, singleton, - webAuthnVerifier, + verifier, stakedFactory, signer, navigator, @@ -115,7 +115,7 @@ describe('WebAuthn Singleton Signers [@4337]', () => { { op: 0 as const, to: signer.target, - data: signer.interface.encodeFunctionData('setOwner', [{ ...publicKey, verifier: webAuthnVerifier.target }]), + data: signer.interface.encodeFunctionData('setOwner', [{ ...publicKey, verifier: verifier.target }]), }, ]), ]), @@ -186,6 +186,6 @@ describe('WebAuthn Singleton Signers [@4337]', () => { expect(ethers.dataLength(await ethers.provider.getCode(safeAddress))).to.not.equal(0) expect(await ethers.provider.getBalance(safeAddress)).to.be.lessThan(ethers.parseEther('0.4')) - expect(await signer.getOwner(safeAddress)).to.deep.equal([publicKey.x, publicKey.y, webAuthnVerifier.target]) + expect(await signer.getOwner(safeAddress)).to.deep.equal([publicKey.x, publicKey.y, verifier.target]) }) }) From ee310865fade5c280c43baa8051d382aa90db9c1 Mon Sep 17 00:00:00 2001 From: Shebin John Date: Wed, 20 Mar 2024 18:05:28 +0530 Subject: [PATCH 11/12] Passkey example updation (#336) This PR updates the passkey example to use the reference passkey signer implementation. Other small changes: - Using new addresses (deployed and verified in Sepolia) - Introduction of `.env.example` for deployment and verification. - ~`preVerificationGas` estimation is bumped slightly as the signature length between gas estimation and userOp submission differs.~ A new Dummy Signature is created for the `userOp` gas estimate for more accuracy. Closes #291 --------- Co-authored-by: Nicholas Rodrigues Lordello --- .../4337-passkeys/src/components/SafeCard.tsx | 9 ++-- examples/4337-passkeys/src/config.ts | 10 ++--- examples/4337-passkeys/src/logic/safe.ts | 42 ++++++++++--------- examples/4337-passkeys/src/logic/userOp.ts | 29 +++++++++++-- modules/passkey/.env.example | 9 ++++ modules/passkey/hardhat.config.ts | 31 ++++++++++++++ modules/passkey/src/deploy/launchpad.ts | 6 ++- 7 files changed, 100 insertions(+), 36 deletions(-) create mode 100644 modules/passkey/.env.example diff --git a/examples/4337-passkeys/src/components/SafeCard.tsx b/examples/4337-passkeys/src/components/SafeCard.tsx index f8a1a02ec..8f7a6d891 100644 --- a/examples/4337-passkeys/src/components/SafeCard.tsx +++ b/examples/4337-passkeys/src/components/SafeCard.tsx @@ -8,7 +8,7 @@ import { SAFE_PROXY_FACTORY_ADDRESS, SAFE_SINGLETON_ADDRESS, WEBAUTHN_SIGNER_FACTORY_ADDRESS, - WEBAUTHN_VERIFIER_ADDRESS, + P256_VERIFIER_ADDRESS, } from '../config' import { PasskeyLocalStorageFormat } from '../logic/passkeys' import { @@ -31,10 +31,9 @@ function SafeCard({ passkey, provider }: { passkey: PasskeyLocalStorageFormat; p singleton: SAFE_SINGLETON_ADDRESS, fallbackHandler: SAFE_4337_MODULE_ADDRESS, signerFactory: WEBAUTHN_SIGNER_FACTORY_ADDRESS, - signerData: ethers.AbiCoder.defaultAbiCoder().encode( - ['uint256', 'uint256', 'address'], - [passkey.pubkeyCoordinates.x, passkey.pubkeyCoordinates.y, WEBAUTHN_VERIFIER_ADDRESS], - ), + signerX: passkey.pubkeyCoordinates.x, + signerY: passkey.pubkeyCoordinates.y, + signerVerifier: P256_VERIFIER_ADDRESS, setupTo: SAFE_MODULE_SETUP_ADDRESS, setupData: encodeSafeModuleSetupCall([SAFE_4337_MODULE_ADDRESS]), }), diff --git a/examples/4337-passkeys/src/config.ts b/examples/4337-passkeys/src/config.ts index fc6667be7..27a83ba27 100644 --- a/examples/4337-passkeys/src/config.ts +++ b/examples/4337-passkeys/src/config.ts @@ -5,15 +5,15 @@ const APP_CHAIN_ID = 11155111 the production deployment packages, thus we need to hardcode their addresses here. Deployment commit: https://github.com/safe-global/safe-modules/commit/3853f34f31837e0a0aee47a4452564278f8c62ba */ -const SAFE_SIGNER_LAUNCHPAD_ADDRESS = '0x8a29BeF99755Cb8587189108d4D8D8f8247dB1B1' +const SAFE_SIGNER_LAUNCHPAD_ADDRESS = '0xD196c0921557ae28998a05EF547ce1140376dF9E' -const SAFE_4337_MODULE_ADDRESS = '0xfaa6F2eC82BdA7C22220522869E854a3446053A5' +const SAFE_4337_MODULE_ADDRESS = '0x75cf11467937ce3F2f357CE24ffc3DBF8fD5c226' const SAFE_MODULE_SETUP_ADDRESS = '0x2dd68b007B46fBe91B9A7c3EDa5A7a1063cB5b47' -const WEBAUTHN_SIGNER_FACTORY_ADDRESS = '0x05234efAd657358b56Fbe05e38800179261F429C' +const WEBAUTHN_SIGNER_FACTORY_ADDRESS = '0xff7E04238C9D09F69000094934177E10c7A9B38f' -const WEBAUTHN_VERIFIER_ADDRESS = '0xCAc51aDF726E4b269645a7fD6a43296A1Ff53e8d' +const P256_VERIFIER_ADDRESS = '0xa1e4cF479A2a542984a45CA1d9f57350f3dDBbbA' // FCLP256Verifier const SAFE_PROXY_FACTORY_ADDRESS = '0x4e1DCf7AD4e460CfD30791CCC4F9c8a4f820ec67' @@ -33,5 +33,5 @@ export { SAFE_SINGLETON_ADDRESS, XANDER_BLAZE_NFT_ADDRESS, WEBAUTHN_SIGNER_FACTORY_ADDRESS, - WEBAUTHN_VERIFIER_ADDRESS, + P256_VERIFIER_ADDRESS, } diff --git a/examples/4337-passkeys/src/logic/safe.ts b/examples/4337-passkeys/src/logic/safe.ts index 386c0e366..c73d11bfb 100644 --- a/examples/4337-passkeys/src/logic/safe.ts +++ b/examples/4337-passkeys/src/logic/safe.ts @@ -1,28 +1,22 @@ import { ethers } from 'ethers' -import { abi as SafeSignerLaunchpadAbi } from '@safe-global/safe-4337/build/artifacts/contracts/test/TestSafeSignerLaunchpad.sol/TestSafeSignerLaunchpad.json' -import { abi as WebAuthnSignerFactoryAbi } from '@safe-global/safe-4337/build/artifacts/contracts/experimental/WebAuthnSigner.sol/WebAuthnSignerFactory.json' +import { abi as SafeECDSASignerLaunchpadAbi } from '@safe-global/safe-passkey/build/artifacts/contracts/4337/SafeECDSASignerLaunchpad.sol/SafeECDSASignerLaunchpad.json' +import { abi as WebAuthnSignerFactoryAbi } from '@safe-global/safe-passkey/build/artifacts/contracts/WebAuthnSignerFactory.sol/WebAuthnSignerFactory.json' import { abi as SetupModuleSetupAbi } from '@safe-global/safe-4337/build/artifacts/contracts/SafeModuleSetup.sol/SafeModuleSetup.json' import { abi as WebAuthnSignerAbi, bytecode as WebAuthSignerBytecode, -} from '@safe-global/safe-4337/build/artifacts/contracts/experimental/WebAuthnSigner.sol/WebAuthnSigner.json' +} from '@safe-global/safe-passkey/build/artifacts/contracts/WebAuthnSigner.sol/WebAuthnSigner.json' import { abi as Safe4337ModuleAbi } from '@safe-global/safe-4337/build/artifacts/contracts/Safe4337Module.sol/Safe4337Module.json' import { abi as SafeProxyFactoryAbi } from '@safe-global/safe-4337/build/artifacts/@safe-global/safe-contracts/contracts/proxies/SafeProxyFactory.sol/SafeProxyFactory.json' -import type { - TestSafeSignerLaunchpad as SafeSignerLaunchpad, - Safe4337Module, - SafeProxyFactory, - WebAuthnSigner, - WebAuthnSignerFactory, - SafeModuleSetup, -} from '@safe-global/safe-4337/typechain-types/' +import type { Safe4337Module, SafeProxyFactory, SafeModuleSetup } from '@safe-global/safe-4337/typechain-types/' +import type { SafeECDSASignerLaunchpad, WebAuthnSigner, WebAuthnSignerFactory } from '@safe-global/safe-passkey/typechain-types/' import { SAFE_SIGNER_LAUNCHPAD_ADDRESS, SAFE_4337_MODULE_ADDRESS, WEBAUTHN_SIGNER_FACTORY_ADDRESS, SAFE_PROXY_FACTORY_ADDRESS, - WEBAUTHN_VERIFIER_ADDRESS, + P256_VERIFIER_ADDRESS, } from '../config' import { PackedUserOperation } from './userOp' @@ -36,8 +30,10 @@ const SafeProxyBytecode = * @param provider The JSON-RPC provider used to interact with the blockchain. * @returns An instance of SafeSignerLaunchpad contract. */ -function getSafeSignerLaunchpadContract(provider: ethers.JsonRpcProvider): SafeSignerLaunchpad { - return new ethers.Contract(SAFE_SIGNER_LAUNCHPAD_ADDRESS, SafeSignerLaunchpadAbi, { provider }) as unknown as SafeSignerLaunchpad +function getSafeSignerLaunchpadContract(provider: ethers.JsonRpcProvider): SafeECDSASignerLaunchpad { + return new ethers.Contract(SAFE_SIGNER_LAUNCHPAD_ADDRESS, SafeECDSASignerLaunchpadAbi, { + provider, + }) as unknown as SafeECDSASignerLaunchpad } /** @@ -80,7 +76,7 @@ function getWebAuthnSignerContract(provider: ethers.JsonRpcProvider, address: st function getSignerAddressFromPubkeyCoords(x: string, y: string): string { const deploymentCode = ethers.solidityPacked( ['bytes', 'uint256', 'uint256', 'uint256'], - [WebAuthSignerBytecode, x, y, WEBAUTHN_VERIFIER_ADDRESS], + [WebAuthSignerBytecode, x, y, P256_VERIFIER_ADDRESS], ) const salt = ethers.ZeroHash return ethers.getCreate2Address(WEBAUTHN_SIGNER_FACTORY_ADDRESS, salt, ethers.keccak256(deploymentCode)) @@ -89,7 +85,9 @@ function getSignerAddressFromPubkeyCoords(x: string, y: string): string { type SafeInitializer = { singleton: string signerFactory: string - signerData: string + signerX: string + signerY: string + signerVerifier: string setupTo: string setupData: string fallbackHandler: string @@ -102,7 +100,9 @@ function getInitHash(safeInitializer: SafeInitializer, chainId: ethers.BigNumber SafeInit: [ { type: 'address', name: 'singleton' }, { type: 'address', name: 'signerFactory' }, - { type: 'bytes', name: 'signerData' }, + { type: 'uint256', name: 'signerX' }, + { type: 'uint256', name: 'signerY' }, + { type: 'address', name: 'signerVerifier' }, { type: 'address', name: 'setupTo' }, { type: 'bytes', name: 'setupData' }, { type: 'address', name: 'fallbackHandler' }, @@ -115,7 +115,7 @@ function getInitHash(safeInitializer: SafeInitializer, chainId: ethers.BigNumber } function getLaunchpadInitializer(safeInitHash: string, optionalCallAddress = ethers.ZeroAddress, optionalCalldata = '0x'): string { - const safeSignerLaunchpadInterface = new ethers.Interface(SafeSignerLaunchpadAbi) as unknown as SafeSignerLaunchpad['interface'] + const safeSignerLaunchpadInterface = new ethers.Interface(SafeECDSASignerLaunchpadAbi) as unknown as SafeECDSASignerLaunchpad['interface'] const launchpadInitializer = safeSignerLaunchpadInterface.encodeFunctionData('preValidationSetup', [ safeInitHash, @@ -177,12 +177,14 @@ function encodeSafeModuleSetupCall(modules: string[]): string { * @returns The encoded data for initializing the Safe contract and performing the user operation. */ function getLaunchpadInitializeThenUserOpData(initializer: SafeInitializer, encodedUserOp: string): string { - const safeSignerLaunchpadInterface = new ethers.Interface(SafeSignerLaunchpadAbi) as unknown as SafeSignerLaunchpad['interface'] + const safeSignerLaunchpadInterface = new ethers.Interface(SafeECDSASignerLaunchpadAbi) as unknown as SafeECDSASignerLaunchpad['interface'] const initializeThenUserOpData = safeSignerLaunchpadInterface.encodeFunctionData('initializeThenUserOp', [ initializer.singleton, initializer.signerFactory, - initializer.signerData, + initializer.signerX, + initializer.signerY, + initializer.signerVerifier, initializer.setupTo, initializer.setupData, initializer.fallbackHandler, diff --git a/examples/4337-passkeys/src/logic/userOp.ts b/examples/4337-passkeys/src/logic/userOp.ts index 2871cde61..8d7fa5480 100644 --- a/examples/4337-passkeys/src/logic/userOp.ts +++ b/examples/4337-passkeys/src/logic/userOp.ts @@ -52,10 +52,31 @@ type UserOperation = { signature: ethers.BytesLike } -// Dummy signature for gas estimation. We require it so the estimation doesn't revert -// if the signature is absent -const DUMMY_SIGNATURE = - '0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000e043aa8d1b19ca9387bdf05124650baec5c7ed57c04135f915b7a5fac9feeb29783063924cb9712ab0dd42f880317626ea82b4149f81f4e60d8ddeff9109d4619f0000000000000000000000000000000000000000000000000000000000000025a24f744b28d73f066bf3203d145765a7bc735e6328168c8b03e476da3ad0d8fe0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e226f726967696e223a2268747470733a2f2f736166652e676c6f62616c220000' +// Dummy signature for gas estimation. We require the 12 bytes of validity timestamp data +// so that the estimation doesn't revert. But we also want to use a dummy signature for +// more accurate `verificationGasLimit` (We want to run the P256 signature verification +// code) & `preVerificationGas` (The signature length in bytes should be accurate) estimate. +// The challenge is neither P256 Verification Gas or signature length are stable, so we make +// a calculated guess. +const DUMMY_SIGNATURE = ethers.solidityPacked( + ['uint48', 'uint48', 'bytes'], + [ + 0, + 0, + ethers.AbiCoder.defaultAbiCoder().encode( + ['bytes', 'string', 'uint256', 'uint256'], + [ + `0x${'a0'.repeat(37)}`, // authenticatorData without any extensions/attestated credential data is always 37 bytes long. + [ + `"origin":"${location.origin}"`, + `"padding":"This pads the clientDataJSON so that we can leave room for additional implementation specific fields for a more accurate 'preVerificationGas' estimate."`, + ].join(','), + `0x${'ec'.repeat(32)}`, + `0x${'d5a'.repeat(21)}f`, + ], + ), + ], +) /** * Generates the user operation initialization code. diff --git a/modules/passkey/.env.example b/modules/passkey/.env.example new file mode 100644 index 000000000..7f45f45f4 --- /dev/null +++ b/modules/passkey/.env.example @@ -0,0 +1,9 @@ +# Used for deploying contracts +MNEMONIC="" +PK="" +# Used for custom network +CUSTOM_NODE_URL="" +# Used for etherscan verification +ETHERSCAN_API_KEY="" +# Used for deploying contracts +DEPLOYMENT_ENTRY_POINT_ADDRESS="0x0000000071727De22E5E9d8BAf0edAc6f37da032" diff --git a/modules/passkey/hardhat.config.ts b/modules/passkey/hardhat.config.ts index 7ca871482..0c549747a 100644 --- a/modules/passkey/hardhat.config.ts +++ b/modules/passkey/hardhat.config.ts @@ -2,8 +2,30 @@ import '@nomicfoundation/hardhat-toolbox' import dotenv from 'dotenv' import type { HardhatUserConfig } from 'hardhat/config' import 'hardhat-deploy' +import { HttpNetworkUserConfig } from 'hardhat/types' dotenv.config() +const { CUSTOM_NODE_URL, MNEMONIC, ETHERSCAN_API_KEY, PK } = process.env + +const DEFAULT_MNEMONIC = 'candy maple cake sugar pudding cream honey rich smooth crumble sweet treat' + +const sharedNetworkConfig: HttpNetworkUserConfig = {} +if (PK) { + sharedNetworkConfig.accounts = [PK] +} else { + sharedNetworkConfig.accounts = { + mnemonic: MNEMONIC || DEFAULT_MNEMONIC, + } +} + +const customNetwork = CUSTOM_NODE_URL + ? { + custom: { + ...sharedNetworkConfig, + url: CUSTOM_NODE_URL, + }, + } + : {} const config: HardhatUserConfig = { paths: { @@ -20,6 +42,12 @@ const config: HardhatUserConfig = { hardhat: { tags: ['test', 'entrypoint', 'safe'], }, + sepolia: { + ...sharedNetworkConfig, + url: 'https://rpc.ankr.com/eth_sepolia', + tags: ['dev'], + }, + ...customNetwork, }, solidity: { compilers: [ @@ -39,6 +67,9 @@ const config: HardhatUserConfig = { namedAccounts: { deployer: 0, }, + etherscan: { + apiKey: ETHERSCAN_API_KEY, + }, } export default config diff --git a/modules/passkey/src/deploy/launchpad.ts b/modules/passkey/src/deploy/launchpad.ts index f693e3861..c53c637f2 100644 --- a/modules/passkey/src/deploy/launchpad.ts +++ b/modules/passkey/src/deploy/launchpad.ts @@ -1,14 +1,16 @@ import { DeployFunction } from 'hardhat-deploy/types' +const ENTRY_POINT = process.env.DEPLOYMENT_ENTRY_POINT_ADDRESS + const deploy: DeployFunction = async ({ deployments, getNamedAccounts }) => { const { deployer } = await getNamedAccounts() const { deploy } = deployments - const entryPoint = await deployments.get('EntryPoint') + const entryPoint = await deployments.getOrNull('EntryPoint').then((deployment) => deployment?.address ?? ENTRY_POINT) await deploy('SafeECDSASignerLaunchpad', { from: deployer, - args: [entryPoint.address], + args: [entryPoint], log: true, deterministicDeployment: true, }) From 1768f9d4856afb04f5ea6bb577ed0955473916a3 Mon Sep 17 00:00:00 2001 From: Nicholas Rodrigues Lordello Date: Thu, 21 Mar 2024 13:36:52 +0100 Subject: [PATCH 12/12] Correct EIP-7212 Behaviour (#334) Fixes #309 This PR fixes an issue where the FCL P-256 verifier behaviour was not following the precompile. In particular, I used the Polygon team implementation: https://github.com/maticnetwork/bor/blob/43958943edfdfb53f8a7cbe469693b9315fad96b/core/vm/contracts.go#L1209-L1231 To validated expectations, I ran the following script against a Polygon Mumbai execution node to inspect the precompile return values:

test-rip-7212.sh ```sh echo "just right" curl -s -X POST "$NODE_URL" -H 'Content-Type: application/json' --data '@-' < Indeed, on verification failures (both when inputs are invalid, or the signature doesn't match the message and public key), the empty bytes `0x` are returned instead of `abi.encode(0)`. --- .../contracts/interfaces/IP256Verifier.sol | 6 +-- modules/passkey/contracts/libraries/P256.sol | 3 +- .../contracts/verifiers/FCLP256Verifier.sol | 8 ++- .../test/verifiers/FCLP256Verifier.spec.ts | 54 ++++++++++++++----- 4 files changed, 51 insertions(+), 20 deletions(-) diff --git a/modules/passkey/contracts/interfaces/IP256Verifier.sol b/modules/passkey/contracts/interfaces/IP256Verifier.sol index f233e40c9..40d22ecc2 100644 --- a/modules/passkey/contracts/interfaces/IP256Verifier.sol +++ b/modules/passkey/contracts/interfaces/IP256Verifier.sol @@ -18,9 +18,9 @@ interface IP256Verifier { * - `input[ 96:128]`: public key x * - `input[128:160]`: public key y * - * The output is a Solidity ABI encoded boolean value indicating whether or not the signature is - * valid. Specifically, it returns 32 bytes with a value of `0x00..00` or `0x00..01` for an - * invalid or valid signature respectively. + * The output is either: + * - `abi.encode(1)` bytes for a valid signature. + * - `""` empty bytes for an invalid signature or error. * * Note that this function does not follow the Solidity ABI format (in particular, it does not * have a 4-byte selector), which is why it requires a fallback function and not regular diff --git a/modules/passkey/contracts/libraries/P256.sol b/modules/passkey/contracts/libraries/P256.sol index 2ba320a15..427ed46ca 100644 --- a/modules/passkey/contracts/libraries/P256.sol +++ b/modules/passkey/contracts/libraries/P256.sol @@ -80,7 +80,8 @@ library P256 { mstore(add(input, 128), y) // Perform staticcall and check result, note that Yul evaluates expressions from right - // to left. See + // to left. See . + mstore(0, 0) success := and( and( // Return data is exactly 32-bytes long diff --git a/modules/passkey/contracts/verifiers/FCLP256Verifier.sol b/modules/passkey/contracts/verifiers/FCLP256Verifier.sol index a8491300a..fb4ead1d1 100644 --- a/modules/passkey/contracts/verifiers/FCLP256Verifier.sol +++ b/modules/passkey/contracts/verifiers/FCLP256Verifier.sol @@ -16,7 +16,7 @@ contract FCLP256Verifier is IP256Verifier { */ fallback(bytes calldata input) external returns (bytes memory output) { if (input.length != 160) { - return abi.encodePacked(uint256(0)); + return ""; } bytes32 message; @@ -34,6 +34,10 @@ contract FCLP256Verifier is IP256Verifier { y := calldataload(128) } - output = abi.encode(FCL_ecdsa.ecdsa_verify(message, r, s, x, y)); + if (!FCL_ecdsa.ecdsa_verify(message, r, s, x, y)) { + return ""; + } + + output = abi.encode(1); } } diff --git a/modules/passkey/test/verifiers/FCLP256Verifier.spec.ts b/modules/passkey/test/verifiers/FCLP256Verifier.spec.ts index d9c92f8ba..feea26282 100644 --- a/modules/passkey/test/verifiers/FCLP256Verifier.spec.ts +++ b/modules/passkey/test/verifiers/FCLP256Verifier.spec.ts @@ -12,13 +12,9 @@ describe('FCLP256Verifier', function () { async function verifySignature(message: BytesLike, r: BigNumberish, s: BigNumberish, x: BigNumberish, y: BigNumberish) { const coder = ethers.AbiCoder.defaultAbiCoder() - const [success] = coder.decode( - ['bool'], - await verifier.fallback!.staticCall({ - data: coder.encode(['bytes32', 'uint256', 'uint256', 'uint256', 'uint256'], [message, r, s, x, y]), - }), - ) - return success + return await verifier.fallback!.staticCall({ + data: coder.encode(['bytes32', 'uint256', 'uint256', 'uint256', 'uint256'], [message, r, s, x, y]), + }) } const account = new Account() @@ -26,6 +22,9 @@ describe('FCLP256Verifier', function () { return { verifier, verifySignature, account } }) + const SUCCESS = `0x${'00'.repeat(31)}01` + const FAILURE = '0x' + it('Should return 1 on valid signature', async function () { const { verifySignature, account } = await setupTests() @@ -33,7 +32,7 @@ describe('FCLP256Verifier', function () { const { r, s } = account.sign(message) const { x, y } = account.publicKey - expect(await verifySignature(message, r, s, x, y)).to.be.true + expect(await verifySignature(message, r, s, x, y)).to.equal(SUCCESS) }) it('Should ignore signature malleability', async function () { @@ -43,18 +42,45 @@ describe('FCLP256Verifier', function () { const { r, highS } = account.sign(message) const { x, y } = account.publicKey - expect(await verifySignature(message, r, highS, x, y)).to.be.true + expect(await verifySignature(message, r, highS, x, y)).to.equal(SUCCESS) + }) + + it('Should return empty on unverified signature', async function () { + const { verifySignature, account } = await setupTests() + + const { x, y } = account.publicKey + + expect(await verifySignature(ethers.ZeroHash, 1, 2, x, y)).to.equal(FAILURE) + }) + + it('Should return empty on invalid signature parameters', async function () { + const { verifySignature, account } = await setupTests() + + const message = ethers.id('hello world') + const { r, s } = account.sign(message) + const { x, y } = account.publicKey + + // `r` and `s` must be in the range `[1, n)`, where `n` is the order of the curve. + expect(await verifySignature(message, 0, s, x, y)).to.equal(FAILURE) + expect(await verifySignature(message, r, 0, x, y)).to.equal(FAILURE) + expect(await verifySignature(message, ethers.MaxUint256, s, x, y)).to.equal(FAILURE) + expect(await verifySignature(message, r, ethers.MaxUint256, x, y)).to.equal(FAILURE) }) - it('Should return 0 on invalid signature', async function () { - const { verifySignature } = await setupTests() + it('Should return empty on invalid public key', async function () { + const { verifySignature, account } = await setupTests() + + const message = ethers.id('hello world') + const { r, s } = account.sign(message) + const { x, y } = account.publicKey - expect(await verifySignature(ethers.ZeroHash, 1, 2, 3, 4)).to.be.false + expect(await verifySignature(message, r, s, 0, y)).to.equal(FAILURE) + expect(await verifySignature(message, r, s, x, 0)).to.equal(FAILURE) }) - it('Should return 0 on invalid input', async function () { + it('Should return empty on invalid input', async function () { const { verifier } = await setupTests() - expect(await verifier.fallback!.staticCall({ data: ethers.hexlify(ethers.toUtf8Bytes('invalid input')) })).to.equal(ethers.ZeroHash) + expect(await verifier.fallback!.staticCall({ data: ethers.hexlify(ethers.toUtf8Bytes('invalid input')) })).to.equal(FAILURE) }) })