From f2b929d3b4d067a4cb93d703829836f8bced7739 Mon Sep 17 00:00:00 2001 From: verkhohliad Date: Mon, 22 Jul 2024 15:26:50 +0100 Subject: [PATCH 01/22] Initialize subgraph --- .../.gitignore | 34 ++++++++ .../abis/ValidatorRegistry.json | 55 ++++++++++++ .../docker-compose.yml | 50 +++++++++++ .../networks.json | 8 ++ .../package.json | 18 ++++ .../schema.graphql | 8 ++ .../src/validator-registry.ts | 16 ++++ .../subgraph.yaml | 26 ++++++ .../tests/validator-registry-utils.ts | 18 ++++ .../tests/validator-registry.test.ts | 53 ++++++++++++ .../tsconfig.json | 4 + thegraph/validatorRegistryABI.json | 83 +++++++++++++++++++ 12 files changed, 373 insertions(+) create mode 100644 thegraph/chiado-shutter-validator-registry/.gitignore create mode 100644 thegraph/chiado-shutter-validator-registry/abis/ValidatorRegistry.json create mode 100644 thegraph/chiado-shutter-validator-registry/docker-compose.yml create mode 100644 thegraph/chiado-shutter-validator-registry/networks.json create mode 100644 thegraph/chiado-shutter-validator-registry/package.json create mode 100644 thegraph/chiado-shutter-validator-registry/schema.graphql create mode 100644 thegraph/chiado-shutter-validator-registry/src/validator-registry.ts create mode 100644 thegraph/chiado-shutter-validator-registry/subgraph.yaml create mode 100644 thegraph/chiado-shutter-validator-registry/tests/validator-registry-utils.ts create mode 100644 thegraph/chiado-shutter-validator-registry/tests/validator-registry.test.ts create mode 100644 thegraph/chiado-shutter-validator-registry/tsconfig.json create mode 100644 thegraph/validatorRegistryABI.json diff --git a/thegraph/chiado-shutter-validator-registry/.gitignore b/thegraph/chiado-shutter-validator-registry/.gitignore new file mode 100644 index 0000000..b542c60 --- /dev/null +++ b/thegraph/chiado-shutter-validator-registry/.gitignore @@ -0,0 +1,34 @@ +# Graph CLI generated artifacts +build/ +generated/ + +# Dependency directories +node_modules/ +jspm_packages/ + +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# dotenv environment variables file +.env + +# Testing +coverage +coverage.json + +# Typechain +typechain +typechain-types + +# Hardhat files +cache diff --git a/thegraph/chiado-shutter-validator-registry/abis/ValidatorRegistry.json b/thegraph/chiado-shutter-validator-registry/abis/ValidatorRegistry.json new file mode 100644 index 0000000..e85eb75 --- /dev/null +++ b/thegraph/chiado-shutter-validator-registry/abis/ValidatorRegistry.json @@ -0,0 +1,55 @@ +[ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes", + "name": "message", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "Updated", + "type": "event" + }, + { + "inputs": [], + "name": "getNumUpdates", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "i", "type": "uint256" }], + "name": "getUpdate", + "outputs": [ + { + "components": [ + { "internalType": "bytes", "name": "message", "type": "bytes" }, + { "internalType": "bytes", "name": "signature", "type": "bytes" } + ], + "internalType": "struct IValidatorRegistry.Update", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "bytes", "name": "message", "type": "bytes" }, + { "internalType": "bytes", "name": "signature", "type": "bytes" } + ], + "name": "update", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] diff --git a/thegraph/chiado-shutter-validator-registry/docker-compose.yml b/thegraph/chiado-shutter-validator-registry/docker-compose.yml new file mode 100644 index 0000000..a008fc9 --- /dev/null +++ b/thegraph/chiado-shutter-validator-registry/docker-compose.yml @@ -0,0 +1,50 @@ +version: "3" +services: + graph-node: + image: graphprotocol/graph-node + ports: + - "8000:8000" + - "8001:8001" + - "8020:8020" + - "8030:8030" + - "8040:8040" + depends_on: + - ipfs + - postgres + extra_hosts: + - host.docker.internal:host-gateway + environment: + postgres_host: postgres + postgres_user: graph-node + postgres_pass: let-me-in + postgres_db: graph-node + ipfs: "ipfs:5001" + ethereum: "mainnet:http://host.docker.internal:8545" + GRAPH_LOG: info + ipfs: + image: ipfs/kubo:v0.17.0 + ports: + - "5001:5001" + volumes: + - ./data/ipfs:/data/ipfs + postgres: + image: postgres:14 + ports: + - "5432:5432" + command: + [ + "postgres", + "-cshared_preload_libraries=pg_stat_statements", + "-cmax_connections=200", + ] + environment: + POSTGRES_USER: graph-node + POSTGRES_PASSWORD: let-me-in + POSTGRES_DB: graph-node + # FIXME: remove this env. var. which we shouldn't need. Introduced by + # , maybe as a + # workaround for https://github.com/docker/for-mac/issues/6270? + PGDATA: "/var/lib/postgresql/data" + POSTGRES_INITDB_ARGS: "-E UTF8 --locale=C" + volumes: + - ./data/postgres:/var/lib/postgresql/data diff --git a/thegraph/chiado-shutter-validator-registry/networks.json b/thegraph/chiado-shutter-validator-registry/networks.json new file mode 100644 index 0000000..3f60fc6 --- /dev/null +++ b/thegraph/chiado-shutter-validator-registry/networks.json @@ -0,0 +1,8 @@ +{ + "gnosis-chiado": { + "ValidatorRegistry": { + "address": "0x06BfddbEbe11f7eE8a39Fc7DC24498dE85C8afca", + "startBlock": 9884076 + } + } +} \ No newline at end of file diff --git a/thegraph/chiado-shutter-validator-registry/package.json b/thegraph/chiado-shutter-validator-registry/package.json new file mode 100644 index 0000000..dc6e842 --- /dev/null +++ b/thegraph/chiado-shutter-validator-registry/package.json @@ -0,0 +1,18 @@ +{ + "name": "chiado-shutter-validator-registry", + "license": "UNLICENSED", + "scripts": { + "codegen": "graph codegen", + "build": "graph build", + "deploy": "graph deploy --node https://api.studio.thegraph.com/deploy/ chiado-shutter-validator-registry", + "create-local": "graph create --node http://localhost:8020/ chiado-shutter-validator-registry", + "remove-local": "graph remove --node http://localhost:8020/ chiado-shutter-validator-registry", + "deploy-local": "graph deploy --node http://localhost:8020/ --ipfs http://localhost:5001 chiado-shutter-validator-registry", + "test": "graph test" + }, + "dependencies": { + "@graphprotocol/graph-cli": "0.79.0", + "@graphprotocol/graph-ts": "0.32.0" + }, + "devDependencies": { "matchstick-as": "0.5.0" } +} diff --git a/thegraph/chiado-shutter-validator-registry/schema.graphql b/thegraph/chiado-shutter-validator-registry/schema.graphql new file mode 100644 index 0000000..9555dd0 --- /dev/null +++ b/thegraph/chiado-shutter-validator-registry/schema.graphql @@ -0,0 +1,8 @@ +type Updated @entity(immutable: true) { + id: Bytes! + message: Bytes! # bytes + signature: Bytes! # bytes + blockNumber: BigInt! + blockTimestamp: BigInt! + transactionHash: Bytes! +} diff --git a/thegraph/chiado-shutter-validator-registry/src/validator-registry.ts b/thegraph/chiado-shutter-validator-registry/src/validator-registry.ts new file mode 100644 index 0000000..e537fe0 --- /dev/null +++ b/thegraph/chiado-shutter-validator-registry/src/validator-registry.ts @@ -0,0 +1,16 @@ +import { Updated as UpdatedEvent } from "../generated/ValidatorRegistry/ValidatorRegistry" +import { Updated } from "../generated/schema" + +export function handleUpdated(event: UpdatedEvent): void { + let entity = new Updated( + event.transaction.hash.concatI32(event.logIndex.toI32()) + ) + entity.message = event.params.message + entity.signature = event.params.signature + + entity.blockNumber = event.block.number + entity.blockTimestamp = event.block.timestamp + entity.transactionHash = event.transaction.hash + + entity.save() +} diff --git a/thegraph/chiado-shutter-validator-registry/subgraph.yaml b/thegraph/chiado-shutter-validator-registry/subgraph.yaml new file mode 100644 index 0000000..26d87c3 --- /dev/null +++ b/thegraph/chiado-shutter-validator-registry/subgraph.yaml @@ -0,0 +1,26 @@ +specVersion: 1.0.0 +indexerHints: + prune: auto +schema: + file: ./schema.graphql +dataSources: + - kind: ethereum + name: ValidatorRegistry + network: gnosis-chiado + source: + address: "0x06BfddbEbe11f7eE8a39Fc7DC24498dE85C8afca" + abi: ValidatorRegistry + startBlock: 9884076 + mapping: + kind: ethereum/events + apiVersion: 0.0.7 + language: wasm/assemblyscript + entities: + - Updated + abis: + - name: ValidatorRegistry + file: ./abis/ValidatorRegistry.json + eventHandlers: + - event: Updated(bytes,bytes) + handler: handleUpdated + file: ./src/validator-registry.ts diff --git a/thegraph/chiado-shutter-validator-registry/tests/validator-registry-utils.ts b/thegraph/chiado-shutter-validator-registry/tests/validator-registry-utils.ts new file mode 100644 index 0000000..e6714b2 --- /dev/null +++ b/thegraph/chiado-shutter-validator-registry/tests/validator-registry-utils.ts @@ -0,0 +1,18 @@ +import { newMockEvent } from "matchstick-as" +import { ethereum, Bytes } from "@graphprotocol/graph-ts" +import { Updated } from "../generated/ValidatorRegistry/ValidatorRegistry" + +export function createUpdatedEvent(message: Bytes, signature: Bytes): Updated { + let updatedEvent = changetype(newMockEvent()) + + updatedEvent.parameters = new Array() + + updatedEvent.parameters.push( + new ethereum.EventParam("message", ethereum.Value.fromBytes(message)) + ) + updatedEvent.parameters.push( + new ethereum.EventParam("signature", ethereum.Value.fromBytes(signature)) + ) + + return updatedEvent +} diff --git a/thegraph/chiado-shutter-validator-registry/tests/validator-registry.test.ts b/thegraph/chiado-shutter-validator-registry/tests/validator-registry.test.ts new file mode 100644 index 0000000..b3b0565 --- /dev/null +++ b/thegraph/chiado-shutter-validator-registry/tests/validator-registry.test.ts @@ -0,0 +1,53 @@ +import { + assert, + describe, + test, + clearStore, + beforeAll, + afterAll +} from "matchstick-as/assembly/index" +import { Bytes } from "@graphprotocol/graph-ts" +import { Updated } from "../generated/schema" +import { Updated as UpdatedEvent } from "../generated/ValidatorRegistry/ValidatorRegistry" +import { handleUpdated } from "../src/validator-registry" +import { createUpdatedEvent } from "./validator-registry-utils" + +// Tests structure (matchstick-as >=0.5.0) +// https://thegraph.com/docs/en/developer/matchstick/#tests-structure-0-5-0 + +describe("Describe entity assertions", () => { + beforeAll(() => { + let message = Bytes.fromI32(1234567890) + let signature = Bytes.fromI32(1234567890) + let newUpdatedEvent = createUpdatedEvent(message, signature) + handleUpdated(newUpdatedEvent) + }) + + afterAll(() => { + clearStore() + }) + + // For more test scenarios, see: + // https://thegraph.com/docs/en/developer/matchstick/#write-a-unit-test + + test("Updated created and stored", () => { + assert.entityCount("Updated", 1) + + // 0xa16081f360e3847006db660bae1c6d1b2e17ec2a is the default address used in newMockEvent() function + assert.fieldEquals( + "Updated", + "0xa16081f360e3847006db660bae1c6d1b2e17ec2a-1", + "message", + "1234567890" + ) + assert.fieldEquals( + "Updated", + "0xa16081f360e3847006db660bae1c6d1b2e17ec2a-1", + "signature", + "1234567890" + ) + + // More assert options: + // https://thegraph.com/docs/en/developer/matchstick/#asserts + }) +}) diff --git a/thegraph/chiado-shutter-validator-registry/tsconfig.json b/thegraph/chiado-shutter-validator-registry/tsconfig.json new file mode 100644 index 0000000..4e86672 --- /dev/null +++ b/thegraph/chiado-shutter-validator-registry/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "@graphprotocol/graph-ts/types/tsconfig.base.json", + "include": ["src", "tests"] +} diff --git a/thegraph/validatorRegistryABI.json b/thegraph/validatorRegistryABI.json new file mode 100644 index 0000000..8f2f909 --- /dev/null +++ b/thegraph/validatorRegistryABI.json @@ -0,0 +1,83 @@ +[ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes", + "name": "message", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "Updated", + "type": "event" + }, + { + "inputs": [], + "name": "getNumUpdates", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "i", + "type": "uint256" + } + ], + "name": "getUpdate", + "outputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "message", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "internalType": "struct IValidatorRegistry.Update", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "message", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "update", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] \ No newline at end of file From 5f710089aa8d2238e8ce70b0dc202d65124717d2 Mon Sep 17 00:00:00 2001 From: verkhohliad Date: Tue, 23 Jul 2024 11:45:37 +0100 Subject: [PATCH 02/22] remove chiado from subgraph slug --- .../src/validator-registry.ts | 16 - .../.gitignore | 0 .../abis/ValidatorRegistry.json | 0 .../docker-compose.yml | 0 .../networks.json | 0 .../package-lock.json | 6026 +++++++++++++++++ .../package.json | 4 +- .../schema.graphql | 0 .../src/validator-registry.ts | 19 + .../subgraph.yaml | 0 .../tests/validator-registry-utils.ts | 0 .../tests/validator-registry.test.ts | 0 .../tsconfig.json | 0 13 files changed, 6047 insertions(+), 18 deletions(-) delete mode 100644 thegraph/chiado-shutter-validator-registry/src/validator-registry.ts rename thegraph/{chiado-shutter-validator-registry => shutter-validator-registry}/.gitignore (100%) rename thegraph/{chiado-shutter-validator-registry => shutter-validator-registry}/abis/ValidatorRegistry.json (100%) rename thegraph/{chiado-shutter-validator-registry => shutter-validator-registry}/docker-compose.yml (100%) rename thegraph/{chiado-shutter-validator-registry => shutter-validator-registry}/networks.json (100%) create mode 100644 thegraph/shutter-validator-registry/package-lock.json rename thegraph/{chiado-shutter-validator-registry => shutter-validator-registry}/package.json (85%) rename thegraph/{chiado-shutter-validator-registry => shutter-validator-registry}/schema.graphql (100%) create mode 100644 thegraph/shutter-validator-registry/src/validator-registry.ts rename thegraph/{chiado-shutter-validator-registry => shutter-validator-registry}/subgraph.yaml (100%) rename thegraph/{chiado-shutter-validator-registry => shutter-validator-registry}/tests/validator-registry-utils.ts (100%) rename thegraph/{chiado-shutter-validator-registry => shutter-validator-registry}/tests/validator-registry.test.ts (100%) rename thegraph/{chiado-shutter-validator-registry => shutter-validator-registry}/tsconfig.json (100%) diff --git a/thegraph/chiado-shutter-validator-registry/src/validator-registry.ts b/thegraph/chiado-shutter-validator-registry/src/validator-registry.ts deleted file mode 100644 index e537fe0..0000000 --- a/thegraph/chiado-shutter-validator-registry/src/validator-registry.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { Updated as UpdatedEvent } from "../generated/ValidatorRegistry/ValidatorRegistry" -import { Updated } from "../generated/schema" - -export function handleUpdated(event: UpdatedEvent): void { - let entity = new Updated( - event.transaction.hash.concatI32(event.logIndex.toI32()) - ) - entity.message = event.params.message - entity.signature = event.params.signature - - entity.blockNumber = event.block.number - entity.blockTimestamp = event.block.timestamp - entity.transactionHash = event.transaction.hash - - entity.save() -} diff --git a/thegraph/chiado-shutter-validator-registry/.gitignore b/thegraph/shutter-validator-registry/.gitignore similarity index 100% rename from thegraph/chiado-shutter-validator-registry/.gitignore rename to thegraph/shutter-validator-registry/.gitignore diff --git a/thegraph/chiado-shutter-validator-registry/abis/ValidatorRegistry.json b/thegraph/shutter-validator-registry/abis/ValidatorRegistry.json similarity index 100% rename from thegraph/chiado-shutter-validator-registry/abis/ValidatorRegistry.json rename to thegraph/shutter-validator-registry/abis/ValidatorRegistry.json diff --git a/thegraph/chiado-shutter-validator-registry/docker-compose.yml b/thegraph/shutter-validator-registry/docker-compose.yml similarity index 100% rename from thegraph/chiado-shutter-validator-registry/docker-compose.yml rename to thegraph/shutter-validator-registry/docker-compose.yml diff --git a/thegraph/chiado-shutter-validator-registry/networks.json b/thegraph/shutter-validator-registry/networks.json similarity index 100% rename from thegraph/chiado-shutter-validator-registry/networks.json rename to thegraph/shutter-validator-registry/networks.json diff --git a/thegraph/shutter-validator-registry/package-lock.json b/thegraph/shutter-validator-registry/package-lock.json new file mode 100644 index 0000000..a95cfbc --- /dev/null +++ b/thegraph/shutter-validator-registry/package-lock.json @@ -0,0 +1,6026 @@ +{ + "name": "chiado-shutter-validator-registry", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "chiado-shutter-validator-registry", + "license": "UNLICENSED", + "dependencies": { + "@graphprotocol/graph-cli": "0.79.0", + "@graphprotocol/graph-ts": "0.32.0" + }, + "devDependencies": { + "matchstick-as": "0.5.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.24.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@ethersproject/abi": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.0.7.tgz", + "integrity": "sha512-Cqktk+hSIckwP/W8O47Eef60VwmoSC/L3lY0+dIBhQPCNn9E4V7rwmm2aFrNRRDJfFlGuZ1khkQUOc3oBX+niw==", + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.0.4", + "@ethersproject/bignumber": "^5.0.7", + "@ethersproject/bytes": "^5.0.4", + "@ethersproject/constants": "^5.0.4", + "@ethersproject/hash": "^5.0.4", + "@ethersproject/keccak256": "^5.0.3", + "@ethersproject/logger": "^5.0.5", + "@ethersproject/properties": "^5.0.3", + "@ethersproject/strings": "^5.0.4" + } + }, + "node_modules/@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "node_modules/@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@float-capital/float-subgraph-uncrashable": { + "version": "0.0.0-internal-testing.5", + "resolved": "https://registry.npmjs.org/@float-capital/float-subgraph-uncrashable/-/float-subgraph-uncrashable-0.0.0-internal-testing.5.tgz", + "integrity": "sha512-yZ0H5e3EpAYKokX/AbtplzlvSxEJY7ZfpvQyDzyODkks0hakAAlDG6fQu1SlDJMWorY7bbq1j7fCiFeTWci6TA==", + "license": "MIT", + "dependencies": { + "@rescript/std": "9.0.0", + "graphql": "^16.6.0", + "graphql-import-node": "^0.0.5", + "js-yaml": "^4.1.0" + }, + "bin": { + "uncrashable": "bin/uncrashable" + } + }, + "node_modules/@float-capital/float-subgraph-uncrashable/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/@float-capital/float-subgraph-uncrashable/node_modules/graphql": { + "version": "16.9.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.9.0.tgz", + "integrity": "sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==", + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" + } + }, + "node_modules/@float-capital/float-subgraph-uncrashable/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@graphprotocol/graph-cli": { + "version": "0.79.0", + "resolved": "https://registry.npmjs.org/@graphprotocol/graph-cli/-/graph-cli-0.79.0.tgz", + "integrity": "sha512-16s+qN0HbAjN4UfVMW2XyMPJc4PuAiBPx6dZLjgUAuU3ROAej7DExqJW+zTX36IG2H/pe7cilpkkykbwise1Kw==", + "license": "(Apache-2.0 OR MIT)", + "dependencies": { + "@float-capital/float-subgraph-uncrashable": "^0.0.0-alpha.4", + "@oclif/core": "2.8.6", + "@oclif/plugin-autocomplete": "^2.3.6", + "@oclif/plugin-not-found": "^2.4.0", + "@whatwg-node/fetch": "^0.8.4", + "assemblyscript": "0.19.23", + "binary-install-raw": "0.0.13", + "chalk": "3.0.0", + "chokidar": "3.5.3", + "debug": "4.3.4", + "docker-compose": "0.23.19", + "dockerode": "2.5.8", + "fs-extra": "9.1.0", + "glob": "9.3.5", + "gluegun": "5.1.6", + "graphql": "15.5.0", + "immutable": "4.2.1", + "ipfs-http-client": "55.0.0", + "jayson": "4.0.0", + "js-yaml": "3.14.1", + "open": "8.4.2", + "prettier": "3.0.3", + "semver": "7.4.0", + "sync-request": "6.1.0", + "tmp-promise": "3.0.3", + "web3-eth-abi": "1.7.0", + "which": "2.0.2", + "yaml": "1.10.2" + }, + "bin": { + "graph": "bin/run" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@graphprotocol/graph-ts": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/@graphprotocol/graph-ts/-/graph-ts-0.32.0.tgz", + "integrity": "sha512-YfKLT2w+ItXD/VPYQiAKtINQONVsAOkcqVFMHlhUy0fcEBVWuFBT53hJNI0/l5ujQa4TSxtzrKW/7EABAdgI8g==", + "dependencies": { + "assemblyscript": "0.19.10" + } + }, + "node_modules/@graphprotocol/graph-ts/node_modules/assemblyscript": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/assemblyscript/-/assemblyscript-0.19.10.tgz", + "integrity": "sha512-HavcUBXB3mBTRGJcpvaQjmnmaqKHBGREjSPNsIvnAk2f9dj78y4BkMaSSdvBQYWcDDzsHQjyUC8stICFkD1Odg==", + "license": "Apache-2.0", + "dependencies": { + "binaryen": "101.0.0-nightly.20210723", + "long": "^4.0.0" + }, + "bin": { + "asc": "bin/asc", + "asinit": "bin/asinit" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/assemblyscript" + } + }, + "node_modules/@graphprotocol/graph-ts/node_modules/binaryen": { + "version": "101.0.0-nightly.20210723", + "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-101.0.0-nightly.20210723.tgz", + "integrity": "sha512-eioJNqhHlkguVSbblHOtLqlhtC882SOEPKmNFZaDuz1hzQjolxZ+eu3/kaS10n3sGPONsIZsO7R9fR00UyhEUA==", + "license": "Apache-2.0", + "bin": { + "wasm-opt": "bin/wasm-opt" + } + }, + "node_modules/@graphprotocol/graph-ts/node_modules/long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", + "license": "Apache-2.0" + }, + "node_modules/@ipld/dag-cbor": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@ipld/dag-cbor/-/dag-cbor-7.0.3.tgz", + "integrity": "sha512-1VVh2huHsuohdXC1bGJNE8WR72slZ9XE2T3wbBBq31dm7ZBatmKLLxrB+XAqafxfRFjv08RZmj/W/ZqaM13AuA==", + "license": "(Apache-2.0 AND MIT)", + "dependencies": { + "cborg": "^1.6.0", + "multiformats": "^9.5.4" + } + }, + "node_modules/@ipld/dag-json": { + "version": "8.0.11", + "resolved": "https://registry.npmjs.org/@ipld/dag-json/-/dag-json-8.0.11.tgz", + "integrity": "sha512-Pea7JXeYHTWXRTIhBqBlhw7G53PJ7yta3G/sizGEZyzdeEwhZRr0od5IQ0r2ZxOt1Do+2czddjeEPp+YTxDwCA==", + "license": "(Apache-2.0 AND MIT)", + "dependencies": { + "cborg": "^1.5.4", + "multiformats": "^9.5.4" + } + }, + "node_modules/@ipld/dag-pb": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/@ipld/dag-pb/-/dag-pb-2.1.18.tgz", + "integrity": "sha512-ZBnf2fuX9y3KccADURG5vb9FaOeMjFkCrNysB0PtftME/4iCTjxfaLoNq/IAh5fTqUOMXvryN6Jyka4ZGuMLIg==", + "license": "(Apache-2.0 AND MIT)", + "dependencies": { + "multiformats": "^9.5.4" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@oclif/core": { + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/@oclif/core/-/core-2.8.6.tgz", + "integrity": "sha512-1QlPaHMhOORySCXkQyzjsIsy2GYTilOw3LkjeHkCgsPJQjAT4IclVytJusWktPbYNys9O+O4V23J44yomQvnBQ==", + "license": "MIT", + "dependencies": { + "@types/cli-progress": "^3.11.0", + "ansi-escapes": "^4.3.2", + "ansi-styles": "^4.3.0", + "cardinal": "^2.1.1", + "chalk": "^4.1.2", + "clean-stack": "^3.0.1", + "cli-progress": "^3.12.0", + "debug": "^4.3.4", + "ejs": "^3.1.8", + "fs-extra": "^9.1.0", + "get-package-type": "^0.1.0", + "globby": "^11.1.0", + "hyperlinker": "^1.0.0", + "indent-string": "^4.0.0", + "is-wsl": "^2.2.0", + "js-yaml": "^3.14.1", + "natural-orderby": "^2.0.3", + "object-treeify": "^1.1.33", + "password-prompt": "^1.1.2", + "semver": "^7.3.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "supports-color": "^8.1.1", + "supports-hyperlinks": "^2.2.0", + "ts-node": "^10.9.1", + "tslib": "^2.5.0", + "widest-line": "^3.1.0", + "wordwrap": "^1.0.0", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@oclif/core/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@oclif/core/node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@oclif/plugin-autocomplete": { + "version": "2.3.10", + "resolved": "https://registry.npmjs.org/@oclif/plugin-autocomplete/-/plugin-autocomplete-2.3.10.tgz", + "integrity": "sha512-Ow1AR8WtjzlyCtiWWPgzMyT8SbcDJFr47009riLioHa+MHX2BCDtVn2DVnN/E6b9JlPV5ptQpjefoRSNWBesmg==", + "license": "MIT", + "dependencies": { + "@oclif/core": "^2.15.0", + "chalk": "^4.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@oclif/plugin-autocomplete/node_modules/@oclif/core": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@oclif/core/-/core-2.16.0.tgz", + "integrity": "sha512-dL6atBH0zCZl1A1IXCKJgLPrM/wR7K+Wi401E/IvqsK8m2iCHW+0TEOGrans/cuN3oTW+uxIyJFHJ8Im0k4qBw==", + "license": "MIT", + "dependencies": { + "@types/cli-progress": "^3.11.0", + "ansi-escapes": "^4.3.2", + "ansi-styles": "^4.3.0", + "cardinal": "^2.1.1", + "chalk": "^4.1.2", + "clean-stack": "^3.0.1", + "cli-progress": "^3.12.0", + "debug": "^4.3.4", + "ejs": "^3.1.8", + "get-package-type": "^0.1.0", + "globby": "^11.1.0", + "hyperlinker": "^1.0.0", + "indent-string": "^4.0.0", + "is-wsl": "^2.2.0", + "js-yaml": "^3.14.1", + "natural-orderby": "^2.0.3", + "object-treeify": "^1.1.33", + "password-prompt": "^1.1.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "supports-color": "^8.1.1", + "supports-hyperlinks": "^2.2.0", + "ts-node": "^10.9.1", + "tslib": "^2.5.0", + "widest-line": "^3.1.0", + "wordwrap": "^1.0.0", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@oclif/plugin-autocomplete/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@oclif/plugin-autocomplete/node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@oclif/plugin-not-found": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@oclif/plugin-not-found/-/plugin-not-found-2.4.3.tgz", + "integrity": "sha512-nIyaR4y692frwh7wIHZ3fb+2L6XEecQwRDIb4zbEam0TvaVmBQWZoColQyWA84ljFBPZ8XWiQyTz+ixSwdRkqg==", + "license": "MIT", + "dependencies": { + "@oclif/core": "^2.15.0", + "chalk": "^4", + "fast-levenshtein": "^3.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@oclif/plugin-not-found/node_modules/@oclif/core": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@oclif/core/-/core-2.16.0.tgz", + "integrity": "sha512-dL6atBH0zCZl1A1IXCKJgLPrM/wR7K+Wi401E/IvqsK8m2iCHW+0TEOGrans/cuN3oTW+uxIyJFHJ8Im0k4qBw==", + "license": "MIT", + "dependencies": { + "@types/cli-progress": "^3.11.0", + "ansi-escapes": "^4.3.2", + "ansi-styles": "^4.3.0", + "cardinal": "^2.1.1", + "chalk": "^4.1.2", + "clean-stack": "^3.0.1", + "cli-progress": "^3.12.0", + "debug": "^4.3.4", + "ejs": "^3.1.8", + "get-package-type": "^0.1.0", + "globby": "^11.1.0", + "hyperlinker": "^1.0.0", + "indent-string": "^4.0.0", + "is-wsl": "^2.2.0", + "js-yaml": "^3.14.1", + "natural-orderby": "^2.0.3", + "object-treeify": "^1.1.33", + "password-prompt": "^1.1.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "supports-color": "^8.1.1", + "supports-hyperlinks": "^2.2.0", + "ts-node": "^10.9.1", + "tslib": "^2.5.0", + "widest-line": "^3.1.0", + "wordwrap": "^1.0.0", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@oclif/plugin-not-found/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@oclif/plugin-not-found/node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@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==", + "license": "MIT", + "dependencies": { + "asn1js": "^3.0.5", + "pvtsutils": "^1.3.5", + "tslib": "^2.6.2" + } + }, + "node_modules/@peculiar/json-schema": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/@peculiar/json-schema/-/json-schema-1.1.12.tgz", + "integrity": "sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@peculiar/webcrypto": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@peculiar/webcrypto/-/webcrypto-1.5.0.tgz", + "integrity": "sha512-BRs5XUAwiyCDQMsVA9IDvDa7UBR9gAvPHgugOeGng3YN6vJ9JYonyDc0lNczErgtCWtucjR5N7VtaonboD/ezg==", + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.3.8", + "@peculiar/json-schema": "^1.1.12", + "pvtsutils": "^1.3.5", + "tslib": "^2.6.2", + "webcrypto-core": "^1.8.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "license": "BSD-3-Clause", + "dependencies": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", + "license": "BSD-3-Clause" + }, + "node_modules/@rescript/std": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@rescript/std/-/std-9.0.0.tgz", + "integrity": "sha512-zGzFsgtZ44mgL4Xef2gOy1hrRVdrs9mcxCOOKZrIPsmbZW14yTkaF591GXxpQvjXiHtgZ/iA9qLyWH6oSReIxQ==", + "license": "SEE LICENSE IN LICENSE" + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", + "license": "MIT" + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "license": "MIT" + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "license": "MIT" + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "license": "MIT" + }, + "node_modules/@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==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/cli-progress": { + "version": "3.11.6", + "resolved": "https://registry.npmjs.org/@types/cli-progress/-/cli-progress-3.11.6.tgz", + "integrity": "sha512-cE3+jb9WRlu+uOSAugewNpITJDt1VF8dHOopPO4IABFc3SXYL5WE/+PTz/FCdZRRfIujiWW3n3aMbv1eIGVRWA==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@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==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/form-data": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-0.0.33.tgz", + "integrity": "sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/long": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", + "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==", + "license": "MIT" + }, + "node_modules/@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "20.14.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.11.tgz", + "integrity": "sha512-kprQpL8MMeszbz6ojB5/tU8PLN4kesnN8Gjzw349rDlNgsSzg90lAVj3llK99Dh7JON+t9AuscPPFW6mPbTnSA==", + "license": "MIT", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/parse-json": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", + "license": "MIT" + }, + "node_modules/@types/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/qs": { + "version": "6.9.15", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", + "license": "MIT" + }, + "node_modules/@types/secp256k1": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.6.tgz", + "integrity": "sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/ws": { + "version": "7.4.7", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", + "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@whatwg-node/events": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@whatwg-node/events/-/events-0.0.3.tgz", + "integrity": "sha512-IqnKIDWfXBJkvy/k6tzskWTc2NK3LcqHlb+KHGCrjOCH4jfQckRX0NAiIcC/vIqQkzLYw2r2CTSwAxcrtcD6lA==", + "license": "MIT" + }, + "node_modules/@whatwg-node/fetch": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.8.8.tgz", + "integrity": "sha512-CdcjGC2vdKhc13KKxgsc6/616BQ7ooDIgPeTuAiE8qfCnS0mGzcfCOoZXypQSz73nxI+GWc7ZReIAVhxoE1KCg==", + "license": "MIT", + "dependencies": { + "@peculiar/webcrypto": "^1.4.0", + "@whatwg-node/node-fetch": "^0.3.6", + "busboy": "^1.6.0", + "urlpattern-polyfill": "^8.0.0", + "web-streams-polyfill": "^3.2.1" + } + }, + "node_modules/@whatwg-node/node-fetch": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@whatwg-node/node-fetch/-/node-fetch-0.3.6.tgz", + "integrity": "sha512-w9wKgDO4C95qnXZRwZTfCmLWqyRnooGjcIwG0wADWjw9/HN0p7dtvtgSvItZtUyNteEvgTrd8QojNEqV6DAGTA==", + "license": "MIT", + "dependencies": { + "@whatwg-node/events": "^0.0.3", + "busboy": "^1.6.0", + "fast-querystring": "^1.1.1", + "fast-url-parser": "^1.1.3", + "tslib": "^2.3.1" + } + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "license": "MIT", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", + "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ansicolors": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", + "integrity": "sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==", + "license": "MIT" + }, + "node_modules/any-signal": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/any-signal/-/any-signal-2.1.2.tgz", + "integrity": "sha512-B+rDnWasMi/eWcajPcCWSlYc7muXOrcYrqgyzcdKisl2H/WTlQ0gip1KyQfr0ZlxJdsuWCj/LWwQm7fhyhRfIQ==", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "native-abort-controller": "^1.0.3" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/apisauce": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/apisauce/-/apisauce-2.1.6.tgz", + "integrity": "sha512-MdxR391op/FucS2YQRfB/NMRyCnHEPDd4h17LRIuVYi0BpGmMhpxc0shbOpfs5ahABuBEffNCGal5EcsydbBWg==", + "license": "MIT", + "dependencies": { + "axios": "^0.21.4" + } + }, + "node_modules/app-module-path": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/app-module-path/-/app-module-path-2.2.0.tgz", + "integrity": "sha512-gkco+qxENJV+8vFcDiiFhuoSvRXb2a/QPqpSoWhVz829VNJfOTnELbBmPmNKFxf3xdNnw4DWCkzkDaavcX/1YQ==", + "license": "BSD-2-Clause" + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "license": "MIT" + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "license": "MIT" + }, + "node_modules/asn1js": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.5.tgz", + "integrity": "sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ==", + "license": "BSD-3-Clause", + "dependencies": { + "pvtsutils": "^1.3.2", + "pvutils": "^1.1.3", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/assemblyscript": { + "version": "0.19.23", + "resolved": "https://registry.npmjs.org/assemblyscript/-/assemblyscript-0.19.23.tgz", + "integrity": "sha512-fwOQNZVTMga5KRsfY80g7cpOl4PsFQczMwHzdtgoqLXaYhkhavufKb0sB0l3T1DUxpAufA0KNhlbpuuhZUwxMA==", + "license": "Apache-2.0", + "dependencies": { + "binaryen": "102.0.0-nightly.20211028", + "long": "^5.2.0", + "source-map-support": "^0.5.20" + }, + "bin": { + "asc": "bin/asc", + "asinit": "bin/asinit" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/assemblyscript" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", + "license": "MIT" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "license": "ISC", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.14.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/base-x": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", + "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/binary-install-raw": { + "version": "0.0.13", + "resolved": "https://registry.npmjs.org/binary-install-raw/-/binary-install-raw-0.0.13.tgz", + "integrity": "sha512-v7ms6N/H7iciuk6QInon3/n2mu7oRX+6knJ9xFPsJ3rQePgAqcR3CRTwUheFd8SLbiq4LL7Z4G/44L9zscdt9A==", + "license": "MIT", + "dependencies": { + "axios": "^0.21.1", + "rimraf": "^3.0.2", + "tar": "^6.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/binaryen": { + "version": "102.0.0-nightly.20211028", + "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-102.0.0-nightly.20211028.tgz", + "integrity": "sha512-GCJBVB5exbxzzvyt8MGDv/MeUjs6gkXDvf4xOIItRBptYl0Tz5sm1o/uG95YK0L0VeG5ajDu3hRtkBP2kzqC5w==", + "license": "Apache-2.0", + "bin": { + "wasm-opt": "bin/wasm-opt" + } + }, + "node_modules/bl": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", + "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", + "license": "MIT", + "dependencies": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/blakejs": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", + "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==", + "license": "MIT" + }, + "node_modules/blob-to-it": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/blob-to-it/-/blob-to-it-1.0.4.tgz", + "integrity": "sha512-iCmk0W4NdbrWgRRuxOriU8aM5ijeVLI61Zulsmg/lUHNr7pYjoj+U77opLefNagevtrrbMt3JQ5Qip7ar178kA==", + "license": "ISC", + "dependencies": { + "browser-readablestream-to-it": "^1.0.3" + } + }, + "node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "license": "MIT" + }, + "node_modules/browser-readablestream-to-it": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/browser-readablestream-to-it/-/browser-readablestream-to-it-1.0.3.tgz", + "integrity": "sha512-+12sHB+Br8HIh6VAMVEG5r3UXCyESIgDW7kzk3BjIXa43DVqVwL7GC5TW3jeh+72dtcH99pPVpw0X8i0jt+/kw==", + "license": "ISC" + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "license": "MIT", + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "license": "MIT", + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "license": "MIT", + "dependencies": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "license": "MIT", + "dependencies": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "node_modules/buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "license": "MIT" + }, + "node_modules/buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==", + "license": "MIT" + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT" + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "license": "MIT" + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/cardinal": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", + "integrity": "sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==", + "license": "MIT", + "dependencies": { + "ansicolors": "~0.3.2", + "redeyed": "~2.1.0" + }, + "bin": { + "cdl": "bin/cdl.js" + } + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "license": "Apache-2.0" + }, + "node_modules/cborg": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/cborg/-/cborg-1.10.2.tgz", + "integrity": "sha512-b3tFPA9pUr2zCUiCfRd2+wok2/LBSNUMKOuRRok+WlvvAgEt/PlbgPTsZUcwCOs53IJvLgTp0eotwtosE6njug==", + "license": "Apache-2.0", + "bin": { + "cborg": "cli.js" + } + }, + "node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/clean-stack": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-3.0.1.tgz", + "integrity": "sha512-lR9wNiMRcVQjSB3a7xXGLuz4cr4wJuuXlaAEbRutGowQTmlp7R72/DOgN21e8jdwblMWl9UOJMJXarX94pzKdg==", + "license": "MIT", + "dependencies": { + "escape-string-regexp": "4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-progress": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.12.0.tgz", + "integrity": "sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==", + "license": "MIT", + "dependencies": { + "string-width": "^4.2.3" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-table3": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.0.tgz", + "integrity": "sha512-gnB85c3MGC7Nm9I/FkiasNBOKjOiO1RNuXXarQms37q4QMpWdlbBgD/VnOStA2faG1dpXMv31RFApjX1/QdgWQ==", + "license": "MIT", + "dependencies": { + "object-assign": "^4.1.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "colors": "^1.1.2" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "license": "MIT", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" + }, + "node_modules/concat-stream": { + "version": "1.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", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" + }, + "node_modules/cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "license": "MIT", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/delay": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz", + "integrity": "sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dns-over-http-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/dns-over-http-resolver/-/dns-over-http-resolver-1.2.3.tgz", + "integrity": "sha512-miDiVSI6KSNbi4SVifzO/reD8rMnxgrlnkrlkugOLQpWQTe2qMdHsZp5DmfKjxNE+/T3VAAYLQUZMv9SMr6+AA==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.1", + "native-fetch": "^3.0.0", + "receptacle": "^1.3.2" + } + }, + "node_modules/docker-compose": { + "version": "0.23.19", + "resolved": "https://registry.npmjs.org/docker-compose/-/docker-compose-0.23.19.tgz", + "integrity": "sha512-v5vNLIdUqwj4my80wxFDkNH+4S85zsRuH29SO7dCWVWPCMt/ohZBsGN6g6KXWifT0pzQ7uOxqEKCYCDPJ8Vz4g==", + "license": "MIT", + "dependencies": { + "yaml": "^1.10.2" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/docker-modem": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/docker-modem/-/docker-modem-1.0.9.tgz", + "integrity": "sha512-lVjqCSCIAUDZPAZIeyM125HXfNvOmYYInciphNrLrylUtKyW66meAjSPXWchKVzoIYZx69TPnAepVSSkeawoIw==", + "license": "Apache-2.0", + "dependencies": { + "debug": "^3.2.6", + "JSONStream": "1.3.2", + "readable-stream": "~1.0.26-4", + "split-ca": "^1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/docker-modem/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/docker-modem/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "license": "MIT" + }, + "node_modules/docker-modem/node_modules/readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/docker-modem/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "license": "MIT" + }, + "node_modules/dockerode": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/dockerode/-/dockerode-2.5.8.tgz", + "integrity": "sha512-+7iOUYBeDTScmOmQqpUYQaE7F4vvIt6+gIZNHWhqAQEI887tiPFB9OvXI/HzQYqfUNvukMK+9myLW63oTJPZpw==", + "license": "Apache-2.0", + "dependencies": { + "concat-stream": "~1.6.2", + "docker-modem": "^1.0.8", + "tar-fs": "~1.16.3" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "license": "Apache-2.0", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron-fetch": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/electron-fetch/-/electron-fetch-1.9.1.tgz", + "integrity": "sha512-M9qw6oUILGVrcENMSRRefE1MbHPIz0h79EKIeJWK9v563aT9Qkh8aEHPO1H5vi970wPirNY+jO9OpFoLiMsMGA==", + "license": "MIT", + "dependencies": { + "encoding": "^0.1.13" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "license": "MIT", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "license": "MIT" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "license": "MIT", + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "license": "MIT", + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/err-code": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-3.0.1.tgz", + "integrity": "sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA==", + "license": "MIT" + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "license": "MIT" + }, + "node_modules/es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==", + "license": "MIT", + "dependencies": { + "es6-promise": "^4.0.3" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ethereum-bloom-filters": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.1.0.tgz", + "integrity": "sha512-J1gDRkLpuGNvWYzWslBQR9cDV4nd4kfvVTE/Wy4Kkm4yb3EYRSlyi0eB/inTsSTTVyA0+HyzHgbr95Fn/Z1fSw==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "^1.4.0" + } + }, + "node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "license": "MIT", + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "node_modules/ethereumjs-util": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", + "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", + "license": "MPL-2.0", + "dependencies": { + "@types/bn.js": "^5.1.0", + "bn.js": "^5.1.2", + "create-hash": "^1.1.2", + "ethereum-cryptography": "^0.1.3", + "rlp": "^2.2.4" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/ethjs-unit": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", + "integrity": "sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==", + "license": "MIT", + "dependencies": { + "bn.js": "4.11.6", + "number-to-bn": "1.7.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/ethjs-unit/node_modules/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==", + "license": "MIT" + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "license": "MIT", + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/eyes": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", + "integrity": "sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==", + "engines": { + "node": "> 0.1.90" + } + }, + "node_modules/fast-decode-uri-component": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz", + "integrity": "sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==", + "license": "MIT" + }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-levenshtein": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-3.0.0.tgz", + "integrity": "sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ==", + "license": "MIT", + "dependencies": { + "fastest-levenshtein": "^1.0.7" + } + }, + "node_modules/fast-querystring": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fast-querystring/-/fast-querystring-1.1.2.tgz", + "integrity": "sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==", + "license": "MIT", + "dependencies": { + "fast-decode-uri-component": "^1.0.1" + } + }, + "node_modules/fast-url-parser": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", + "integrity": "sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==", + "license": "MIT", + "dependencies": { + "punycode": "^1.3.2" + } + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "license": "MIT", + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "license": "MIT" + }, + "node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fs-jetpack": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/fs-jetpack/-/fs-jetpack-4.3.1.tgz", + "integrity": "sha512-dbeOK84F6BiQzk2yqqCVwCPWTxAvVGJ3fMQc6E2wuEohS28mR6yHngbrKuVCK1KHRx/ccByDylqu4H5PCP2urQ==", + "license": "MIT", + "dependencies": { + "minimatch": "^3.0.2", + "rimraf": "^2.6.3" + } + }, + "node_modules/fs-jetpack/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/fs-jetpack/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fs-jetpack/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/fs-jetpack/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-iterator": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-iterator/-/get-iterator-1.0.2.tgz", + "integrity": "sha512-v+dm9bNVfOYsY1OrhaCrmyOcYoSeVvbt+hHZ0Au+T+p1y+0Uyj9aMaGIeUTT6xdpRbWzDeYKvfOslPhggQMcsg==", + "license": "MIT" + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "9.3.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", + "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "minimatch": "^8.0.2", + "minipass": "^4.2.4", + "path-scurry": "^1.6.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gluegun": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/gluegun/-/gluegun-5.1.6.tgz", + "integrity": "sha512-9zbi4EQWIVvSOftJWquWzr9gLX2kaDgPkNR5dYWbM53eVvCI3iKuxLlnKoHC0v4uPoq+Kr/+F569tjoFbA4DSA==", + "license": "MIT", + "dependencies": { + "apisauce": "^2.1.5", + "app-module-path": "^2.2.0", + "cli-table3": "0.6.0", + "colors": "1.4.0", + "cosmiconfig": "7.0.1", + "cross-spawn": "7.0.3", + "ejs": "3.1.8", + "enquirer": "2.3.6", + "execa": "5.1.1", + "fs-jetpack": "4.3.1", + "lodash.camelcase": "^4.3.0", + "lodash.kebabcase": "^4.1.1", + "lodash.lowercase": "^4.3.0", + "lodash.lowerfirst": "^4.3.1", + "lodash.pad": "^4.5.1", + "lodash.padend": "^4.6.1", + "lodash.padstart": "^4.6.1", + "lodash.repeat": "^4.1.0", + "lodash.snakecase": "^4.1.1", + "lodash.startcase": "^4.4.0", + "lodash.trim": "^4.5.1", + "lodash.trimend": "^4.5.1", + "lodash.trimstart": "^4.5.1", + "lodash.uppercase": "^4.3.0", + "lodash.upperfirst": "^4.3.1", + "ora": "4.0.2", + "pluralize": "^8.0.0", + "semver": "7.3.5", + "which": "2.0.2", + "yargs-parser": "^21.0.0" + }, + "bin": { + "gluegun": "bin/gluegun" + } + }, + "node_modules/gluegun/node_modules/ejs": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", + "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", + "license": "Apache-2.0", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gluegun/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/gluegun/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/graphql": { + "version": "15.5.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.5.0.tgz", + "integrity": "sha512-OmaM7y0kaK31NKG31q4YbD2beNYa6jBBKtMFT6gLYJljHLJr42IqJ8KX08u3Li/0ifzTU5HjmoOOrwa5BRLeDA==", + "license": "MIT", + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/graphql-import-node": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/graphql-import-node/-/graphql-import-node-0.0.5.tgz", + "integrity": "sha512-OXbou9fqh9/Lm7vwXT0XoRN9J5+WCYKnbiTalgFDvkQERITRmcfncZs6aVABedd5B85yQU5EULS4a5pnbpuI0Q==", + "license": "MIT", + "peerDependencies": { + "graphql": "*" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash-base/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/hash-base/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "license": "MIT", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/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==", + "license": "MIT", + "dependencies": { + "caseless": "^0.12.0", + "concat-stream": "^1.6.2", + "http-response-object": "^3.0.1", + "parse-cache-control": "^1.0.1" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/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==", + "license": "MIT", + "dependencies": { + "@types/node": "^10.0.3" + } + }, + "node_modules/http-response-object/node_modules/@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==", + "license": "MIT" + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/hyperlinker": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hyperlinker/-/hyperlinker-1.0.0.tgz", + "integrity": "sha512-Ty8UblRWFEcfSuIaajM34LdPXIhbs1ajEX/BBPv24J+enSVaEVY63xQ6lTO9VRYS5LAoghIG0IDJ+p+IPzKUQQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/immutable": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.2.1.tgz", + "integrity": "sha512-7WYV7Q5BTs0nlQm7tl92rDYYoyELLKHoDMBKhrxEoiV4mrfVdRz8hzPiYOzH7yWjzoVEamxRuAqhxL2PLRwZYQ==", + "license": "MIT" + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/interface-datastore": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/interface-datastore/-/interface-datastore-6.1.1.tgz", + "integrity": "sha512-AmCS+9CT34pp2u0QQVXjKztkuq3y5T+BIciuiHDDtDZucZD8VudosnSdUyXJV6IsRkN5jc4RFDhCk1O6Q3Gxjg==", + "license": "MIT", + "dependencies": { + "interface-store": "^2.0.2", + "nanoid": "^3.0.2", + "uint8arrays": "^3.0.0" + } + }, + "node_modules/interface-store": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/interface-store/-/interface-store-2.0.2.tgz", + "integrity": "sha512-rScRlhDcz6k199EkHqT8NpM87ebN89ICOzILoBHgaG36/WX50N32BnU/kpZgCGPLhARRAWUUX5/cyaIjt7Kipg==", + "license": "(Apache-2.0 OR MIT)" + }, + "node_modules/ip-regex": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", + "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ipfs-core-types": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/ipfs-core-types/-/ipfs-core-types-0.9.0.tgz", + "integrity": "sha512-VJ8vJSHvI1Zm7/SxsZo03T+zzpsg8pkgiIi5hfwSJlsrJ1E2v68QPlnLshGHUSYw89Oxq0IbETYl2pGTFHTWfg==", + "deprecated": "js-IPFS has been deprecated in favour of Helia - please see https://github.com/ipfs/js-ipfs/issues/4336 for details", + "license": "(Apache-2.0 OR MIT)", + "dependencies": { + "interface-datastore": "^6.0.2", + "multiaddr": "^10.0.0", + "multiformats": "^9.4.13" + } + }, + "node_modules/ipfs-core-utils": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/ipfs-core-utils/-/ipfs-core-utils-0.13.0.tgz", + "integrity": "sha512-HP5EafxU4/dLW3U13CFsgqVO5Ika8N4sRSIb/dTg16NjLOozMH31TXV0Grtu2ZWo1T10ahTzMvrfT5f4mhioXw==", + "deprecated": "js-IPFS has been deprecated in favour of Helia - please see https://github.com/ipfs/js-ipfs/issues/4336 for details", + "license": "MIT", + "dependencies": { + "any-signal": "^2.1.2", + "blob-to-it": "^1.0.1", + "browser-readablestream-to-it": "^1.0.1", + "debug": "^4.1.1", + "err-code": "^3.0.1", + "ipfs-core-types": "^0.9.0", + "ipfs-unixfs": "^6.0.3", + "ipfs-utils": "^9.0.2", + "it-all": "^1.0.4", + "it-map": "^1.0.4", + "it-peekable": "^1.0.2", + "it-to-stream": "^1.0.0", + "merge-options": "^3.0.4", + "multiaddr": "^10.0.0", + "multiaddr-to-uri": "^8.0.0", + "multiformats": "^9.4.13", + "nanoid": "^3.1.23", + "parse-duration": "^1.0.0", + "timeout-abort-controller": "^2.0.0", + "uint8arrays": "^3.0.0" + } + }, + "node_modules/ipfs-http-client": { + "version": "55.0.0", + "resolved": "https://registry.npmjs.org/ipfs-http-client/-/ipfs-http-client-55.0.0.tgz", + "integrity": "sha512-GpvEs7C7WL9M6fN/kZbjeh4Y8YN7rY8b18tVWZnKxRsVwM25cIFrRI8CwNt3Ugin9yShieI3i9sPyzYGMrLNnQ==", + "deprecated": "js-IPFS has been deprecated in favour of Helia - please see https://github.com/ipfs/js-ipfs/issues/4336 for details", + "license": "(Apache-2.0 OR MIT)", + "dependencies": { + "@ipld/dag-cbor": "^7.0.0", + "@ipld/dag-json": "^8.0.1", + "@ipld/dag-pb": "^2.1.3", + "abort-controller": "^3.0.0", + "any-signal": "^2.1.2", + "debug": "^4.1.1", + "err-code": "^3.0.1", + "ipfs-core-types": "^0.9.0", + "ipfs-core-utils": "^0.13.0", + "ipfs-utils": "^9.0.2", + "it-first": "^1.0.6", + "it-last": "^1.0.4", + "merge-options": "^3.0.4", + "multiaddr": "^10.0.0", + "multiformats": "^9.4.13", + "native-abort-controller": "^1.0.3", + "parse-duration": "^1.0.0", + "stream-to-it": "^0.2.2", + "uint8arrays": "^3.0.0" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=3.0.0" + } + }, + "node_modules/ipfs-unixfs": { + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/ipfs-unixfs/-/ipfs-unixfs-6.0.9.tgz", + "integrity": "sha512-0DQ7p0/9dRB6XCb0mVCTli33GzIzSVx5udpJuVM47tGcD+W+Bl4LsnoLswd3ggNnNEakMv1FdoFITiEnchXDqQ==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "err-code": "^3.0.1", + "protobufjs": "^6.10.2" + }, + "engines": { + "node": ">=16.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/ipfs-utils": { + "version": "9.0.14", + "resolved": "https://registry.npmjs.org/ipfs-utils/-/ipfs-utils-9.0.14.tgz", + "integrity": "sha512-zIaiEGX18QATxgaS0/EOQNoo33W0islREABAcxXE8n7y2MGAlB+hdsxXn4J0hGZge8IqVQhW8sWIb+oJz2yEvg==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "any-signal": "^3.0.0", + "browser-readablestream-to-it": "^1.0.0", + "buffer": "^6.0.1", + "electron-fetch": "^1.7.2", + "err-code": "^3.0.1", + "is-electron": "^2.2.0", + "iso-url": "^1.1.5", + "it-all": "^1.0.4", + "it-glob": "^1.0.1", + "it-to-stream": "^1.0.0", + "merge-options": "^3.0.4", + "nanoid": "^3.1.20", + "native-fetch": "^3.0.0", + "node-fetch": "^2.6.8", + "react-native-fetch-api": "^3.0.0", + "stream-to-it": "^0.2.2" + }, + "engines": { + "node": ">=16.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/ipfs-utils/node_modules/any-signal": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/any-signal/-/any-signal-3.0.1.tgz", + "integrity": "sha512-xgZgJtKEa9YmDqXodIgl7Fl1C8yNXr8w6gXjqK3LW4GcEiYT+6AQfJSE/8SPsEpLLmcvbv8YU+qet94UewHxqg==", + "license": "MIT" + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "license": "MIT" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-electron": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-electron/-/is-electron-2.2.2.tgz", + "integrity": "sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg==", + "license": "MIT" + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "license": "MIT", + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-ip": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-3.1.0.tgz", + "integrity": "sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==", + "license": "MIT", + "dependencies": { + "ip-regex": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/iso-url": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/iso-url/-/iso-url-1.2.1.tgz", + "integrity": "sha512-9JPDgCN4B7QPkLtYAAOrEuAWvP9rWvR5offAr0/SeF046wIkglqH3VXgYYP6NcsKslH80UIVgmPqNe3j7tG2ng==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/isomorphic-ws": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", + "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", + "license": "MIT", + "peerDependencies": { + "ws": "*" + } + }, + "node_modules/it-all": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/it-all/-/it-all-1.0.6.tgz", + "integrity": "sha512-3cmCc6Heqe3uWi3CVM/k51fa/XbMFpQVzFoDsV0IZNHSQDyAXl3c4MjHkFX5kF3922OGj7Myv1nSEUgRtcuM1A==", + "license": "ISC" + }, + "node_modules/it-first": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/it-first/-/it-first-1.0.7.tgz", + "integrity": "sha512-nvJKZoBpZD/6Rtde6FXqwDqDZGF1sCADmr2Zoc0hZsIvnE449gRFnGctxDf09Bzc/FWnHXAdaHVIetY6lrE0/g==", + "license": "ISC" + }, + "node_modules/it-glob": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/it-glob/-/it-glob-1.0.2.tgz", + "integrity": "sha512-Ch2Dzhw4URfB9L/0ZHyY+uqOnKvBNeS/SMcRiPmJfpHiM0TsUZn+GkpcZxAoF3dJVdPm/PuIk3A4wlV7SUo23Q==", + "license": "ISC", + "dependencies": { + "@types/minimatch": "^3.0.4", + "minimatch": "^3.0.4" + } + }, + "node_modules/it-glob/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/it-glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/it-last": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/it-last/-/it-last-1.0.6.tgz", + "integrity": "sha512-aFGeibeiX/lM4bX3JY0OkVCFkAw8+n9lkukkLNivbJRvNz8lI3YXv5xcqhFUV2lDJiraEK3OXRDbGuevnnR67Q==", + "license": "ISC" + }, + "node_modules/it-map": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/it-map/-/it-map-1.0.6.tgz", + "integrity": "sha512-XT4/RM6UHIFG9IobGlQPFQUrlEKkU4eBUFG3qhWhfAdh1JfF2x11ShCrKCdmZ0OiZppPfoLuzcfA4cey6q3UAQ==", + "license": "ISC" + }, + "node_modules/it-peekable": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/it-peekable/-/it-peekable-1.0.3.tgz", + "integrity": "sha512-5+8zemFS+wSfIkSZyf0Zh5kNN+iGyccN02914BY4w/Dj+uoFEoPSvj5vaWn8pNZJNSxzjW0zHRxC3LUb2KWJTQ==", + "license": "ISC" + }, + "node_modules/it-to-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/it-to-stream/-/it-to-stream-1.0.0.tgz", + "integrity": "sha512-pLULMZMAB/+vbdvbZtebC0nWBTbG581lk6w8P7DfIIIKUfa8FbY7Oi0FxZcFPbxvISs7A9E+cMpLDBc1XhpAOA==", + "license": "MIT", + "dependencies": { + "buffer": "^6.0.3", + "fast-fifo": "^1.0.0", + "get-iterator": "^1.0.2", + "p-defer": "^3.0.0", + "p-fifo": "^1.0.0", + "readable-stream": "^3.6.0" + } + }, + "node_modules/it-to-stream/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jake": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", + "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", + "license": "Apache-2.0", + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jake/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/jake/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jake/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/jake/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jayson": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jayson/-/jayson-4.0.0.tgz", + "integrity": "sha512-v2RNpDCMu45fnLzSk47vx7I+QUaOsox6f5X0CUlabAFwxoP+8MfAY0NQRFwOEYXIxm8Ih5y6OaEa5KYiQMkyAA==", + "license": "MIT", + "dependencies": { + "@types/connect": "^3.4.33", + "@types/node": "^12.12.54", + "@types/ws": "^7.4.4", + "commander": "^2.20.3", + "delay": "^5.0.0", + "es6-promisify": "^5.0.0", + "eyes": "^0.1.8", + "isomorphic-ws": "^4.0.1", + "json-stringify-safe": "^5.0.1", + "JSONStream": "^1.3.5", + "uuid": "^8.3.2", + "ws": "^7.4.5" + }, + "bin": { + "jayson": "bin/jayson.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jayson/node_modules/@types/node": { + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", + "license": "MIT" + }, + "node_modules/jayson/node_modules/JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "license": "(MIT OR Apache-2.0)", + "dependencies": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + }, + "bin": { + "JSONStream": "bin.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "license": "MIT" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "license": "MIT" + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "license": "ISC" + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "engines": [ + "node >= 0.2.0" + ], + "license": "MIT" + }, + "node_modules/JSONStream": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.2.tgz", + "integrity": "sha512-mn0KSip7N4e0UDPZHnqDsHECo5uGQrixQKnAskOM1BIB8hd7QKbd6il8IPRPudPHOeHiECoCFqhyMaRO9+nWyA==", + "license": "(MIT OR Apache-2.0)", + "dependencies": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + }, + "bin": { + "JSONStream": "bin.js" + }, + "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", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/keccak/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "license": "MIT" + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "license": "MIT" + }, + "node_modules/lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", + "license": "MIT" + }, + "node_modules/lodash.lowercase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.lowercase/-/lodash.lowercase-4.3.0.tgz", + "integrity": "sha512-UcvP1IZYyDKyEL64mmrwoA1AbFu5ahojhTtkOUr1K9dbuxzS9ev8i4TxMMGCqRC9TE8uDaSoufNAXxRPNTseVA==", + "license": "MIT" + }, + "node_modules/lodash.lowerfirst": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/lodash.lowerfirst/-/lodash.lowerfirst-4.3.1.tgz", + "integrity": "sha512-UUKX7VhP1/JL54NXg2aq/E1Sfnjjes8fNYTNkPU8ZmsaVeBvPHKdbNaN79Re5XRL01u6wbq3j0cbYZj71Fcu5w==", + "license": "MIT" + }, + "node_modules/lodash.pad": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/lodash.pad/-/lodash.pad-4.5.1.tgz", + "integrity": "sha512-mvUHifnLqM+03YNzeTBS1/Gr6JRFjd3rRx88FHWUvamVaT9k2O/kXha3yBSOwB9/DTQrSTLJNHvLBBt2FdX7Mg==", + "license": "MIT" + }, + "node_modules/lodash.padend": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.6.1.tgz", + "integrity": "sha512-sOQs2aqGpbl27tmCS1QNZA09Uqp01ZzWfDUoD+xzTii0E7dSQfRKcRetFwa+uXaxaqL+TKm7CgD2JdKP7aZBSw==", + "license": "MIT" + }, + "node_modules/lodash.padstart": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.padstart/-/lodash.padstart-4.6.1.tgz", + "integrity": "sha512-sW73O6S8+Tg66eY56DBk85aQzzUJDtpoXFBgELMd5P/SotAguo+1kYO6RuYgXxA4HJH3LFTFPASX6ET6bjfriw==", + "license": "MIT" + }, + "node_modules/lodash.repeat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/lodash.repeat/-/lodash.repeat-4.1.0.tgz", + "integrity": "sha512-eWsgQW89IewS95ZOcr15HHCX6FVDxq3f2PNUIng3fyzsPev9imFQxIYdFZ6crl8L56UR6ZlGDLcEb3RZsCSSqw==", + "license": "MIT" + }, + "node_modules/lodash.snakecase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", + "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==", + "license": "MIT" + }, + "node_modules/lodash.startcase": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz", + "integrity": "sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==", + "license": "MIT" + }, + "node_modules/lodash.trim": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/lodash.trim/-/lodash.trim-4.5.1.tgz", + "integrity": "sha512-nJAlRl/K+eiOehWKDzoBVrSMhK0K3A3YQsUNXHQa5yIrKBAhsZgSu3KoAFoFT+mEgiyBHddZ0pRk1ITpIp90Wg==", + "license": "MIT" + }, + "node_modules/lodash.trimend": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/lodash.trimend/-/lodash.trimend-4.5.1.tgz", + "integrity": "sha512-lsD+k73XztDsMBKPKvzHXRKFNMohTjoTKIIo4ADLn5dA65LZ1BqlAvSXhR2rPEC3BgAUQnzMnorqDtqn2z4IHA==", + "license": "MIT" + }, + "node_modules/lodash.trimstart": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/lodash.trimstart/-/lodash.trimstart-4.5.1.tgz", + "integrity": "sha512-b/+D6La8tU76L/61/aN0jULWHkT0EeJCmVstPBn/K9MtD2qBW83AsBNrr63dKuWYwVMO7ucv13QNO/Ek/2RKaQ==", + "license": "MIT" + }, + "node_modules/lodash.uppercase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.uppercase/-/lodash.uppercase-4.3.0.tgz", + "integrity": "sha512-+Nbnxkj7s8K5U8z6KnEYPGUOGp3woZbB7Ecs7v3LkkjLQSm2kP9SKIILitN1ktn2mB/tmM9oSlku06I+/lH7QA==", + "license": "MIT" + }, + "node_modules/lodash.upperfirst": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz", + "integrity": "sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==", + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", + "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "license": "MIT", + "dependencies": { + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-symbols/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" + }, + "node_modules/log-symbols/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==", + "license": "Apache-2.0" + }, + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "license": "ISC" + }, + "node_modules/matchstick-as": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/matchstick-as/-/matchstick-as-0.5.0.tgz", + "integrity": "sha512-4K619YDH+so129qt4RB4JCNxaFwJJYLXPc7drpG+/mIj86Cfzg6FKs/bA91cnajmS1CLHdhHl9vt6Kd6Oqvfkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@graphprotocol/graph-ts": "^0.27.0", + "assemblyscript": "^0.19.20", + "wabt": "1.0.24" + } + }, + "node_modules/matchstick-as/node_modules/@graphprotocol/graph-ts": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@graphprotocol/graph-ts/-/graph-ts-0.27.0.tgz", + "integrity": "sha512-r1SPDIZVQiGMxcY8rhFSM0y7d/xAbQf5vHMWUf59js1KgoyWpM6P3tczZqmQd7JTmeyNsDGIPzd9FeaxllsU4w==", + "dev": true, + "dependencies": { + "assemblyscript": "0.19.10" + } + }, + "node_modules/matchstick-as/node_modules/@graphprotocol/graph-ts/node_modules/assemblyscript": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/assemblyscript/-/assemblyscript-0.19.10.tgz", + "integrity": "sha512-HavcUBXB3mBTRGJcpvaQjmnmaqKHBGREjSPNsIvnAk2f9dj78y4BkMaSSdvBQYWcDDzsHQjyUC8stICFkD1Odg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "binaryen": "101.0.0-nightly.20210723", + "long": "^4.0.0" + }, + "bin": { + "asc": "bin/asc", + "asinit": "bin/asinit" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/assemblyscript" + } + }, + "node_modules/matchstick-as/node_modules/binaryen": { + "version": "101.0.0-nightly.20210723", + "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-101.0.0-nightly.20210723.tgz", + "integrity": "sha512-eioJNqhHlkguVSbblHOtLqlhtC882SOEPKmNFZaDuz1hzQjolxZ+eu3/kaS10n3sGPONsIZsO7R9fR00UyhEUA==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "wasm-opt": "bin/wasm-opt" + } + }, + "node_modules/matchstick-as/node_modules/long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "license": "MIT", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/merge-options": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz", + "integrity": "sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==", + "license": "MIT", + "dependencies": { + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "license": "ISC" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "license": "MIT" + }, + "node_modules/minimatch": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz", + "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", + "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "license": "MIT" + }, + "node_modules/multiaddr": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/multiaddr/-/multiaddr-10.0.1.tgz", + "integrity": "sha512-G5upNcGzEGuTHkzxezPrrD6CaIHR9uo+7MwqhNVcXTs33IInon4y7nMiGxl2CY5hG7chvYQUQhz5V52/Qe3cbg==", + "deprecated": "This module is deprecated, please upgrade to @multiformats/multiaddr", + "license": "MIT", + "dependencies": { + "dns-over-http-resolver": "^1.2.3", + "err-code": "^3.0.1", + "is-ip": "^3.1.0", + "multiformats": "^9.4.5", + "uint8arrays": "^3.0.0", + "varint": "^6.0.0" + } + }, + "node_modules/multiaddr-to-uri": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/multiaddr-to-uri/-/multiaddr-to-uri-8.0.0.tgz", + "integrity": "sha512-dq4p/vsOOUdVEd1J1gl+R2GFrXJQH8yjLtz4hodqdVbieg39LvBOdMQRdQnfbg5LSM/q1BYNVf5CBbwZFFqBgA==", + "deprecated": "This module is deprecated, please upgrade to @multiformats/multiaddr-to-uri", + "license": "MIT", + "dependencies": { + "multiaddr": "^10.0.0" + } + }, + "node_modules/multiformats": { + "version": "9.9.0", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz", + "integrity": "sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==", + "license": "(Apache-2.0 AND MIT)" + }, + "node_modules/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" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/native-abort-controller": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/native-abort-controller/-/native-abort-controller-1.0.4.tgz", + "integrity": "sha512-zp8yev7nxczDJMoP6pDxyD20IU0T22eX8VwN2ztDccKvSZhRaV33yP1BGwKSZfXuqWUzsXopVFjBdau9OOAwMQ==", + "license": "MIT", + "peerDependencies": { + "abort-controller": "*" + } + }, + "node_modules/native-fetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/native-fetch/-/native-fetch-3.0.0.tgz", + "integrity": "sha512-G3Z7vx0IFb/FQ4JxvtqGABsOTIqRWvgQz6e+erkB+JJD6LrszQtMozEHI4EkmgZQvnGHrpLVzUWk7t4sJCIkVw==", + "license": "MIT", + "peerDependencies": { + "node-fetch": "*" + } + }, + "node_modules/natural-orderby": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/natural-orderby/-/natural-orderby-2.0.3.tgz", + "integrity": "sha512-p7KTHxU0CUrcOXe62Zfrb5Z13nLvPhSWR/so3kFulUQU0sgUll2Z0LwpsLN351eOOD+hRGu/F1g+6xDfPeD++Q==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/node-addon-api": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", + "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", + "license": "MIT" + }, + "node_modules/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==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-gyp-build": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.1.tgz", + "integrity": "sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==", + "license": "MIT", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/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==", + "license": "MIT", + "dependencies": { + "bn.js": "4.11.6", + "strip-hex-prefix": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/number-to-bn/node_modules/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==", + "license": "MIT" + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-treeify": { + "version": "1.1.33", + "resolved": "https://registry.npmjs.org/object-treeify/-/object-treeify-1.1.33.tgz", + "integrity": "sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "license": "MIT", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/ora/-/ora-4.0.2.tgz", + "integrity": "sha512-YUOZbamht5mfLxPmk4M35CD/5DuOkAacxlEUbStVXpBAt4fyhBf+vZHI/HRkI++QUp3sNoeA2Gw4C+hi4eGSig==", + "license": "MIT", + "dependencies": { + "chalk": "^2.4.2", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.2.0", + "is-interactive": "^1.0.0", + "log-symbols": "^3.0.0", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ora/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ora/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/ora/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" + }, + "node_modules/ora/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/ora/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/ora/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ora/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-defer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-3.0.0.tgz", + "integrity": "sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/p-fifo": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-fifo/-/p-fifo-1.0.0.tgz", + "integrity": "sha512-IjoCxXW48tqdtDFz6fqo5q1UfFVjjVZe8TC1QRflvNUJtNfCUhxOUw6MOVZhDPjqhSzc26xKdugsO17gmzd5+A==", + "license": "MIT", + "dependencies": { + "fast-fifo": "^1.0.0", + "p-defer": "^3.0.0" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/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==" + }, + "node_modules/parse-duration": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/parse-duration/-/parse-duration-1.1.0.tgz", + "integrity": "sha512-z6t9dvSJYaPoQq7quMzdEagSFtpGu+utzHqqxmpVWNNZRIXnvqyCvn9XsTdh7c/w0Bqmdz3RB3YnRaKtpRtEXQ==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/password-prompt": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/password-prompt/-/password-prompt-1.1.3.tgz", + "integrity": "sha512-HkrjG2aJlvF0t2BMH0e2LB/EHf3Lcq3fNMzy4GYHcQblAvOl+QQji1Lx7WRBMqpVK8p+KR7bCg7oqAMXtdgqyw==", + "license": "0BSD", + "dependencies": { + "ansi-escapes": "^4.3.2", + "cross-spawn": "^7.0.3" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "license": "MIT", + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/prettier": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", + "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" + }, + "node_modules/promise": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", + "license": "MIT", + "dependencies": { + "asap": "~2.0.6" + } + }, + "node_modules/protobufjs": { + "version": "6.11.4", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.4.tgz", + "integrity": "sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw==", + "hasInstallScript": true, + "license": "BSD-3-Clause", + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.1", + "@types/node": ">=13.7.0", + "long": "^4.0.0" + }, + "bin": { + "pbjs": "bin/pbjs", + "pbts": "bin/pbts" + } + }, + "node_modules/protobufjs/node_modules/long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", + "license": "Apache-2.0" + }, + "node_modules/pump": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz", + "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "license": "MIT" + }, + "node_modules/pvtsutils": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.5.tgz", + "integrity": "sha512-ARvb14YB9Nm2Xi6nBq1ZX6dAM0FsJnuk+31aUp4TrcZEdKUlSqOqsxJHUPJDNE3qiIp+iUPEIeR6Je/tgV7zsA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.6.1" + } + }, + "node_modules/pvutils": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.3.tgz", + "integrity": "sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/qs": { + "version": "6.12.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.3.tgz", + "integrity": "sha512-AWJm14H1vVaO/iNZ4/hO+HyaTehuy9nRqVdkTqlJt0HWvBiBIEXFmb4C0DGeYo3Xes9rrEW+TxHsaigCbN5ICQ==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/react-native-fetch-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/react-native-fetch-api/-/react-native-fetch-api-3.0.0.tgz", + "integrity": "sha512-g2rtqPjdroaboDKTsJCTlcmtw54E25OjyaunUP0anOZn4Fuo2IKs8BVfe02zVggA/UysbmfSnRJIqtNkAgggNA==", + "license": "MIT", + "dependencies": { + "p-defer": "^3.0.0" + } + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/receptacle": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/receptacle/-/receptacle-1.3.2.tgz", + "integrity": "sha512-HrsFvqZZheusncQRiEE7GatOAETrARKV/lnfYicIm8lbvp/JQOdADOfhjBd2DajvoszEyxSM6RlAAIZgEoeu/A==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/redeyed": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz", + "integrity": "sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==", + "license": "MIT", + "dependencies": { + "esprima": "~4.0.0" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/retimer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/retimer/-/retimer-3.0.0.tgz", + "integrity": "sha512-WKE0j11Pa0ZJI5YIk0nflGI7SQsfl2ljihVy7ogh7DeQSeYAUi0ubZ/yEueGtDfUPk6GH5LRw1hBdLq4IwUBWA==", + "license": "MIT" + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "license": "MIT", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/rlp": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", + "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", + "license": "MPL-2.0", + "dependencies": { + "bn.js": "^5.2.0" + }, + "bin": { + "rlp": "bin/rlp" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/scrypt-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", + "license": "MIT" + }, + "node_modules/secp256k1": { + "version": "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", + "node-gyp-build": "^4.2.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/semver": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.4.0.tgz", + "integrity": "sha512-RgOxM8Mw+7Zus0+zcLEUn8+JfoLpj/huFTItQy2hsM4khuC1HYRDp0cU482Ewn/Fcy6bCjufD8vAj7voC66KQw==", + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/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==", + "license": "MIT" + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "license": "(MIT AND BSD-3-Clause)", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/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==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/split-ca": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split-ca/-/split-ca-1.0.1.tgz", + "integrity": "sha512-Q5thBSxp5t8WPTTJQS59LrGqOZqOsrhDGDVm8azCqIBjSBd7nd9o2PM+mDulQQkh8h//4U6hFZnc/mul8t5pWQ==", + "license": "ISC" + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "license": "BSD-3-Clause" + }, + "node_modules/stream-to-it": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/stream-to-it/-/stream-to-it-0.2.4.tgz", + "integrity": "sha512-4vEbkSs83OahpmBybNJXlJd7d6/RxzkkSdT3I0mnGt79Xd2Kk+e1JqbvAvsQfCeKj3aKb0QIWkyK3/n0j506vQ==", + "license": "MIT", + "dependencies": { + "get-iterator": "^1.0.2" + } + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "license": "MIT", + "dependencies": { + "is-hex-prefixed": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/supports-hyperlinks": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/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==", + "license": "MIT", + "dependencies": { + "http-response-object": "^3.0.1", + "sync-rpc": "^1.2.1", + "then-request": "^6.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/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==", + "license": "MIT", + "dependencies": { + "get-port": "^3.1.0" + } + }, + "node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar-fs": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.3.tgz", + "integrity": "sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw==", + "license": "MIT", + "dependencies": { + "chownr": "^1.0.1", + "mkdirp": "^0.5.1", + "pump": "^1.0.0", + "tar-stream": "^1.1.2" + } + }, + "node_modules/tar-fs/node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "license": "ISC" + }, + "node_modules/tar-fs/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/tar-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", + "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", + "license": "MIT", + "dependencies": { + "bl": "^1.0.0", + "buffer-alloc": "^1.2.0", + "end-of-stream": "^1.0.0", + "fs-constants": "^1.0.0", + "readable-stream": "^2.3.0", + "to-buffer": "^1.1.1", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/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==", + "license": "MIT", + "dependencies": { + "@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" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/then-request/node_modules/@types/node": { + "version": "8.10.66", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz", + "integrity": "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==", + "license": "MIT" + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "license": "MIT" + }, + "node_modules/timeout-abort-controller": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/timeout-abort-controller/-/timeout-abort-controller-2.0.0.tgz", + "integrity": "sha512-2FAPXfzTPYEgw27bQGTHc0SzrbmnU2eso4qo172zMLZzaGqeu09PFa5B2FCUHM1tflgRqPgn5KQgp6+Vex4uNA==", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "native-abort-controller": "^1.0.4", + "retimer": "^3.0.0" + } + }, + "node_modules/tmp": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", + "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", + "license": "MIT", + "engines": { + "node": ">=14.14" + } + }, + "node_modules/tmp-promise": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz", + "integrity": "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==", + "license": "MIT", + "dependencies": { + "tmp": "^0.2.0" + } + }, + "node_modules/to-buffer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", + "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==", + "license": "MIT" + }, + "node_modules/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==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "license": "MIT", + "dependencies": { + "@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" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "license": "0BSD" + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "license": "MIT" + }, + "node_modules/typescript": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", + "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", + "license": "Apache-2.0", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/uint8arrays": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", + "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", + "license": "MIT", + "dependencies": { + "multiformats": "^9.4.2" + } + }, + "node_modules/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==", + "license": "MIT" + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/urlpattern-polyfill": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-8.0.2.tgz", + "integrity": "sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ==", + "license": "MIT" + }, + "node_modules/utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", + "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==", + "license": "MIT" + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "license": "MIT" + }, + "node_modules/varint": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", + "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", + "license": "MIT" + }, + "node_modules/wabt": { + "version": "1.0.24", + "resolved": "https://registry.npmjs.org/wabt/-/wabt-1.0.24.tgz", + "integrity": "sha512-8l7sIOd3i5GWfTWciPL0+ff/FK/deVK2Q6FN+MPz4vfUcD78i2M/49XJTwF6aml91uIiuXJEsLKWMB2cw/mtKg==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "wasm-decompile": "bin/wasm-decompile", + "wasm-interp": "bin/wasm-interp", + "wasm-objdump": "bin/wasm-objdump", + "wasm-opcodecnt": "bin/wasm-opcodecnt", + "wasm-strip": "bin/wasm-strip", + "wasm-validate": "bin/wasm-validate", + "wasm2c": "bin/wasm2c", + "wasm2wat": "bin/wasm2wat", + "wat2wasm": "bin/wat2wasm" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/web-streams-polyfill": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/web3-eth-abi": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.7.0.tgz", + "integrity": "sha512-heqR0bWxgCJwjWIhq2sGyNj9bwun5+Xox/LdZKe+WMyTSy0cXDXEAgv3XKNkXC4JqdDt/ZlbTEx4TWak4TRMSg==", + "license": "LGPL-3.0", + "dependencies": { + "@ethersproject/abi": "5.0.7", + "web3-utils": "1.7.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-utils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.0.tgz", + "integrity": "sha512-O8Tl4Ky40Sp6pe89Olk2FsaUkgHyb5QAXuaKo38ms3CxZZ4d3rPGfjP9DNKGm5+IUgAZBNpF1VmlSmNCqfDI1w==", + "license": "LGPL-3.0", + "dependencies": { + "bn.js": "^4.11.9", + "ethereum-bloom-filters": "^1.0.6", + "ethereumjs-util": "^7.1.0", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-utils/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "license": "MIT" + }, + "node_modules/webcrypto-core": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/webcrypto-core/-/webcrypto-core-1.8.0.tgz", + "integrity": "sha512-kR1UQNH8MD42CYuLzvibfakG5Ew5seG85dMMoAM/1LqvckxaF6pUiidLuraIu4V+YCIFabYecUZAW0TuxAoaqw==", + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.3.8", + "@peculiar/json-schema": "^1.1.12", + "asn1js": "^3.0.1", + "pvtsutils": "^1.3.5", + "tslib": "^2.6.2" + } + }, + "node_modules/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==", + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "license": "MIT", + "dependencies": { + "string-width": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "license": "MIT" + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, + "node_modules/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==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + } + } +} diff --git a/thegraph/chiado-shutter-validator-registry/package.json b/thegraph/shutter-validator-registry/package.json similarity index 85% rename from thegraph/chiado-shutter-validator-registry/package.json rename to thegraph/shutter-validator-registry/package.json index dc6e842..32305d4 100644 --- a/thegraph/chiado-shutter-validator-registry/package.json +++ b/thegraph/shutter-validator-registry/package.json @@ -4,10 +4,10 @@ "scripts": { "codegen": "graph codegen", "build": "graph build", - "deploy": "graph deploy --node https://api.studio.thegraph.com/deploy/ chiado-shutter-validator-registry", + "deploy": "graph deploy --node https://api.studio.thegraph.com/deploy/ shutter-validator-registry", "create-local": "graph create --node http://localhost:8020/ chiado-shutter-validator-registry", "remove-local": "graph remove --node http://localhost:8020/ chiado-shutter-validator-registry", - "deploy-local": "graph deploy --node http://localhost:8020/ --ipfs http://localhost:5001 chiado-shutter-validator-registry", + "deploy-local": "graph deploy --node http://localhost:8020/ --ipfs http://localhost:5001 shutter-validator-registry", "test": "graph test" }, "dependencies": { diff --git a/thegraph/chiado-shutter-validator-registry/schema.graphql b/thegraph/shutter-validator-registry/schema.graphql similarity index 100% rename from thegraph/chiado-shutter-validator-registry/schema.graphql rename to thegraph/shutter-validator-registry/schema.graphql diff --git a/thegraph/shutter-validator-registry/src/validator-registry.ts b/thegraph/shutter-validator-registry/src/validator-registry.ts new file mode 100644 index 0000000..3470dbc --- /dev/null +++ b/thegraph/shutter-validator-registry/src/validator-registry.ts @@ -0,0 +1,19 @@ +import { Bytes, BigInt } from '@graphprotocol/graph-ts'; +import { Updated as UpdatedEvent } from '../generated/ValidatorRegistry/ValidatorRegistry'; +import { Updated } from '../generated/schema'; + +export function handleUpdated(event: UpdatedEvent): void { + const entity = new Updated( + event.transaction.hash.concatI32(event.logIndex.toI32()) + ) + entity.message = event.params.message + entity.signature = event.params.signature + // entity.validatorIndex = extractValidatorIndex(event.params.message); + // entity.subscriptionStatus = extractSubscriptionStatus(event.params.message); + + entity.blockNumber = event.block.number + entity.blockTimestamp = event.block.timestamp + entity.transactionHash = event.transaction.hash + + entity.save() +} diff --git a/thegraph/chiado-shutter-validator-registry/subgraph.yaml b/thegraph/shutter-validator-registry/subgraph.yaml similarity index 100% rename from thegraph/chiado-shutter-validator-registry/subgraph.yaml rename to thegraph/shutter-validator-registry/subgraph.yaml diff --git a/thegraph/chiado-shutter-validator-registry/tests/validator-registry-utils.ts b/thegraph/shutter-validator-registry/tests/validator-registry-utils.ts similarity index 100% rename from thegraph/chiado-shutter-validator-registry/tests/validator-registry-utils.ts rename to thegraph/shutter-validator-registry/tests/validator-registry-utils.ts diff --git a/thegraph/chiado-shutter-validator-registry/tests/validator-registry.test.ts b/thegraph/shutter-validator-registry/tests/validator-registry.test.ts similarity index 100% rename from thegraph/chiado-shutter-validator-registry/tests/validator-registry.test.ts rename to thegraph/shutter-validator-registry/tests/validator-registry.test.ts diff --git a/thegraph/chiado-shutter-validator-registry/tsconfig.json b/thegraph/shutter-validator-registry/tsconfig.json similarity index 100% rename from thegraph/chiado-shutter-validator-registry/tsconfig.json rename to thegraph/shutter-validator-registry/tsconfig.json From c99a5b5a71c011435edec6bbdfafdd09ca6d41f0 Mon Sep 17 00:00:00 2001 From: verkhohliad Date: Wed, 24 Jul 2024 10:57:25 +0100 Subject: [PATCH 03/22] new wip version of the graph for chiadO --- .../shutter-validator-registry/package.json | 4 +-- .../shutter-validator-registry/schema.graphql | 6 ++-- .../src/validator-registry.ts | 31 ++++++++++++++++--- 3 files changed, 33 insertions(+), 8 deletions(-) diff --git a/thegraph/shutter-validator-registry/package.json b/thegraph/shutter-validator-registry/package.json index 32305d4..80e1447 100644 --- a/thegraph/shutter-validator-registry/package.json +++ b/thegraph/shutter-validator-registry/package.json @@ -5,8 +5,8 @@ "codegen": "graph codegen", "build": "graph build", "deploy": "graph deploy --node https://api.studio.thegraph.com/deploy/ shutter-validator-registry", - "create-local": "graph create --node http://localhost:8020/ chiado-shutter-validator-registry", - "remove-local": "graph remove --node http://localhost:8020/ chiado-shutter-validator-registry", + "create-local": "graph create --node http://localhost:8020/ shutter-validator-registry", + "remove-local": "graph remove --node http://localhost:8020/ shutter-validator-registry", "deploy-local": "graph deploy --node http://localhost:8020/ --ipfs http://localhost:5001 shutter-validator-registry", "test": "graph test" }, diff --git a/thegraph/shutter-validator-registry/schema.graphql b/thegraph/shutter-validator-registry/schema.graphql index 9555dd0..6101976 100644 --- a/thegraph/shutter-validator-registry/schema.graphql +++ b/thegraph/shutter-validator-registry/schema.graphql @@ -1,7 +1,9 @@ type Updated @entity(immutable: true) { id: Bytes! - message: Bytes! # bytes - signature: Bytes! # bytes + message: Bytes! + signature: Bytes! + validatorIndex: BigInt! + subscriptionStatus: Boolean! blockNumber: BigInt! blockTimestamp: BigInt! transactionHash: Bytes! diff --git a/thegraph/shutter-validator-registry/src/validator-registry.ts b/thegraph/shutter-validator-registry/src/validator-registry.ts index 3470dbc..030dd20 100644 --- a/thegraph/shutter-validator-registry/src/validator-registry.ts +++ b/thegraph/shutter-validator-registry/src/validator-registry.ts @@ -2,14 +2,37 @@ import { Bytes, BigInt } from '@graphprotocol/graph-ts'; import { Updated as UpdatedEvent } from '../generated/ValidatorRegistry/ValidatorRegistry'; import { Updated } from '../generated/schema'; +function extractValidatorIndex(messageBytes: Bytes): BigInt { + // Convert hex to bytes + // const messageBytes = utils.arrayify(messageHex); + + // Version: 1 byte + // Chain ID: 8 bytes + // Validator Registry Address: 20 bytes (Ethereum address) + // Validator Index: 8 bytes + // Nonce: 8 bytes + // Action: 1 byte + const offset = 1 + 8 + 20; // skip Version, Chain ID, and Address + const validatorIndexBytes = Bytes.fromUint8Array(messageBytes.slice(offset, offset + 8)); + + // Convert from bytes to big-endian integer + return BigInt.fromByteArray(validatorIndexBytes); +} + +function extractSubscriptionStatus(messageBytes: Bytes): boolean { + const messageHex = messageBytes.toHexString(); + + return messageHex[messageHex.length - 1] === '1'; +} + export function handleUpdated(event: UpdatedEvent): void { const entity = new Updated( event.transaction.hash.concatI32(event.logIndex.toI32()) ) - entity.message = event.params.message - entity.signature = event.params.signature - // entity.validatorIndex = extractValidatorIndex(event.params.message); - // entity.subscriptionStatus = extractSubscriptionStatus(event.params.message); + entity.message = event.params.message; + entity.signature = event.params.signature; + entity.validatorIndex = extractValidatorIndex(event.params.message); + entity.subscriptionStatus = extractSubscriptionStatus(event.params.message); entity.blockNumber = event.block.number entity.blockTimestamp = event.block.timestamp From 45e2c1fc14677f5976ebecc5349d88ecbee16883 Mon Sep 17 00:00:00 2001 From: verkhohliad Date: Thu, 25 Jul 2024 15:44:59 +0100 Subject: [PATCH 04/22] integrate theGraph usage, handling subgraph link with selected chain, fetching query recursevely (wip) --- .env-example | 3 +- package-lock.json | 245 ++++++++++++++++++ package.json | 1 + src/constants/chains.ts | 10 +- src/constants/config.ts | 1 + src/main.tsx | 9 +- src/providers/GraphQLProvider.tsx | 30 +++ .../Web3ModalProvider.tsx | 0 .../ShutterTimer/ValidatorRegistryQL.ts | 12 + .../useGetShutterValidatorIndexes.ts | 10 + .../useQueryValidatorRegistryLogs.ts | 42 +++ 11 files changed, 357 insertions(+), 6 deletions(-) create mode 100644 src/providers/GraphQLProvider.tsx rename src/{components => providers}/Web3ModalProvider.tsx (100%) create mode 100644 src/shared/ShutterTimer/ValidatorRegistryQL.ts create mode 100644 src/shared/ShutterTimer/useQueryValidatorRegistryLogs.ts diff --git a/.env-example b/.env-example index ab2a0d0..b06ca4c 100644 --- a/.env-example +++ b/.env-example @@ -1 +1,2 @@ -VITE_WALLET_CONNECT_PROJECT_ID= \ No newline at end of file +VITE_WALLET_CONNECT_PROJECT_ID= +VITE_THE_GRAPH_API_KEY= \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 24ec7ac..76f0ddf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,7 @@ "name": "shutter", "version": "0.0.0", "dependencies": { + "@apollo/client": "^3.11.1", "@nextui-org/react": "^2.3.6", "@tanstack/react-query": "^5.45.1", "@web3modal/wagmi": "^5.0.6", @@ -64,6 +65,49 @@ "node": ">=6.0.0" } }, + "node_modules/@apollo/client": { + "version": "3.11.1", + "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.11.1.tgz", + "integrity": "sha512-fVuAi7ufRt2apIEYV18upvykw5JD+CwHAThxZkclby4phWCXtO4LD39Z0sk0+4i+j7oZ+jOofEkO1XGDDomZvQ==", + "license": "MIT", + "dependencies": { + "@graphql-typed-document-node/core": "^3.1.1", + "@wry/caches": "^1.0.0", + "@wry/equality": "^0.5.6", + "@wry/trie": "^0.5.0", + "graphql-tag": "^2.12.6", + "hoist-non-react-statics": "^3.3.2", + "optimism": "^0.18.0", + "prop-types": "^15.7.2", + "rehackt": "^0.1.0", + "response-iterator": "^0.2.6", + "symbol-observable": "^4.0.0", + "ts-invariant": "^0.10.3", + "tslib": "^2.3.0", + "zen-observable-ts": "^1.2.5" + }, + "peerDependencies": { + "graphql": "^15.0.0 || ^16.0.0", + "graphql-ws": "^5.5.5", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0", + "subscriptions-transport-ws": "^0.9.0 || ^0.11.0" + }, + "peerDependenciesMeta": { + "graphql-ws": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "subscriptions-transport-ws": { + "optional": true + } + } + }, "node_modules/@babel/code-frame": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", @@ -3450,6 +3494,15 @@ "tslib": "^2.4.0" } }, + "node_modules/@graphql-typed-document-node/core": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", + "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", + "license": "MIT", + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, "node_modules/@hapi/hoek": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", @@ -10393,6 +10446,54 @@ "zod": "3.22.4" } }, + "node_modules/@wry/caches": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@wry/caches/-/caches-1.0.1.tgz", + "integrity": "sha512-bXuaUNLVVkD20wcGBWRyo7j9N3TxePEWFZj2Y+r9OoUzfqmavM84+mFykRicNsBqatba5JLay1t48wxaXaWnlA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@wry/context": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.7.4.tgz", + "integrity": "sha512-jmT7Sb4ZQWI5iyu3lobQxICu2nC/vbUhP0vIdd6tHC9PTfenmRmuIFqktc6GH9cgi+ZHnsLWPvfSvc4DrYmKiQ==", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@wry/equality": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.5.7.tgz", + "integrity": "sha512-BRFORjsTuQv5gxcXsuDXx6oGRhuVsEGwZy6LOzRRfgu+eSfxbhUQ9L9YtSEIuIjY/o7g3iWFjrc5eSY1GXP2Dw==", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@wry/trie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@wry/trie/-/trie-0.5.0.tgz", + "integrity": "sha512-FNoYzHawTMk/6KMQoEG5O4PuioX19UbwdQKF44yw0nLfOypfQdjtfZzo/UIJWAJ23sNIFbD1Ug9lbaDGMwbqQA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/abitype": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/abitype/-/abitype-1.0.4.tgz", @@ -13214,6 +13315,31 @@ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, + "node_modules/graphql": { + "version": "16.9.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.9.0.tgz", + "integrity": "sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==", + "license": "MIT", + "peer": true, + "engines": { + "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" + } + }, + "node_modules/graphql-tag": { + "version": "2.12.6", + "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", + "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, "node_modules/h3": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/h3/-/h3-1.12.0.tgz", @@ -13348,6 +13474,21 @@ "minimalistic-crypto-utils": "^1.0.1" } }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "license": "BSD-3-Clause", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hoist-non-react-statics/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, "node_modules/html-parse-stringify": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz", @@ -16119,6 +16260,30 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/optimism": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.18.0.tgz", + "integrity": "sha512-tGn8+REwLRNFnb9WmcY5IfpOqeX2kpaYJ1s6Ae3mn12AeydLkR3j+jSCmVQFoXqU8D41PAJ1RG1rCRNWmNZVmQ==", + "license": "MIT", + "dependencies": { + "@wry/caches": "^1.0.0", + "@wry/context": "^0.7.0", + "@wry/trie": "^0.4.3", + "tslib": "^2.3.0" + } + }, + "node_modules/optimism/node_modules/@wry/trie": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@wry/trie/-/trie-0.4.3.tgz", + "integrity": "sha512-I6bHwH0fSf6RqQcnnXLJKhkSXG45MFral3GxPaY4uAl0LYDZM+YDVDAiU9bYwjTuysy1S0IeecWtmq1SZA3M1w==", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/optionator": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", @@ -16845,6 +17010,23 @@ "node": ">= 6" } }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, "node_modules/proxy-compare": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/proxy-compare/-/proxy-compare-2.5.1.tgz", @@ -17320,6 +17502,24 @@ "jsesc": "bin/jsesc" } }, + "node_modules/rehackt": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/rehackt/-/rehackt-0.1.0.tgz", + "integrity": "sha512-7kRDOuLHB87D/JESKxQoRwv4DzbIdwkAGQ7p6QKGdVlY1IZheUnVhlk/4UZlNUVxdAXpyxikE3URsG067ybVzw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "*" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "react": { + "optional": true + } + } + }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -17358,6 +17558,15 @@ "node": ">=4" } }, + "node_modules/response-iterator": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/response-iterator/-/response-iterator-0.2.6.tgz", + "integrity": "sha512-pVzEEzrsg23Sh053rmDUvLSkGXluZio0qu8VT6ukrYuvtjVfCbDZH9d6PGXb8HZfzdNZt8feXv/jvUzlhRgLnw==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, "node_modules/restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", @@ -18293,6 +18502,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/symbol-observable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", + "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, "node_modules/system-architecture": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/system-architecture/-/system-architecture-0.1.0.tgz", @@ -18562,6 +18780,18 @@ "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==" }, + "node_modules/ts-invariant": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.10.3.tgz", + "integrity": "sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==", + "license": "MIT", + "dependencies": { + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/tslib": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", @@ -19589,6 +19819,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/zen-observable": { + "version": "0.8.15", + "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz", + "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==", + "license": "MIT" + }, + "node_modules/zen-observable-ts": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-1.2.5.tgz", + "integrity": "sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg==", + "license": "MIT", + "dependencies": { + "zen-observable": "0.8.15" + } + }, "node_modules/zod": { "version": "3.22.4", "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz", diff --git a/package.json b/package.json index c6e5d6b..398e58f 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "deploy": "npm run build & firebase deploy --only hosting:gnosis-shutter" }, "dependencies": { + "@apollo/client": "^3.11.1", "@nextui-org/react": "^2.3.6", "@tanstack/react-query": "^5.45.1", "@web3modal/wagmi": "^5.0.6", diff --git a/src/constants/chains.ts b/src/constants/chains.ts index 544f39b..66f37c0 100644 --- a/src/constants/chains.ts +++ b/src/constants/chains.ts @@ -1,5 +1,7 @@ -import { gnosis, gnosisChiado, type Chain } from "wagmi/chains"; -import { type Address } from "viem"; +import { gnosis, gnosisChiado, type Chain } from 'wagmi/chains'; +import { type Address } from 'viem'; + +import config from '@/constants/config'; type Token = { address: string; @@ -32,6 +34,7 @@ type EnhancedChain = Chain & { gbcUrl: string; genesisTime: number; tokens: Token[]; + theGraphUrl: string, }; type ChainMap = { @@ -86,6 +89,7 @@ export const CHAINS: EnhancedChain[] = [ img: "/gnosisGreen.svg", }, ], + theGraphUrl: ``, }, { ...gnosisChiado, @@ -127,6 +131,8 @@ export const CHAINS: EnhancedChain[] = [ img: "/gnosisGreen.svg", }, ], + // https://api.studio.thegraph.com/query/83608/shutter-validator-registry/v0.0.1 + theGraphUrl: `https://gateway-arbitrum.network.thegraph.com/api/${config.theGraphApiKey}/subgraphs/id/6An9eFzxuuEqPWncZVP6Gr1nEpx4ktz87Re4zANo3Z9`, }, ]; diff --git a/src/constants/config.ts b/src/constants/config.ts index 4e9d88e..0c62f42 100644 --- a/src/constants/config.ts +++ b/src/constants/config.ts @@ -1,3 +1,4 @@ export default { walletConnectProjectId: import.meta.env.VITE_WALLET_CONNECT_PROJECT_ID, + theGraphApiKey: import.meta.env.VITE_THE_GRAPH_API_KEY, } \ No newline at end of file diff --git a/src/main.tsx b/src/main.tsx index ea0d5d9..c569a9f 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -3,7 +3,8 @@ import ReactDOM from 'react-dom/client' import { NextUIProvider } from '@nextui-org/react' import { Toaster } from 'sonner' -import { Web3ModalProvider } from '@/components/Web3ModalProvider'; +import { Web3ModalProvider } from '@/providers/Web3ModalProvider'; +import { GraphQLProvider } from '@/providers/GraphQLProvider'; import App from './App.tsx' import './index.css' @@ -11,9 +12,11 @@ ReactDOM.createRoot(document.getElementById('root')!).render( - + + - + + , diff --git a/src/providers/GraphQLProvider.tsx b/src/providers/GraphQLProvider.tsx new file mode 100644 index 0000000..8d2a015 --- /dev/null +++ b/src/providers/GraphQLProvider.tsx @@ -0,0 +1,30 @@ +import { useMemo } from 'react'; +import { ApolloClient, HttpLink, InMemoryCache } from '@apollo/client'; +import { ApolloProvider } from '@apollo/client/react'; +import { useChainId } from 'wagmi'; + +import { CHAINS_MAP } from '@/constants/chains'; + +export const GraphQLProvider = ({ children }: { children: any }) => { + const chainId = useChainId(); + + const client = useMemo(() => { + const chain = CHAINS_MAP[chainId]; + + const link = new HttpLink({ + // uri: 'https://api.studio.thegraph.com/query/83608/shutter-validator-registry/v0.0.1', + uri: chain.theGraphUrl, + }); + + return new ApolloClient({ + link: link, + cache: new InMemoryCache(), + }); + }, [chainId]); + + return ( + + {children} + + ) +} diff --git a/src/components/Web3ModalProvider.tsx b/src/providers/Web3ModalProvider.tsx similarity index 100% rename from src/components/Web3ModalProvider.tsx rename to src/providers/Web3ModalProvider.tsx diff --git a/src/shared/ShutterTimer/ValidatorRegistryQL.ts b/src/shared/ShutterTimer/ValidatorRegistryQL.ts new file mode 100644 index 0000000..1f1a631 --- /dev/null +++ b/src/shared/ShutterTimer/ValidatorRegistryQL.ts @@ -0,0 +1,12 @@ +import { gql } from '@apollo/client'; + +export const GET_UPDATES = gql` + query GetUpdates($first: Int!, $skip: Int!) { + updateds(first: $first, skip: $skip, orderBy: blockNumber, orderDirection: asc) { + id + message + signature + blockNumber + } + } +`; diff --git a/src/shared/ShutterTimer/useGetShutterValidatorIndexes.ts b/src/shared/ShutterTimer/useGetShutterValidatorIndexes.ts index 38c6790..e1fa719 100644 --- a/src/shared/ShutterTimer/useGetShutterValidatorIndexes.ts +++ b/src/shared/ShutterTimer/useGetShutterValidatorIndexes.ts @@ -1,7 +1,10 @@ import { BigNumber, utils } from 'ethers'; import { useMemo } from 'react'; +import { useLazyQuery, useQuery } from '@apollo/client'; import { useGetValidatorRegistryLogs } from './useGetValidatorRegistryLogs'; +import { GET_UPDATES } from './ValidatorRegistryQL'; +import { useQueryValidatorRegistryLogs } from './useQueryValidatorRegistryLogs'; function extractValidatorIndex(messageHex: string) { // Convert hex to bytes @@ -27,6 +30,13 @@ function extractSubscriptionStatus(messageHex: string) { export const useGetShutterValidatorIndexes = (chainId: number) => { const { data: logs } = useGetValidatorRegistryLogs(chainId); +// todo wip + useQueryValidatorRegistryLogs(); + // const [getUpdates, { loading, data: updates }] = useLazyQuery(GET_UPDATES); + // const { data: updates, loading, error } = useQuery(GET_UPDATES); + + // console.log('graph', { logs, updates, loading, error }); + return useMemo(() => { return logs?.reduce((acc, log) => { const validatorIndex = extractValidatorIndex(log.args.message); diff --git a/src/shared/ShutterTimer/useQueryValidatorRegistryLogs.ts b/src/shared/ShutterTimer/useQueryValidatorRegistryLogs.ts new file mode 100644 index 0000000..9c6e1a1 --- /dev/null +++ b/src/shared/ShutterTimer/useQueryValidatorRegistryLogs.ts @@ -0,0 +1,42 @@ +import { useState, useEffect } from 'react'; +import { useLazyQuery, useQuery } from '@apollo/client'; +import { GET_UPDATES } from './ValidatorRegistryQL'; + +// finish logic for dynamic fetching +// use cache persistent +// deploy another graph for mainnet +// todo wip +export const useQueryValidatorRegistryLogs = () => { + const [getUpdates, { loading, data }] = useLazyQuery(GET_UPDATES); + const [logs, setLogs] = useState(); + + useEffect(() => { + const fetchAllLogs = async (): Promise => { + let allLogs = []; + let skip = 0; + const first = 1000; // Adjust based on the rate limits or performance considerations + + while (true) { + const response = await getUpdates({ + variables: { first, skip }, + // fetchPolicy: 'network-only' // Ensures data is fetched from the network not the cache + }); + console.log({ response }); + + const logs = response.data.updateds; + allLogs = allLogs.concat(logs); + + if (logs.length < first) { + break; // Break the loop if the number of logs fetched is less than 'first', indicating the end of data + } + + skip += first; // Increment skip by 'first' for the next page + } + + console.log({ allLogs }); + setLogs(allLogs); + } + + fetchAllLogs(); + }, []); +} \ No newline at end of file From 6bd2ce1f80e244cb58c6fb0115cd7b3bec702630 Mon Sep 17 00:00:00 2001 From: verkhohliad Date: Tue, 30 Jul 2024 12:40:46 +0100 Subject: [PATCH 05/22] change validator registry query to querying subgraph --- src/pages/MainPage/TransferForm.tsx | 2 - src/shared/ShutterTimer/ShutterTimer.tsx | 28 +++--- .../useGetShutterValidatorIndexes.ts | 23 ++--- .../useGetValidatorRegistryLogs.ts | 95 +++++++++---------- .../useQueryValidatorRegistryLogs.ts | 42 -------- 5 files changed, 72 insertions(+), 118 deletions(-) delete mode 100644 src/shared/ShutterTimer/useQueryValidatorRegistryLogs.ts diff --git a/src/pages/MainPage/TransferForm.tsx b/src/pages/MainPage/TransferForm.tsx index 8199254..f936a43 100644 --- a/src/pages/MainPage/TransferForm.tsx +++ b/src/pages/MainPage/TransferForm.tsx @@ -66,8 +66,6 @@ export const TransferForm = ({ submit, status, isSubmitDisabled }: TransferFormP value: token?.address === nativeXDaiToken.address ? parseEther(amount.toString()) : 0 as unknown as bigint, }); - console.log(transactionData.data); - const onSubmit = useCallback(() => { submit(transactionData, 0); }, [submit, transactionData]); diff --git a/src/shared/ShutterTimer/ShutterTimer.tsx b/src/shared/ShutterTimer/ShutterTimer.tsx index 9f7f91d..1f1d787 100644 --- a/src/shared/ShutterTimer/ShutterTimer.tsx +++ b/src/shared/ShutterTimer/ShutterTimer.tsx @@ -1,6 +1,6 @@ import { useEffect, useMemo, useState } from 'react'; import { useChainId } from 'wagmi'; -import { CircularProgress, Tooltip } from '@nextui-org/react'; +import { CircularProgress, Tooltip, Spinner } from '@nextui-org/react'; import { CHAINS_MAP } from '@/constants/chains'; @@ -26,7 +26,7 @@ export const ShutterTimer = () => { const [currentEpoch, setCurrentEpoch] = useState(getEpoch(chain.genesisTime)); const [timeDifference, setTimeDifference] = useState(0); - const shutteredValidatorIndexes = useGetShutterValidatorIndexes(chainId); + const { validatorIndexes: shutteredValidatorIndexes, isLoading } = useGetShutterValidatorIndexes(chainId); const { data: dutiesProposer } = useFetchDutiesProposer(chain.gbcUrl, currentEpoch); @@ -65,16 +65,20 @@ export const ShutterTimer = () => { return (
- - - + {isLoading ? ( + + ) : ( + + + + )}
) }; diff --git a/src/shared/ShutterTimer/useGetShutterValidatorIndexes.ts b/src/shared/ShutterTimer/useGetShutterValidatorIndexes.ts index e1fa719..6171612 100644 --- a/src/shared/ShutterTimer/useGetShutterValidatorIndexes.ts +++ b/src/shared/ShutterTimer/useGetShutterValidatorIndexes.ts @@ -1,10 +1,7 @@ import { BigNumber, utils } from 'ethers'; import { useMemo } from 'react'; -import { useLazyQuery, useQuery } from '@apollo/client'; import { useGetValidatorRegistryLogs } from './useGetValidatorRegistryLogs'; -import { GET_UPDATES } from './ValidatorRegistryQL'; -import { useQueryValidatorRegistryLogs } from './useQueryValidatorRegistryLogs'; function extractValidatorIndex(messageHex: string) { // Convert hex to bytes @@ -28,19 +25,12 @@ function extractSubscriptionStatus(messageHex: string) { } export const useGetShutterValidatorIndexes = (chainId: number) => { - const { data: logs } = useGetValidatorRegistryLogs(chainId); + const { data: logs, isLoading } = useGetValidatorRegistryLogs(chainId); -// todo wip - useQueryValidatorRegistryLogs(); - // const [getUpdates, { loading, data: updates }] = useLazyQuery(GET_UPDATES); - // const { data: updates, loading, error } = useQuery(GET_UPDATES); - - // console.log('graph', { logs, updates, loading, error }); - - return useMemo(() => { + const validatorIndexes = useMemo(() => { return logs?.reduce((acc, log) => { - const validatorIndex = extractValidatorIndex(log.args.message); - const subscriptionStatus = extractSubscriptionStatus(log.args.message); + const validatorIndex = extractValidatorIndex(log.message); + const subscriptionStatus = extractSubscriptionStatus(log.message); if (subscriptionStatus) { acc.add(validatorIndex); @@ -51,4 +41,9 @@ export const useGetShutterValidatorIndexes = (chainId: number) => { return acc; }, new Set()); }, [logs]); + + return { + validatorIndexes, + isLoading, + } }; diff --git a/src/shared/ShutterTimer/useGetValidatorRegistryLogs.ts b/src/shared/ShutterTimer/useGetValidatorRegistryLogs.ts index 30a4736..eddaf97 100644 --- a/src/shared/ShutterTimer/useGetValidatorRegistryLogs.ts +++ b/src/shared/ShutterTimer/useGetValidatorRegistryLogs.ts @@ -1,53 +1,52 @@ import { useQuery } from '@tanstack/react-query'; -import { providers, Contract } from 'ethers'; +import { useLazyQuery } from '@apollo/client'; -import { CHAINS_MAP } from '@/constants/chains'; -import validatorRegistryABI from '@/abis/validatorRegistryABI'; + +import { GET_UPDATES } from './ValidatorRegistryQL'; + +export interface ValidatorRegistryLog { + message: string, + signature: string, +} + +const SUB_GRAPH_MAX_QUERY_LOGS = 1000; // query const LOGS_QUERY_KEY = 'logs'; -export const useGetValidatorRegistryLogs = (chainId: number) => useQuery({ - queryKey: [LOGS_QUERY_KEY, chainId], - queryFn: async () => { - try { - const chain = CHAINS_MAP[chainId]; - const rpc = chain.rpcUrls.default.http[0]; - const provider = new providers.JsonRpcProvider(rpc); - - const localStorageLogsKey = [LOGS_QUERY_KEY, chainId].join('_'); - const cachedString = localStorage.getItem(localStorageLogsKey); - const cachedLogs = cachedString ? JSON.parse(cachedString) : { blockNumber: null, logs: [] }; - - const responseLogs = await provider.getLogs({ - address: chain.contracts.validatorRegistry.address, - topics: [], - fromBlock: Number(cachedLogs.blockNumber) ?? 'earliest', - toBlock: 'latest' - }); - const allLogs = [...cachedLogs.logs, ...responseLogs]; - const blockNumber = responseLogs.length > 0 ? responseLogs[responseLogs.length - 1].blockNumber + 1 : cachedLogs.blockNumber; - - localStorage.setItem(localStorageLogsKey, JSON.stringify({ - blockNumber: blockNumber, - logs: allLogs, - })); - - const contract = new Contract( - chain.contracts.validatorRegistry.address, - validatorRegistryABI, - provider - ); - - const parsedlogs = allLogs.map((log: any) => contract.interface.parseLog(log)); - - console.log('[service][logs] queried logs', { parsedlogs }); - - return parsedlogs; - } catch (error) { - console.error('[service][logs] Failed to query logs', error); - } - - return; - }, - enabled: Boolean(chainId), -}); +export const useGetValidatorRegistryLogs = (chainId: number) => { + const [getUpdates] = useLazyQuery(GET_UPDATES); + + return useQuery({ + queryKey: [LOGS_QUERY_KEY, chainId], + queryFn: async () => { + try { + let allLogs: ValidatorRegistryLog[] = []; + let skip = 0; + + // eslint-disable-next-line no-constant-condition + while (true) { + const response = await getUpdates({ variables: { first: SUB_GRAPH_MAX_QUERY_LOGS, skip }}); + + const logs = response.data?.updateds; + + allLogs = [...allLogs, ...logs]; + + if (logs.length < SUB_GRAPH_MAX_QUERY_LOGS) { + break; // Break the loop if the number of logs fetched is less than 'first', indicating the end of data + } + + skip += SUB_GRAPH_MAX_QUERY_LOGS; // Increment skip by 'first' for the next page + } + + console.log('[service][logs] queried logs', { allLogs }); + + return allLogs; + } catch (error) { + console.error('[service][logs] Failed to query logs', error); + } + + return; + }, + enabled: Boolean(chainId), + }); +}; diff --git a/src/shared/ShutterTimer/useQueryValidatorRegistryLogs.ts b/src/shared/ShutterTimer/useQueryValidatorRegistryLogs.ts deleted file mode 100644 index 9c6e1a1..0000000 --- a/src/shared/ShutterTimer/useQueryValidatorRegistryLogs.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { useState, useEffect } from 'react'; -import { useLazyQuery, useQuery } from '@apollo/client'; -import { GET_UPDATES } from './ValidatorRegistryQL'; - -// finish logic for dynamic fetching -// use cache persistent -// deploy another graph for mainnet -// todo wip -export const useQueryValidatorRegistryLogs = () => { - const [getUpdates, { loading, data }] = useLazyQuery(GET_UPDATES); - const [logs, setLogs] = useState(); - - useEffect(() => { - const fetchAllLogs = async (): Promise => { - let allLogs = []; - let skip = 0; - const first = 1000; // Adjust based on the rate limits or performance considerations - - while (true) { - const response = await getUpdates({ - variables: { first, skip }, - // fetchPolicy: 'network-only' // Ensures data is fetched from the network not the cache - }); - console.log({ response }); - - const logs = response.data.updateds; - allLogs = allLogs.concat(logs); - - if (logs.length < first) { - break; // Break the loop if the number of logs fetched is less than 'first', indicating the end of data - } - - skip += first; // Increment skip by 'first' for the next page - } - - console.log({ allLogs }); - setLogs(allLogs); - } - - fetchAllLogs(); - }, []); -} \ No newline at end of file From cd4beafb5b2017f747da0ce1f2f6f4749aabdd9e Mon Sep 17 00:00:00 2001 From: verkhohliad Date: Wed, 31 Jul 2024 14:50:24 +0100 Subject: [PATCH 06/22] integrate zustand for store management, create persisted store for validator indexes, handle fetching only new logs from subgraph and updating store --- src/shared/ShutterTimer/ShutterTimer.tsx | 2 +- .../ShutterTimer/ValidatorRegistryQL.ts | 4 +- .../useGetShutterValidatorIndexes.ts | 26 ++++++-- .../useGetValidatorRegistryLogs.ts | 8 +-- src/stores/createSelectors.ts | 17 +++++ src/stores/useValidatorIndexesStore.ts | 64 +++++++++++++++++++ 6 files changed, 109 insertions(+), 12 deletions(-) create mode 100644 src/stores/createSelectors.ts create mode 100644 src/stores/useValidatorIndexesStore.ts diff --git a/src/shared/ShutterTimer/ShutterTimer.tsx b/src/shared/ShutterTimer/ShutterTimer.tsx index 1f1d787..c1aea50 100644 --- a/src/shared/ShutterTimer/ShutterTimer.tsx +++ b/src/shared/ShutterTimer/ShutterTimer.tsx @@ -34,7 +34,7 @@ export const ShutterTimer = () => { if (!shutteredValidatorIndexes || !dutiesProposer) return; return dutiesProposer?.filter((duty: any) => { - return shutteredValidatorIndexes.has(Number(duty.validator_index)); + return shutteredValidatorIndexes.includes(Number(duty.validator_index)); }); }, [dutiesProposer, shutteredValidatorIndexes]); diff --git a/src/shared/ShutterTimer/ValidatorRegistryQL.ts b/src/shared/ShutterTimer/ValidatorRegistryQL.ts index 1f1a631..7458a1a 100644 --- a/src/shared/ShutterTimer/ValidatorRegistryQL.ts +++ b/src/shared/ShutterTimer/ValidatorRegistryQL.ts @@ -1,8 +1,8 @@ import { gql } from '@apollo/client'; export const GET_UPDATES = gql` - query GetUpdates($first: Int!, $skip: Int!) { - updateds(first: $first, skip: $skip, orderBy: blockNumber, orderDirection: asc) { + query GetUpdates($first: Int!, $skip: Int!, $lastBlockNumber: Int!) { + updateds(first: $first, skip: $skip, orderBy: blockNumber, orderDirection: asc, where: { blockNumber_gt: $lastBlockNumber }) { id message signature diff --git a/src/shared/ShutterTimer/useGetShutterValidatorIndexes.ts b/src/shared/ShutterTimer/useGetShutterValidatorIndexes.ts index 6171612..53baaa5 100644 --- a/src/shared/ShutterTimer/useGetShutterValidatorIndexes.ts +++ b/src/shared/ShutterTimer/useGetShutterValidatorIndexes.ts @@ -1,6 +1,7 @@ import { BigNumber, utils } from 'ethers'; -import { useMemo } from 'react'; +import { useEffect } from 'react'; +import { useValidatorIndexesStore } from '@/stores/useValidatorIndexesStore'; import { useGetValidatorRegistryLogs } from './useGetValidatorRegistryLogs'; function extractValidatorIndex(messageHex: string) { @@ -25,21 +26,36 @@ function extractSubscriptionStatus(messageHex: string) { } export const useGetShutterValidatorIndexes = (chainId: number) => { - const { data: logs, isLoading } = useGetValidatorRegistryLogs(chainId); + const { + validatorIndexes, lastBlockNumber, _hasHydrated, + setValidatorIndexes, setLastBlockNumber, + } = useValidatorIndexesStore(state => state); - const validatorIndexes = useMemo(() => { - return logs?.reduce((acc, log) => { + const { data: logs, isLoading } = useGetValidatorRegistryLogs(chainId, lastBlockNumber, _hasHydrated); + + useEffect(() => { + let currentIndexes = validatorIndexes; + let newLastBlock = lastBlockNumber; + const indexes = logs?.reduce((acc, log) => { const validatorIndex = extractValidatorIndex(log.message); const subscriptionStatus = extractSubscriptionStatus(log.message); if (subscriptionStatus) { acc.add(validatorIndex); } else { + currentIndexes = currentIndexes.filter((index) => index !== validatorIndex); acc.delete(validatorIndex); } + newLastBlock = Number(log.blockNumber); + return acc; - }, new Set()); + }, new Set()); + + if (indexes && newLastBlock > lastBlockNumber) { + setValidatorIndexes([...currentIndexes, ...indexes]); + setLastBlockNumber(newLastBlock); + } }, [logs]); return { diff --git a/src/shared/ShutterTimer/useGetValidatorRegistryLogs.ts b/src/shared/ShutterTimer/useGetValidatorRegistryLogs.ts index eddaf97..cb2c913 100644 --- a/src/shared/ShutterTimer/useGetValidatorRegistryLogs.ts +++ b/src/shared/ShutterTimer/useGetValidatorRegistryLogs.ts @@ -1,19 +1,19 @@ import { useQuery } from '@tanstack/react-query'; import { useLazyQuery } from '@apollo/client'; - import { GET_UPDATES } from './ValidatorRegistryQL'; export interface ValidatorRegistryLog { message: string, signature: string, + blockNumber: string, } const SUB_GRAPH_MAX_QUERY_LOGS = 1000; // query const LOGS_QUERY_KEY = 'logs'; -export const useGetValidatorRegistryLogs = (chainId: number) => { +export const useGetValidatorRegistryLogs = (chainId: number, lastBlockNumber: number, enabled: boolean) => { const [getUpdates] = useLazyQuery(GET_UPDATES); return useQuery({ @@ -25,7 +25,7 @@ export const useGetValidatorRegistryLogs = (chainId: number) => { // eslint-disable-next-line no-constant-condition while (true) { - const response = await getUpdates({ variables: { first: SUB_GRAPH_MAX_QUERY_LOGS, skip }}); + const response = await getUpdates({ variables: { first: SUB_GRAPH_MAX_QUERY_LOGS, skip, lastBlockNumber }}); const logs = response.data?.updateds; @@ -47,6 +47,6 @@ export const useGetValidatorRegistryLogs = (chainId: number) => { return; }, - enabled: Boolean(chainId), + enabled: enabled && Boolean(chainId), }); }; diff --git a/src/stores/createSelectors.ts b/src/stores/createSelectors.ts new file mode 100644 index 0000000..68394ee --- /dev/null +++ b/src/stores/createSelectors.ts @@ -0,0 +1,17 @@ +import { StoreApi, UseBoundStore } from 'zustand'; + +type WithSelectors = S extends { getState: () => infer T } + ? S & { use: { [K in keyof T]: () => T[K] } } + : never; + +export const createSelectors = >>( + _store: S, +) => { + let store = _store as WithSelectors + store.use = {} + for (let k of Object.keys(store.getState())) { + ;(store.use as any)[k] = () => store((s) => s[k as keyof typeof s]) + } + + return store +}; diff --git a/src/stores/useValidatorIndexesStore.ts b/src/stores/useValidatorIndexesStore.ts new file mode 100644 index 0000000..663b65a --- /dev/null +++ b/src/stores/useValidatorIndexesStore.ts @@ -0,0 +1,64 @@ +import { create } from 'zustand'; +import { persist, createJSONStorage } from 'zustand/middleware'; + +import { createSelectors } from './createSelectors'; + +type State = { + validatorIndexes: number[], + lastBlockNumber: number, + + _hasHydrated: boolean, +}; + +type Action = { + setValidatorIndexes: (validatorIndexes: number[]) => void, + addValidatorIndex: (validatorIndex: number) => void, + removeValidatorIndex: (validatorIndex: number) => void, + setLastBlockNumber: (lastBlockNumber: number) => void, + + setHasHydrated: (state: boolean) => void, +}; + +const useValidatorIndexesStoreBase = create()( + persist( + (set) => ({ + validatorIndexes: [], + lastBlockNumber: 0, + + _hasHydrated: false, + setHasHydrated: (state) => set({ _hasHydrated: state }), + + setValidatorIndexes: (validatorIndexes) => set({ validatorIndexes }), + addValidatorIndex: (validatorIndex) => set((state) => { + state.validatorIndexes.push(validatorIndex); + + return { validatorIndexes: state.validatorIndexes }; + }), + removeValidatorIndex: (validatorIndex) => set((state) => { + return { validatorIndexes: state.validatorIndexes.filter((index) => index !== validatorIndex) }; + }), + setLastBlockNumber: (lastBlockNumber) => set({ lastBlockNumber }), + }), + { + name: 'validator-indexes-storage', // name of the item in the storage (must be unique) + storage: createJSONStorage(() => window.localStorage), // (optional) by default, 'localStorage' is used + + onRehydrateStorage: () => { + console.log('hydration starts') + + return (state, error) => { + console.log({ state }); + if (error) { + console.log('an error happened during hydration', error) + } else { + state?.setHasHydrated(true); + + console.log('hydration finished') + } + } + }, + }, + ), +); + +export const useValidatorIndexesStore = createSelectors(useValidatorIndexesStoreBase); From 10ade91b7ef4e7400aa01d6bfa68c63585130dc2 Mon Sep 17 00:00:00 2001 From: verkhohliad Date: Wed, 31 Jul 2024 15:08:26 +0100 Subject: [PATCH 07/22] Initialize subgraph --- .../m-shutter-validator-registry/.gitignore | 34 ++++++++++++ .../abis/ValidatorRegistry.json | 55 +++++++++++++++++++ .../docker-compose.yml | 50 +++++++++++++++++ .../networks.json | 8 +++ .../m-shutter-validator-registry/package.json | 18 ++++++ .../schema.graphql | 8 +++ .../src/validator-registry.ts | 16 ++++++ .../subgraph.yaml | 26 +++++++++ .../tests/validator-registry-utils.ts | 18 ++++++ .../tests/validator-registry.test.ts | 53 ++++++++++++++++++ .../tsconfig.json | 4 ++ 11 files changed, 290 insertions(+) create mode 100644 thegraph/m-shutter-validator-registry/.gitignore create mode 100644 thegraph/m-shutter-validator-registry/abis/ValidatorRegistry.json create mode 100644 thegraph/m-shutter-validator-registry/docker-compose.yml create mode 100644 thegraph/m-shutter-validator-registry/networks.json create mode 100644 thegraph/m-shutter-validator-registry/package.json create mode 100644 thegraph/m-shutter-validator-registry/schema.graphql create mode 100644 thegraph/m-shutter-validator-registry/src/validator-registry.ts create mode 100644 thegraph/m-shutter-validator-registry/subgraph.yaml create mode 100644 thegraph/m-shutter-validator-registry/tests/validator-registry-utils.ts create mode 100644 thegraph/m-shutter-validator-registry/tests/validator-registry.test.ts create mode 100644 thegraph/m-shutter-validator-registry/tsconfig.json diff --git a/thegraph/m-shutter-validator-registry/.gitignore b/thegraph/m-shutter-validator-registry/.gitignore new file mode 100644 index 0000000..b542c60 --- /dev/null +++ b/thegraph/m-shutter-validator-registry/.gitignore @@ -0,0 +1,34 @@ +# Graph CLI generated artifacts +build/ +generated/ + +# Dependency directories +node_modules/ +jspm_packages/ + +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# dotenv environment variables file +.env + +# Testing +coverage +coverage.json + +# Typechain +typechain +typechain-types + +# Hardhat files +cache diff --git a/thegraph/m-shutter-validator-registry/abis/ValidatorRegistry.json b/thegraph/m-shutter-validator-registry/abis/ValidatorRegistry.json new file mode 100644 index 0000000..e85eb75 --- /dev/null +++ b/thegraph/m-shutter-validator-registry/abis/ValidatorRegistry.json @@ -0,0 +1,55 @@ +[ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes", + "name": "message", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "Updated", + "type": "event" + }, + { + "inputs": [], + "name": "getNumUpdates", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "i", "type": "uint256" }], + "name": "getUpdate", + "outputs": [ + { + "components": [ + { "internalType": "bytes", "name": "message", "type": "bytes" }, + { "internalType": "bytes", "name": "signature", "type": "bytes" } + ], + "internalType": "struct IValidatorRegistry.Update", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "bytes", "name": "message", "type": "bytes" }, + { "internalType": "bytes", "name": "signature", "type": "bytes" } + ], + "name": "update", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] diff --git a/thegraph/m-shutter-validator-registry/docker-compose.yml b/thegraph/m-shutter-validator-registry/docker-compose.yml new file mode 100644 index 0000000..a008fc9 --- /dev/null +++ b/thegraph/m-shutter-validator-registry/docker-compose.yml @@ -0,0 +1,50 @@ +version: "3" +services: + graph-node: + image: graphprotocol/graph-node + ports: + - "8000:8000" + - "8001:8001" + - "8020:8020" + - "8030:8030" + - "8040:8040" + depends_on: + - ipfs + - postgres + extra_hosts: + - host.docker.internal:host-gateway + environment: + postgres_host: postgres + postgres_user: graph-node + postgres_pass: let-me-in + postgres_db: graph-node + ipfs: "ipfs:5001" + ethereum: "mainnet:http://host.docker.internal:8545" + GRAPH_LOG: info + ipfs: + image: ipfs/kubo:v0.17.0 + ports: + - "5001:5001" + volumes: + - ./data/ipfs:/data/ipfs + postgres: + image: postgres:14 + ports: + - "5432:5432" + command: + [ + "postgres", + "-cshared_preload_libraries=pg_stat_statements", + "-cmax_connections=200", + ] + environment: + POSTGRES_USER: graph-node + POSTGRES_PASSWORD: let-me-in + POSTGRES_DB: graph-node + # FIXME: remove this env. var. which we shouldn't need. Introduced by + # , maybe as a + # workaround for https://github.com/docker/for-mac/issues/6270? + PGDATA: "/var/lib/postgresql/data" + POSTGRES_INITDB_ARGS: "-E UTF8 --locale=C" + volumes: + - ./data/postgres:/var/lib/postgresql/data diff --git a/thegraph/m-shutter-validator-registry/networks.json b/thegraph/m-shutter-validator-registry/networks.json new file mode 100644 index 0000000..950b126 --- /dev/null +++ b/thegraph/m-shutter-validator-registry/networks.json @@ -0,0 +1,8 @@ +{ + "gnosis": { + "ValidatorRegistry": { + "address": "0xefCC23E71f6bA9B22C4D28F7588141d44496A6D6", + "startBlock": 0 + } + } +} \ No newline at end of file diff --git a/thegraph/m-shutter-validator-registry/package.json b/thegraph/m-shutter-validator-registry/package.json new file mode 100644 index 0000000..99d8ebe --- /dev/null +++ b/thegraph/m-shutter-validator-registry/package.json @@ -0,0 +1,18 @@ +{ + "name": "m-shutter-validator-registry", + "license": "UNLICENSED", + "scripts": { + "codegen": "graph codegen", + "build": "graph build", + "deploy": "graph deploy --node https://api.studio.thegraph.com/deploy/ m-shutter-validator-registry", + "create-local": "graph create --node http://localhost:8020/ m-shutter-validator-registry", + "remove-local": "graph remove --node http://localhost:8020/ m-shutter-validator-registry", + "deploy-local": "graph deploy --node http://localhost:8020/ --ipfs http://localhost:5001 m-shutter-validator-registry", + "test": "graph test" + }, + "dependencies": { + "@graphprotocol/graph-cli": "0.79.0", + "@graphprotocol/graph-ts": "0.32.0" + }, + "devDependencies": { "matchstick-as": "0.5.0" } +} diff --git a/thegraph/m-shutter-validator-registry/schema.graphql b/thegraph/m-shutter-validator-registry/schema.graphql new file mode 100644 index 0000000..9555dd0 --- /dev/null +++ b/thegraph/m-shutter-validator-registry/schema.graphql @@ -0,0 +1,8 @@ +type Updated @entity(immutable: true) { + id: Bytes! + message: Bytes! # bytes + signature: Bytes! # bytes + blockNumber: BigInt! + blockTimestamp: BigInt! + transactionHash: Bytes! +} diff --git a/thegraph/m-shutter-validator-registry/src/validator-registry.ts b/thegraph/m-shutter-validator-registry/src/validator-registry.ts new file mode 100644 index 0000000..e537fe0 --- /dev/null +++ b/thegraph/m-shutter-validator-registry/src/validator-registry.ts @@ -0,0 +1,16 @@ +import { Updated as UpdatedEvent } from "../generated/ValidatorRegistry/ValidatorRegistry" +import { Updated } from "../generated/schema" + +export function handleUpdated(event: UpdatedEvent): void { + let entity = new Updated( + event.transaction.hash.concatI32(event.logIndex.toI32()) + ) + entity.message = event.params.message + entity.signature = event.params.signature + + entity.blockNumber = event.block.number + entity.blockTimestamp = event.block.timestamp + entity.transactionHash = event.transaction.hash + + entity.save() +} diff --git a/thegraph/m-shutter-validator-registry/subgraph.yaml b/thegraph/m-shutter-validator-registry/subgraph.yaml new file mode 100644 index 0000000..542bce1 --- /dev/null +++ b/thegraph/m-shutter-validator-registry/subgraph.yaml @@ -0,0 +1,26 @@ +specVersion: 1.0.0 +indexerHints: + prune: auto +schema: + file: ./schema.graphql +dataSources: + - kind: ethereum + name: ValidatorRegistry + network: gnosis + source: + address: "0xefCC23E71f6bA9B22C4D28F7588141d44496A6D6" + abi: ValidatorRegistry + startBlock: 0 + mapping: + kind: ethereum/events + apiVersion: 0.0.7 + language: wasm/assemblyscript + entities: + - Updated + abis: + - name: ValidatorRegistry + file: ./abis/ValidatorRegistry.json + eventHandlers: + - event: Updated(bytes,bytes) + handler: handleUpdated + file: ./src/validator-registry.ts diff --git a/thegraph/m-shutter-validator-registry/tests/validator-registry-utils.ts b/thegraph/m-shutter-validator-registry/tests/validator-registry-utils.ts new file mode 100644 index 0000000..e6714b2 --- /dev/null +++ b/thegraph/m-shutter-validator-registry/tests/validator-registry-utils.ts @@ -0,0 +1,18 @@ +import { newMockEvent } from "matchstick-as" +import { ethereum, Bytes } from "@graphprotocol/graph-ts" +import { Updated } from "../generated/ValidatorRegistry/ValidatorRegistry" + +export function createUpdatedEvent(message: Bytes, signature: Bytes): Updated { + let updatedEvent = changetype(newMockEvent()) + + updatedEvent.parameters = new Array() + + updatedEvent.parameters.push( + new ethereum.EventParam("message", ethereum.Value.fromBytes(message)) + ) + updatedEvent.parameters.push( + new ethereum.EventParam("signature", ethereum.Value.fromBytes(signature)) + ) + + return updatedEvent +} diff --git a/thegraph/m-shutter-validator-registry/tests/validator-registry.test.ts b/thegraph/m-shutter-validator-registry/tests/validator-registry.test.ts new file mode 100644 index 0000000..b3b0565 --- /dev/null +++ b/thegraph/m-shutter-validator-registry/tests/validator-registry.test.ts @@ -0,0 +1,53 @@ +import { + assert, + describe, + test, + clearStore, + beforeAll, + afterAll +} from "matchstick-as/assembly/index" +import { Bytes } from "@graphprotocol/graph-ts" +import { Updated } from "../generated/schema" +import { Updated as UpdatedEvent } from "../generated/ValidatorRegistry/ValidatorRegistry" +import { handleUpdated } from "../src/validator-registry" +import { createUpdatedEvent } from "./validator-registry-utils" + +// Tests structure (matchstick-as >=0.5.0) +// https://thegraph.com/docs/en/developer/matchstick/#tests-structure-0-5-0 + +describe("Describe entity assertions", () => { + beforeAll(() => { + let message = Bytes.fromI32(1234567890) + let signature = Bytes.fromI32(1234567890) + let newUpdatedEvent = createUpdatedEvent(message, signature) + handleUpdated(newUpdatedEvent) + }) + + afterAll(() => { + clearStore() + }) + + // For more test scenarios, see: + // https://thegraph.com/docs/en/developer/matchstick/#write-a-unit-test + + test("Updated created and stored", () => { + assert.entityCount("Updated", 1) + + // 0xa16081f360e3847006db660bae1c6d1b2e17ec2a is the default address used in newMockEvent() function + assert.fieldEquals( + "Updated", + "0xa16081f360e3847006db660bae1c6d1b2e17ec2a-1", + "message", + "1234567890" + ) + assert.fieldEquals( + "Updated", + "0xa16081f360e3847006db660bae1c6d1b2e17ec2a-1", + "signature", + "1234567890" + ) + + // More assert options: + // https://thegraph.com/docs/en/developer/matchstick/#asserts + }) +}) diff --git a/thegraph/m-shutter-validator-registry/tsconfig.json b/thegraph/m-shutter-validator-registry/tsconfig.json new file mode 100644 index 0000000..4e86672 --- /dev/null +++ b/thegraph/m-shutter-validator-registry/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "@graphprotocol/graph-ts/types/tsconfig.base.json", + "include": ["src", "tests"] +} From 4189e01b6930dd5923f5f886edec19be9e920652 Mon Sep 17 00:00:00 2001 From: verkhohliad Date: Thu, 1 Aug 2024 09:59:18 +0100 Subject: [PATCH 08/22] deploy and integrate gnosis subgraph, make workaround thegraph limitation for pagination, adapt store for storing multiple chains validator indexes --- src/constants/chains.ts | 3 +- src/pages/MainPage/TransferForm.tsx | 2 +- src/providers/GraphQLProvider.tsx | 1 - .../ShutterTimer/ValidatorRegistryQL.ts | 4 +- .../useGetShutterValidatorIndexes.ts | 12 +- .../useGetValidatorRegistryLogs.ts | 14 +- src/stores/useValidatorIndexesStore.ts | 65 +- .../package-lock.json | 6026 +++++++++++++++++ .../subgraph.yaml | 2 +- 9 files changed, 6097 insertions(+), 32 deletions(-) create mode 100644 thegraph/m-shutter-validator-registry/package-lock.json diff --git a/src/constants/chains.ts b/src/constants/chains.ts index 66f37c0..033b637 100644 --- a/src/constants/chains.ts +++ b/src/constants/chains.ts @@ -89,7 +89,8 @@ export const CHAINS: EnhancedChain[] = [ img: "/gnosisGreen.svg", }, ], - theGraphUrl: ``, + // theGraphUrl: `https://api.studio.thegraph.com/query/83608/m-shutter-validator-registry/мv0.0.2`, + theGraphUrl: `https://gateway-arbitrum.network.thegraph.com/api/${config.theGraphApiKey}/subgraphs/id/GkoCJAFgEvt6UWQkG3W1JpR2tDtRmUkUXCcHjrrz2M4E`, }, { ...gnosisChiado, diff --git a/src/pages/MainPage/TransferForm.tsx b/src/pages/MainPage/TransferForm.tsx index f936a43..8a6c0f5 100644 --- a/src/pages/MainPage/TransferForm.tsx +++ b/src/pages/MainPage/TransferForm.tsx @@ -22,11 +22,11 @@ interface TransferFormProps { } export const TransferForm = ({ submit, status, isSubmitDisabled }: TransferFormProps) => { - const [chain, setChain] = useState(mappedChains[0]); const [token, setToken] = useState(defaultToken); const [amount, setAmount] = useState("0"); const [to, setTo] = useState(''); const chainId = useChainId(); + const [chain, setChain] = useState(mappedChains.find((c: { id: number; }) => c.id === chainId)); const { switchChain } = useSwitchChain(); const { balance } = useTokenBalance({ diff --git a/src/providers/GraphQLProvider.tsx b/src/providers/GraphQLProvider.tsx index 8d2a015..ad042f8 100644 --- a/src/providers/GraphQLProvider.tsx +++ b/src/providers/GraphQLProvider.tsx @@ -12,7 +12,6 @@ export const GraphQLProvider = ({ children }: { children: any }) => { const chain = CHAINS_MAP[chainId]; const link = new HttpLink({ - // uri: 'https://api.studio.thegraph.com/query/83608/shutter-validator-registry/v0.0.1', uri: chain.theGraphUrl, }); diff --git a/src/shared/ShutterTimer/ValidatorRegistryQL.ts b/src/shared/ShutterTimer/ValidatorRegistryQL.ts index 7458a1a..b60c92a 100644 --- a/src/shared/ShutterTimer/ValidatorRegistryQL.ts +++ b/src/shared/ShutterTimer/ValidatorRegistryQL.ts @@ -1,8 +1,8 @@ import { gql } from '@apollo/client'; export const GET_UPDATES = gql` - query GetUpdates($first: Int!, $skip: Int!, $lastBlockNumber: Int!) { - updateds(first: $first, skip: $skip, orderBy: blockNumber, orderDirection: asc, where: { blockNumber_gt: $lastBlockNumber }) { + query GetUpdates($first: Int!, $lastBlockNumber: Int!) { + updateds(first: $first, orderBy: blockNumber, orderDirection: asc, where: { blockNumber_gte: $lastBlockNumber }) { id message signature diff --git a/src/shared/ShutterTimer/useGetShutterValidatorIndexes.ts b/src/shared/ShutterTimer/useGetShutterValidatorIndexes.ts index 53baaa5..a168236 100644 --- a/src/shared/ShutterTimer/useGetShutterValidatorIndexes.ts +++ b/src/shared/ShutterTimer/useGetShutterValidatorIndexes.ts @@ -26,16 +26,15 @@ function extractSubscriptionStatus(messageHex: string) { } export const useGetShutterValidatorIndexes = (chainId: number) => { - const { - validatorIndexes, lastBlockNumber, _hasHydrated, - setValidatorIndexes, setLastBlockNumber, - } = useValidatorIndexesStore(state => state); + const { validatorIndexes, lastBlockNumber} = useValidatorIndexesStore(state => state[chainId]); + const { _hasHydrated, setValidatorIndexes, setLastBlockNumber } = useValidatorIndexesStore(); const { data: logs, isLoading } = useGetValidatorRegistryLogs(chainId, lastBlockNumber, _hasHydrated); useEffect(() => { let currentIndexes = validatorIndexes; let newLastBlock = lastBlockNumber; + const indexes = logs?.reduce((acc, log) => { const validatorIndex = extractValidatorIndex(log.message); const subscriptionStatus = extractSubscriptionStatus(log.message); @@ -53,9 +52,10 @@ export const useGetShutterValidatorIndexes = (chainId: number) => { }, new Set()); if (indexes && newLastBlock > lastBlockNumber) { - setValidatorIndexes([...currentIndexes, ...indexes]); - setLastBlockNumber(newLastBlock); + setValidatorIndexes([...currentIndexes, ...indexes], chainId); + setLastBlockNumber(newLastBlock, chainId); } + }, [logs]); return { diff --git a/src/shared/ShutterTimer/useGetValidatorRegistryLogs.ts b/src/shared/ShutterTimer/useGetValidatorRegistryLogs.ts index cb2c913..6332fc0 100644 --- a/src/shared/ShutterTimer/useGetValidatorRegistryLogs.ts +++ b/src/shared/ShutterTimer/useGetValidatorRegistryLogs.ts @@ -10,6 +10,7 @@ export interface ValidatorRegistryLog { } const SUB_GRAPH_MAX_QUERY_LOGS = 1000; +const SKIP_LIMIT = 5000; // query const LOGS_QUERY_KEY = 'logs'; @@ -25,11 +26,18 @@ export const useGetValidatorRegistryLogs = (chainId: number, lastBlockNumber: nu // eslint-disable-next-line no-constant-condition while (true) { - const response = await getUpdates({ variables: { first: SUB_GRAPH_MAX_QUERY_LOGS, skip, lastBlockNumber }}); + if (skip > SKIP_LIMIT) { + // console.error('[service][logs] Exceeded skip limit'); + // break; + } + + const blockNumber = allLogs.length ? allLogs[allLogs.length - 1].blockNumber : lastBlockNumber; + + const response = await getUpdates({ variables: { first: SUB_GRAPH_MAX_QUERY_LOGS, lastBlockNumber: Number(blockNumber) }}); const logs = response.data?.updateds; - allLogs = [...allLogs, ...logs]; + allLogs = [...allLogs, ...(logs ?? [])]; if (logs.length < SUB_GRAPH_MAX_QUERY_LOGS) { break; // Break the loop if the number of logs fetched is less than 'first', indicating the end of data @@ -38,7 +46,7 @@ export const useGetValidatorRegistryLogs = (chainId: number, lastBlockNumber: nu skip += SUB_GRAPH_MAX_QUERY_LOGS; // Increment skip by 'first' for the next page } - console.log('[service][logs] queried logs', { allLogs }); + console.log('[service][logs] queried logs', { allLogs, chainId }); return allLogs; } catch (error) { diff --git a/src/stores/useValidatorIndexesStore.ts b/src/stores/useValidatorIndexesStore.ts index 663b65a..8a46f06 100644 --- a/src/stores/useValidatorIndexesStore.ts +++ b/src/stores/useValidatorIndexesStore.ts @@ -1,20 +1,23 @@ import { create } from 'zustand'; import { persist, createJSONStorage } from 'zustand/middleware'; +import { CHAINS } from '@/constants/chains'; import { createSelectors } from './createSelectors'; type State = { - validatorIndexes: number[], - lastBlockNumber: number, + [key: number]: { + validatorIndexes: number[], + lastBlockNumber: number, + }, _hasHydrated: boolean, }; type Action = { - setValidatorIndexes: (validatorIndexes: number[]) => void, - addValidatorIndex: (validatorIndex: number) => void, - removeValidatorIndex: (validatorIndex: number) => void, - setLastBlockNumber: (lastBlockNumber: number) => void, + setValidatorIndexes: (validatorIndexes: number[], chainId: number) => void, + addValidatorIndex: (validatorIndex: number, chainId: number) => void, + removeValidatorIndex: (validatorIndex: number, chainId: number) => void, + setLastBlockNumber: (lastBlockNumber: number, chainId: number) => void, setHasHydrated: (state: boolean) => void, }; @@ -22,22 +25,50 @@ type Action = { const useValidatorIndexesStoreBase = create()( persist( (set) => ({ - validatorIndexes: [], - lastBlockNumber: 0, + [CHAINS[0].id]: { + validatorIndexes: [], + lastBlockNumber: 0, + }, + [CHAINS[1].id]: { + validatorIndexes: [], + lastBlockNumber: 0, + }, _hasHydrated: false, setHasHydrated: (state) => set({ _hasHydrated: state }), - setValidatorIndexes: (validatorIndexes) => set({ validatorIndexes }), - addValidatorIndex: (validatorIndex) => set((state) => { - state.validatorIndexes.push(validatorIndex); - - return { validatorIndexes: state.validatorIndexes }; + setValidatorIndexes: (validatorIndexes, chainId) => set((state) => { + return { + [chainId]: { + validatorIndexes: validatorIndexes, + lastBlockNumber: state[chainId].lastBlockNumber, + } + }; + }), + addValidatorIndex: (validatorIndex, chainId) => set((state) => { + return { + [chainId]: { + validatorIndexes: [...state[chainId].validatorIndexes, validatorIndex], + lastBlockNumber: state[chainId].lastBlockNumber, + } + } }), - removeValidatorIndex: (validatorIndex) => set((state) => { - return { validatorIndexes: state.validatorIndexes.filter((index) => index !== validatorIndex) }; + removeValidatorIndex: (validatorIndex, chainId) => set((state) => { + return { + [chainId]: { + validatorIndexes: state[chainId].validatorIndexes.filter((index) => index !== validatorIndex), + lastBlockNumber: state[chainId].lastBlockNumber, + } + }; + }), + setLastBlockNumber: (lastBlockNumber, chainId) => set((state) => { + return { + [chainId]: { + validatorIndexes: state[chainId].validatorIndexes, + lastBlockNumber: lastBlockNumber, + } + }; }), - setLastBlockNumber: (lastBlockNumber) => set({ lastBlockNumber }), }), { name: 'validator-indexes-storage', // name of the item in the storage (must be unique) @@ -47,7 +78,7 @@ const useValidatorIndexesStoreBase = create()( console.log('hydration starts') return (state, error) => { - console.log({ state }); + console.debug({ state }); if (error) { console.log('an error happened during hydration', error) } else { diff --git a/thegraph/m-shutter-validator-registry/package-lock.json b/thegraph/m-shutter-validator-registry/package-lock.json new file mode 100644 index 0000000..d1691f2 --- /dev/null +++ b/thegraph/m-shutter-validator-registry/package-lock.json @@ -0,0 +1,6026 @@ +{ + "name": "m-shutter-validator-registry", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "m-shutter-validator-registry", + "license": "UNLICENSED", + "dependencies": { + "@graphprotocol/graph-cli": "0.79.0", + "@graphprotocol/graph-ts": "0.32.0" + }, + "devDependencies": { + "matchstick-as": "0.5.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.24.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@ethersproject/abi": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.0.7.tgz", + "integrity": "sha512-Cqktk+hSIckwP/W8O47Eef60VwmoSC/L3lY0+dIBhQPCNn9E4V7rwmm2aFrNRRDJfFlGuZ1khkQUOc3oBX+niw==", + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.0.4", + "@ethersproject/bignumber": "^5.0.7", + "@ethersproject/bytes": "^5.0.4", + "@ethersproject/constants": "^5.0.4", + "@ethersproject/hash": "^5.0.4", + "@ethersproject/keccak256": "^5.0.3", + "@ethersproject/logger": "^5.0.5", + "@ethersproject/properties": "^5.0.3", + "@ethersproject/strings": "^5.0.4" + } + }, + "node_modules/@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "node_modules/@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@float-capital/float-subgraph-uncrashable": { + "version": "0.0.0-internal-testing.5", + "resolved": "https://registry.npmjs.org/@float-capital/float-subgraph-uncrashable/-/float-subgraph-uncrashable-0.0.0-internal-testing.5.tgz", + "integrity": "sha512-yZ0H5e3EpAYKokX/AbtplzlvSxEJY7ZfpvQyDzyODkks0hakAAlDG6fQu1SlDJMWorY7bbq1j7fCiFeTWci6TA==", + "license": "MIT", + "dependencies": { + "@rescript/std": "9.0.0", + "graphql": "^16.6.0", + "graphql-import-node": "^0.0.5", + "js-yaml": "^4.1.0" + }, + "bin": { + "uncrashable": "bin/uncrashable" + } + }, + "node_modules/@float-capital/float-subgraph-uncrashable/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/@float-capital/float-subgraph-uncrashable/node_modules/graphql": { + "version": "16.9.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.9.0.tgz", + "integrity": "sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==", + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" + } + }, + "node_modules/@float-capital/float-subgraph-uncrashable/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@graphprotocol/graph-cli": { + "version": "0.79.0", + "resolved": "https://registry.npmjs.org/@graphprotocol/graph-cli/-/graph-cli-0.79.0.tgz", + "integrity": "sha512-16s+qN0HbAjN4UfVMW2XyMPJc4PuAiBPx6dZLjgUAuU3ROAej7DExqJW+zTX36IG2H/pe7cilpkkykbwise1Kw==", + "license": "(Apache-2.0 OR MIT)", + "dependencies": { + "@float-capital/float-subgraph-uncrashable": "^0.0.0-alpha.4", + "@oclif/core": "2.8.6", + "@oclif/plugin-autocomplete": "^2.3.6", + "@oclif/plugin-not-found": "^2.4.0", + "@whatwg-node/fetch": "^0.8.4", + "assemblyscript": "0.19.23", + "binary-install-raw": "0.0.13", + "chalk": "3.0.0", + "chokidar": "3.5.3", + "debug": "4.3.4", + "docker-compose": "0.23.19", + "dockerode": "2.5.8", + "fs-extra": "9.1.0", + "glob": "9.3.5", + "gluegun": "5.1.6", + "graphql": "15.5.0", + "immutable": "4.2.1", + "ipfs-http-client": "55.0.0", + "jayson": "4.0.0", + "js-yaml": "3.14.1", + "open": "8.4.2", + "prettier": "3.0.3", + "semver": "7.4.0", + "sync-request": "6.1.0", + "tmp-promise": "3.0.3", + "web3-eth-abi": "1.7.0", + "which": "2.0.2", + "yaml": "1.10.2" + }, + "bin": { + "graph": "bin/run" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@graphprotocol/graph-ts": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/@graphprotocol/graph-ts/-/graph-ts-0.32.0.tgz", + "integrity": "sha512-YfKLT2w+ItXD/VPYQiAKtINQONVsAOkcqVFMHlhUy0fcEBVWuFBT53hJNI0/l5ujQa4TSxtzrKW/7EABAdgI8g==", + "dependencies": { + "assemblyscript": "0.19.10" + } + }, + "node_modules/@graphprotocol/graph-ts/node_modules/assemblyscript": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/assemblyscript/-/assemblyscript-0.19.10.tgz", + "integrity": "sha512-HavcUBXB3mBTRGJcpvaQjmnmaqKHBGREjSPNsIvnAk2f9dj78y4BkMaSSdvBQYWcDDzsHQjyUC8stICFkD1Odg==", + "license": "Apache-2.0", + "dependencies": { + "binaryen": "101.0.0-nightly.20210723", + "long": "^4.0.0" + }, + "bin": { + "asc": "bin/asc", + "asinit": "bin/asinit" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/assemblyscript" + } + }, + "node_modules/@graphprotocol/graph-ts/node_modules/binaryen": { + "version": "101.0.0-nightly.20210723", + "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-101.0.0-nightly.20210723.tgz", + "integrity": "sha512-eioJNqhHlkguVSbblHOtLqlhtC882SOEPKmNFZaDuz1hzQjolxZ+eu3/kaS10n3sGPONsIZsO7R9fR00UyhEUA==", + "license": "Apache-2.0", + "bin": { + "wasm-opt": "bin/wasm-opt" + } + }, + "node_modules/@graphprotocol/graph-ts/node_modules/long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", + "license": "Apache-2.0" + }, + "node_modules/@ipld/dag-cbor": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@ipld/dag-cbor/-/dag-cbor-7.0.3.tgz", + "integrity": "sha512-1VVh2huHsuohdXC1bGJNE8WR72slZ9XE2T3wbBBq31dm7ZBatmKLLxrB+XAqafxfRFjv08RZmj/W/ZqaM13AuA==", + "license": "(Apache-2.0 AND MIT)", + "dependencies": { + "cborg": "^1.6.0", + "multiformats": "^9.5.4" + } + }, + "node_modules/@ipld/dag-json": { + "version": "8.0.11", + "resolved": "https://registry.npmjs.org/@ipld/dag-json/-/dag-json-8.0.11.tgz", + "integrity": "sha512-Pea7JXeYHTWXRTIhBqBlhw7G53PJ7yta3G/sizGEZyzdeEwhZRr0od5IQ0r2ZxOt1Do+2czddjeEPp+YTxDwCA==", + "license": "(Apache-2.0 AND MIT)", + "dependencies": { + "cborg": "^1.5.4", + "multiformats": "^9.5.4" + } + }, + "node_modules/@ipld/dag-pb": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/@ipld/dag-pb/-/dag-pb-2.1.18.tgz", + "integrity": "sha512-ZBnf2fuX9y3KccADURG5vb9FaOeMjFkCrNysB0PtftME/4iCTjxfaLoNq/IAh5fTqUOMXvryN6Jyka4ZGuMLIg==", + "license": "(Apache-2.0 AND MIT)", + "dependencies": { + "multiformats": "^9.5.4" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@oclif/core": { + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/@oclif/core/-/core-2.8.6.tgz", + "integrity": "sha512-1QlPaHMhOORySCXkQyzjsIsy2GYTilOw3LkjeHkCgsPJQjAT4IclVytJusWktPbYNys9O+O4V23J44yomQvnBQ==", + "license": "MIT", + "dependencies": { + "@types/cli-progress": "^3.11.0", + "ansi-escapes": "^4.3.2", + "ansi-styles": "^4.3.0", + "cardinal": "^2.1.1", + "chalk": "^4.1.2", + "clean-stack": "^3.0.1", + "cli-progress": "^3.12.0", + "debug": "^4.3.4", + "ejs": "^3.1.8", + "fs-extra": "^9.1.0", + "get-package-type": "^0.1.0", + "globby": "^11.1.0", + "hyperlinker": "^1.0.0", + "indent-string": "^4.0.0", + "is-wsl": "^2.2.0", + "js-yaml": "^3.14.1", + "natural-orderby": "^2.0.3", + "object-treeify": "^1.1.33", + "password-prompt": "^1.1.2", + "semver": "^7.3.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "supports-color": "^8.1.1", + "supports-hyperlinks": "^2.2.0", + "ts-node": "^10.9.1", + "tslib": "^2.5.0", + "widest-line": "^3.1.0", + "wordwrap": "^1.0.0", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@oclif/core/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@oclif/core/node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@oclif/plugin-autocomplete": { + "version": "2.3.10", + "resolved": "https://registry.npmjs.org/@oclif/plugin-autocomplete/-/plugin-autocomplete-2.3.10.tgz", + "integrity": "sha512-Ow1AR8WtjzlyCtiWWPgzMyT8SbcDJFr47009riLioHa+MHX2BCDtVn2DVnN/E6b9JlPV5ptQpjefoRSNWBesmg==", + "license": "MIT", + "dependencies": { + "@oclif/core": "^2.15.0", + "chalk": "^4.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@oclif/plugin-autocomplete/node_modules/@oclif/core": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@oclif/core/-/core-2.16.0.tgz", + "integrity": "sha512-dL6atBH0zCZl1A1IXCKJgLPrM/wR7K+Wi401E/IvqsK8m2iCHW+0TEOGrans/cuN3oTW+uxIyJFHJ8Im0k4qBw==", + "license": "MIT", + "dependencies": { + "@types/cli-progress": "^3.11.0", + "ansi-escapes": "^4.3.2", + "ansi-styles": "^4.3.0", + "cardinal": "^2.1.1", + "chalk": "^4.1.2", + "clean-stack": "^3.0.1", + "cli-progress": "^3.12.0", + "debug": "^4.3.4", + "ejs": "^3.1.8", + "get-package-type": "^0.1.0", + "globby": "^11.1.0", + "hyperlinker": "^1.0.0", + "indent-string": "^4.0.0", + "is-wsl": "^2.2.0", + "js-yaml": "^3.14.1", + "natural-orderby": "^2.0.3", + "object-treeify": "^1.1.33", + "password-prompt": "^1.1.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "supports-color": "^8.1.1", + "supports-hyperlinks": "^2.2.0", + "ts-node": "^10.9.1", + "tslib": "^2.5.0", + "widest-line": "^3.1.0", + "wordwrap": "^1.0.0", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@oclif/plugin-autocomplete/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@oclif/plugin-autocomplete/node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@oclif/plugin-not-found": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@oclif/plugin-not-found/-/plugin-not-found-2.4.3.tgz", + "integrity": "sha512-nIyaR4y692frwh7wIHZ3fb+2L6XEecQwRDIb4zbEam0TvaVmBQWZoColQyWA84ljFBPZ8XWiQyTz+ixSwdRkqg==", + "license": "MIT", + "dependencies": { + "@oclif/core": "^2.15.0", + "chalk": "^4", + "fast-levenshtein": "^3.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@oclif/plugin-not-found/node_modules/@oclif/core": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@oclif/core/-/core-2.16.0.tgz", + "integrity": "sha512-dL6atBH0zCZl1A1IXCKJgLPrM/wR7K+Wi401E/IvqsK8m2iCHW+0TEOGrans/cuN3oTW+uxIyJFHJ8Im0k4qBw==", + "license": "MIT", + "dependencies": { + "@types/cli-progress": "^3.11.0", + "ansi-escapes": "^4.3.2", + "ansi-styles": "^4.3.0", + "cardinal": "^2.1.1", + "chalk": "^4.1.2", + "clean-stack": "^3.0.1", + "cli-progress": "^3.12.0", + "debug": "^4.3.4", + "ejs": "^3.1.8", + "get-package-type": "^0.1.0", + "globby": "^11.1.0", + "hyperlinker": "^1.0.0", + "indent-string": "^4.0.0", + "is-wsl": "^2.2.0", + "js-yaml": "^3.14.1", + "natural-orderby": "^2.0.3", + "object-treeify": "^1.1.33", + "password-prompt": "^1.1.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "supports-color": "^8.1.1", + "supports-hyperlinks": "^2.2.0", + "ts-node": "^10.9.1", + "tslib": "^2.5.0", + "widest-line": "^3.1.0", + "wordwrap": "^1.0.0", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@oclif/plugin-not-found/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@oclif/plugin-not-found/node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@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==", + "license": "MIT", + "dependencies": { + "asn1js": "^3.0.5", + "pvtsutils": "^1.3.5", + "tslib": "^2.6.2" + } + }, + "node_modules/@peculiar/json-schema": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/@peculiar/json-schema/-/json-schema-1.1.12.tgz", + "integrity": "sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@peculiar/webcrypto": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@peculiar/webcrypto/-/webcrypto-1.5.0.tgz", + "integrity": "sha512-BRs5XUAwiyCDQMsVA9IDvDa7UBR9gAvPHgugOeGng3YN6vJ9JYonyDc0lNczErgtCWtucjR5N7VtaonboD/ezg==", + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.3.8", + "@peculiar/json-schema": "^1.1.12", + "pvtsutils": "^1.3.5", + "tslib": "^2.6.2", + "webcrypto-core": "^1.8.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "license": "BSD-3-Clause", + "dependencies": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", + "license": "BSD-3-Clause" + }, + "node_modules/@rescript/std": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@rescript/std/-/std-9.0.0.tgz", + "integrity": "sha512-zGzFsgtZ44mgL4Xef2gOy1hrRVdrs9mcxCOOKZrIPsmbZW14yTkaF591GXxpQvjXiHtgZ/iA9qLyWH6oSReIxQ==", + "license": "SEE LICENSE IN LICENSE" + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", + "license": "MIT" + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "license": "MIT" + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "license": "MIT" + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "license": "MIT" + }, + "node_modules/@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==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/cli-progress": { + "version": "3.11.6", + "resolved": "https://registry.npmjs.org/@types/cli-progress/-/cli-progress-3.11.6.tgz", + "integrity": "sha512-cE3+jb9WRlu+uOSAugewNpITJDt1VF8dHOopPO4IABFc3SXYL5WE/+PTz/FCdZRRfIujiWW3n3aMbv1eIGVRWA==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@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==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/form-data": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-0.0.33.tgz", + "integrity": "sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/long": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", + "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==", + "license": "MIT" + }, + "node_modules/@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.0.0.tgz", + "integrity": "sha512-VT7KSYudcPOzP5Q0wfbowyNLaVR8QWUdw+088uFWwfvpY6uCWaXpqV6ieLAu9WBcnTa7H4Z5RLK8I5t2FuOcqw==", + "license": "MIT", + "dependencies": { + "undici-types": "~6.11.1" + } + }, + "node_modules/@types/parse-json": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", + "license": "MIT" + }, + "node_modules/@types/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/qs": { + "version": "6.9.15", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", + "license": "MIT" + }, + "node_modules/@types/secp256k1": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.6.tgz", + "integrity": "sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/ws": { + "version": "7.4.7", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", + "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@whatwg-node/events": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@whatwg-node/events/-/events-0.0.3.tgz", + "integrity": "sha512-IqnKIDWfXBJkvy/k6tzskWTc2NK3LcqHlb+KHGCrjOCH4jfQckRX0NAiIcC/vIqQkzLYw2r2CTSwAxcrtcD6lA==", + "license": "MIT" + }, + "node_modules/@whatwg-node/fetch": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.8.8.tgz", + "integrity": "sha512-CdcjGC2vdKhc13KKxgsc6/616BQ7ooDIgPeTuAiE8qfCnS0mGzcfCOoZXypQSz73nxI+GWc7ZReIAVhxoE1KCg==", + "license": "MIT", + "dependencies": { + "@peculiar/webcrypto": "^1.4.0", + "@whatwg-node/node-fetch": "^0.3.6", + "busboy": "^1.6.0", + "urlpattern-polyfill": "^8.0.0", + "web-streams-polyfill": "^3.2.1" + } + }, + "node_modules/@whatwg-node/node-fetch": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@whatwg-node/node-fetch/-/node-fetch-0.3.6.tgz", + "integrity": "sha512-w9wKgDO4C95qnXZRwZTfCmLWqyRnooGjcIwG0wADWjw9/HN0p7dtvtgSvItZtUyNteEvgTrd8QojNEqV6DAGTA==", + "license": "MIT", + "dependencies": { + "@whatwg-node/events": "^0.0.3", + "busboy": "^1.6.0", + "fast-querystring": "^1.1.1", + "fast-url-parser": "^1.1.3", + "tslib": "^2.3.1" + } + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "license": "MIT", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", + "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ansicolors": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", + "integrity": "sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==", + "license": "MIT" + }, + "node_modules/any-signal": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/any-signal/-/any-signal-2.1.2.tgz", + "integrity": "sha512-B+rDnWasMi/eWcajPcCWSlYc7muXOrcYrqgyzcdKisl2H/WTlQ0gip1KyQfr0ZlxJdsuWCj/LWwQm7fhyhRfIQ==", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "native-abort-controller": "^1.0.3" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/apisauce": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/apisauce/-/apisauce-2.1.6.tgz", + "integrity": "sha512-MdxR391op/FucS2YQRfB/NMRyCnHEPDd4h17LRIuVYi0BpGmMhpxc0shbOpfs5ahABuBEffNCGal5EcsydbBWg==", + "license": "MIT", + "dependencies": { + "axios": "^0.21.4" + } + }, + "node_modules/app-module-path": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/app-module-path/-/app-module-path-2.2.0.tgz", + "integrity": "sha512-gkco+qxENJV+8vFcDiiFhuoSvRXb2a/QPqpSoWhVz829VNJfOTnELbBmPmNKFxf3xdNnw4DWCkzkDaavcX/1YQ==", + "license": "BSD-2-Clause" + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "license": "MIT" + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "license": "MIT" + }, + "node_modules/asn1js": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.5.tgz", + "integrity": "sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ==", + "license": "BSD-3-Clause", + "dependencies": { + "pvtsutils": "^1.3.2", + "pvutils": "^1.1.3", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/assemblyscript": { + "version": "0.19.23", + "resolved": "https://registry.npmjs.org/assemblyscript/-/assemblyscript-0.19.23.tgz", + "integrity": "sha512-fwOQNZVTMga5KRsfY80g7cpOl4PsFQczMwHzdtgoqLXaYhkhavufKb0sB0l3T1DUxpAufA0KNhlbpuuhZUwxMA==", + "license": "Apache-2.0", + "dependencies": { + "binaryen": "102.0.0-nightly.20211028", + "long": "^5.2.0", + "source-map-support": "^0.5.20" + }, + "bin": { + "asc": "bin/asc", + "asinit": "bin/asinit" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/assemblyscript" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", + "license": "MIT" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "license": "ISC", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.14.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/base-x": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", + "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/binary-install-raw": { + "version": "0.0.13", + "resolved": "https://registry.npmjs.org/binary-install-raw/-/binary-install-raw-0.0.13.tgz", + "integrity": "sha512-v7ms6N/H7iciuk6QInon3/n2mu7oRX+6knJ9xFPsJ3rQePgAqcR3CRTwUheFd8SLbiq4LL7Z4G/44L9zscdt9A==", + "license": "MIT", + "dependencies": { + "axios": "^0.21.1", + "rimraf": "^3.0.2", + "tar": "^6.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/binaryen": { + "version": "102.0.0-nightly.20211028", + "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-102.0.0-nightly.20211028.tgz", + "integrity": "sha512-GCJBVB5exbxzzvyt8MGDv/MeUjs6gkXDvf4xOIItRBptYl0Tz5sm1o/uG95YK0L0VeG5ajDu3hRtkBP2kzqC5w==", + "license": "Apache-2.0", + "bin": { + "wasm-opt": "bin/wasm-opt" + } + }, + "node_modules/bl": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", + "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", + "license": "MIT", + "dependencies": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/blakejs": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", + "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==", + "license": "MIT" + }, + "node_modules/blob-to-it": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/blob-to-it/-/blob-to-it-1.0.4.tgz", + "integrity": "sha512-iCmk0W4NdbrWgRRuxOriU8aM5ijeVLI61Zulsmg/lUHNr7pYjoj+U77opLefNagevtrrbMt3JQ5Qip7ar178kA==", + "license": "ISC", + "dependencies": { + "browser-readablestream-to-it": "^1.0.3" + } + }, + "node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "license": "MIT" + }, + "node_modules/browser-readablestream-to-it": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/browser-readablestream-to-it/-/browser-readablestream-to-it-1.0.3.tgz", + "integrity": "sha512-+12sHB+Br8HIh6VAMVEG5r3UXCyESIgDW7kzk3BjIXa43DVqVwL7GC5TW3jeh+72dtcH99pPVpw0X8i0jt+/kw==", + "license": "ISC" + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "license": "MIT", + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "license": "MIT", + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "license": "MIT", + "dependencies": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "license": "MIT", + "dependencies": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "node_modules/buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "license": "MIT" + }, + "node_modules/buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==", + "license": "MIT" + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT" + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "license": "MIT" + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/cardinal": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", + "integrity": "sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==", + "license": "MIT", + "dependencies": { + "ansicolors": "~0.3.2", + "redeyed": "~2.1.0" + }, + "bin": { + "cdl": "bin/cdl.js" + } + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "license": "Apache-2.0" + }, + "node_modules/cborg": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/cborg/-/cborg-1.10.2.tgz", + "integrity": "sha512-b3tFPA9pUr2zCUiCfRd2+wok2/LBSNUMKOuRRok+WlvvAgEt/PlbgPTsZUcwCOs53IJvLgTp0eotwtosE6njug==", + "license": "Apache-2.0", + "bin": { + "cborg": "cli.js" + } + }, + "node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/clean-stack": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-3.0.1.tgz", + "integrity": "sha512-lR9wNiMRcVQjSB3a7xXGLuz4cr4wJuuXlaAEbRutGowQTmlp7R72/DOgN21e8jdwblMWl9UOJMJXarX94pzKdg==", + "license": "MIT", + "dependencies": { + "escape-string-regexp": "4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-progress": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.12.0.tgz", + "integrity": "sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==", + "license": "MIT", + "dependencies": { + "string-width": "^4.2.3" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-table3": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.0.tgz", + "integrity": "sha512-gnB85c3MGC7Nm9I/FkiasNBOKjOiO1RNuXXarQms37q4QMpWdlbBgD/VnOStA2faG1dpXMv31RFApjX1/QdgWQ==", + "license": "MIT", + "dependencies": { + "object-assign": "^4.1.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "colors": "^1.1.2" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "license": "MIT", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" + }, + "node_modules/concat-stream": { + "version": "1.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", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" + }, + "node_modules/cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "license": "MIT", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/delay": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz", + "integrity": "sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dns-over-http-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/dns-over-http-resolver/-/dns-over-http-resolver-1.2.3.tgz", + "integrity": "sha512-miDiVSI6KSNbi4SVifzO/reD8rMnxgrlnkrlkugOLQpWQTe2qMdHsZp5DmfKjxNE+/T3VAAYLQUZMv9SMr6+AA==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.1", + "native-fetch": "^3.0.0", + "receptacle": "^1.3.2" + } + }, + "node_modules/docker-compose": { + "version": "0.23.19", + "resolved": "https://registry.npmjs.org/docker-compose/-/docker-compose-0.23.19.tgz", + "integrity": "sha512-v5vNLIdUqwj4my80wxFDkNH+4S85zsRuH29SO7dCWVWPCMt/ohZBsGN6g6KXWifT0pzQ7uOxqEKCYCDPJ8Vz4g==", + "license": "MIT", + "dependencies": { + "yaml": "^1.10.2" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/docker-modem": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/docker-modem/-/docker-modem-1.0.9.tgz", + "integrity": "sha512-lVjqCSCIAUDZPAZIeyM125HXfNvOmYYInciphNrLrylUtKyW66meAjSPXWchKVzoIYZx69TPnAepVSSkeawoIw==", + "license": "Apache-2.0", + "dependencies": { + "debug": "^3.2.6", + "JSONStream": "1.3.2", + "readable-stream": "~1.0.26-4", + "split-ca": "^1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/docker-modem/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/docker-modem/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "license": "MIT" + }, + "node_modules/docker-modem/node_modules/readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/docker-modem/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "license": "MIT" + }, + "node_modules/dockerode": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/dockerode/-/dockerode-2.5.8.tgz", + "integrity": "sha512-+7iOUYBeDTScmOmQqpUYQaE7F4vvIt6+gIZNHWhqAQEI887tiPFB9OvXI/HzQYqfUNvukMK+9myLW63oTJPZpw==", + "license": "Apache-2.0", + "dependencies": { + "concat-stream": "~1.6.2", + "docker-modem": "^1.0.8", + "tar-fs": "~1.16.3" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "license": "Apache-2.0", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron-fetch": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/electron-fetch/-/electron-fetch-1.9.1.tgz", + "integrity": "sha512-M9qw6oUILGVrcENMSRRefE1MbHPIz0h79EKIeJWK9v563aT9Qkh8aEHPO1H5vi970wPirNY+jO9OpFoLiMsMGA==", + "license": "MIT", + "dependencies": { + "encoding": "^0.1.13" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "license": "MIT", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "license": "MIT" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "license": "MIT", + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "license": "MIT", + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/err-code": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-3.0.1.tgz", + "integrity": "sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA==", + "license": "MIT" + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "license": "MIT" + }, + "node_modules/es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==", + "license": "MIT", + "dependencies": { + "es6-promise": "^4.0.3" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ethereum-bloom-filters": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.2.0.tgz", + "integrity": "sha512-28hyiE7HVsWubqhpVLVmZXFd4ITeHi+BUu05o9isf0GUpMtzBUi+8/gFrGaGYzvGAJQmJ3JKj77Mk9G98T84rA==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "^1.4.0" + } + }, + "node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "license": "MIT", + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "node_modules/ethereumjs-util": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", + "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", + "license": "MPL-2.0", + "dependencies": { + "@types/bn.js": "^5.1.0", + "bn.js": "^5.1.2", + "create-hash": "^1.1.2", + "ethereum-cryptography": "^0.1.3", + "rlp": "^2.2.4" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/ethjs-unit": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", + "integrity": "sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==", + "license": "MIT", + "dependencies": { + "bn.js": "4.11.6", + "number-to-bn": "1.7.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/ethjs-unit/node_modules/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==", + "license": "MIT" + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "license": "MIT", + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/eyes": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", + "integrity": "sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==", + "engines": { + "node": "> 0.1.90" + } + }, + "node_modules/fast-decode-uri-component": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz", + "integrity": "sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==", + "license": "MIT" + }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-levenshtein": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-3.0.0.tgz", + "integrity": "sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ==", + "license": "MIT", + "dependencies": { + "fastest-levenshtein": "^1.0.7" + } + }, + "node_modules/fast-querystring": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fast-querystring/-/fast-querystring-1.1.2.tgz", + "integrity": "sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==", + "license": "MIT", + "dependencies": { + "fast-decode-uri-component": "^1.0.1" + } + }, + "node_modules/fast-url-parser": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", + "integrity": "sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==", + "license": "MIT", + "dependencies": { + "punycode": "^1.3.2" + } + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "license": "MIT", + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "license": "MIT" + }, + "node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fs-jetpack": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/fs-jetpack/-/fs-jetpack-4.3.1.tgz", + "integrity": "sha512-dbeOK84F6BiQzk2yqqCVwCPWTxAvVGJ3fMQc6E2wuEohS28mR6yHngbrKuVCK1KHRx/ccByDylqu4H5PCP2urQ==", + "license": "MIT", + "dependencies": { + "minimatch": "^3.0.2", + "rimraf": "^2.6.3" + } + }, + "node_modules/fs-jetpack/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/fs-jetpack/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fs-jetpack/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/fs-jetpack/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-iterator": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-iterator/-/get-iterator-1.0.2.tgz", + "integrity": "sha512-v+dm9bNVfOYsY1OrhaCrmyOcYoSeVvbt+hHZ0Au+T+p1y+0Uyj9aMaGIeUTT6xdpRbWzDeYKvfOslPhggQMcsg==", + "license": "MIT" + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "9.3.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", + "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "minimatch": "^8.0.2", + "minipass": "^4.2.4", + "path-scurry": "^1.6.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gluegun": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/gluegun/-/gluegun-5.1.6.tgz", + "integrity": "sha512-9zbi4EQWIVvSOftJWquWzr9gLX2kaDgPkNR5dYWbM53eVvCI3iKuxLlnKoHC0v4uPoq+Kr/+F569tjoFbA4DSA==", + "license": "MIT", + "dependencies": { + "apisauce": "^2.1.5", + "app-module-path": "^2.2.0", + "cli-table3": "0.6.0", + "colors": "1.4.0", + "cosmiconfig": "7.0.1", + "cross-spawn": "7.0.3", + "ejs": "3.1.8", + "enquirer": "2.3.6", + "execa": "5.1.1", + "fs-jetpack": "4.3.1", + "lodash.camelcase": "^4.3.0", + "lodash.kebabcase": "^4.1.1", + "lodash.lowercase": "^4.3.0", + "lodash.lowerfirst": "^4.3.1", + "lodash.pad": "^4.5.1", + "lodash.padend": "^4.6.1", + "lodash.padstart": "^4.6.1", + "lodash.repeat": "^4.1.0", + "lodash.snakecase": "^4.1.1", + "lodash.startcase": "^4.4.0", + "lodash.trim": "^4.5.1", + "lodash.trimend": "^4.5.1", + "lodash.trimstart": "^4.5.1", + "lodash.uppercase": "^4.3.0", + "lodash.upperfirst": "^4.3.1", + "ora": "4.0.2", + "pluralize": "^8.0.0", + "semver": "7.3.5", + "which": "2.0.2", + "yargs-parser": "^21.0.0" + }, + "bin": { + "gluegun": "bin/gluegun" + } + }, + "node_modules/gluegun/node_modules/ejs": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", + "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", + "license": "Apache-2.0", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gluegun/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/gluegun/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/graphql": { + "version": "15.5.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.5.0.tgz", + "integrity": "sha512-OmaM7y0kaK31NKG31q4YbD2beNYa6jBBKtMFT6gLYJljHLJr42IqJ8KX08u3Li/0ifzTU5HjmoOOrwa5BRLeDA==", + "license": "MIT", + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/graphql-import-node": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/graphql-import-node/-/graphql-import-node-0.0.5.tgz", + "integrity": "sha512-OXbou9fqh9/Lm7vwXT0XoRN9J5+WCYKnbiTalgFDvkQERITRmcfncZs6aVABedd5B85yQU5EULS4a5pnbpuI0Q==", + "license": "MIT", + "peerDependencies": { + "graphql": "*" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash-base/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/hash-base/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "license": "MIT", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/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==", + "license": "MIT", + "dependencies": { + "caseless": "^0.12.0", + "concat-stream": "^1.6.2", + "http-response-object": "^3.0.1", + "parse-cache-control": "^1.0.1" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/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==", + "license": "MIT", + "dependencies": { + "@types/node": "^10.0.3" + } + }, + "node_modules/http-response-object/node_modules/@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==", + "license": "MIT" + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/hyperlinker": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hyperlinker/-/hyperlinker-1.0.0.tgz", + "integrity": "sha512-Ty8UblRWFEcfSuIaajM34LdPXIhbs1ajEX/BBPv24J+enSVaEVY63xQ6lTO9VRYS5LAoghIG0IDJ+p+IPzKUQQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/immutable": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.2.1.tgz", + "integrity": "sha512-7WYV7Q5BTs0nlQm7tl92rDYYoyELLKHoDMBKhrxEoiV4mrfVdRz8hzPiYOzH7yWjzoVEamxRuAqhxL2PLRwZYQ==", + "license": "MIT" + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/interface-datastore": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/interface-datastore/-/interface-datastore-6.1.1.tgz", + "integrity": "sha512-AmCS+9CT34pp2u0QQVXjKztkuq3y5T+BIciuiHDDtDZucZD8VudosnSdUyXJV6IsRkN5jc4RFDhCk1O6Q3Gxjg==", + "license": "MIT", + "dependencies": { + "interface-store": "^2.0.2", + "nanoid": "^3.0.2", + "uint8arrays": "^3.0.0" + } + }, + "node_modules/interface-store": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/interface-store/-/interface-store-2.0.2.tgz", + "integrity": "sha512-rScRlhDcz6k199EkHqT8NpM87ebN89ICOzILoBHgaG36/WX50N32BnU/kpZgCGPLhARRAWUUX5/cyaIjt7Kipg==", + "license": "(Apache-2.0 OR MIT)" + }, + "node_modules/ip-regex": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", + "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ipfs-core-types": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/ipfs-core-types/-/ipfs-core-types-0.9.0.tgz", + "integrity": "sha512-VJ8vJSHvI1Zm7/SxsZo03T+zzpsg8pkgiIi5hfwSJlsrJ1E2v68QPlnLshGHUSYw89Oxq0IbETYl2pGTFHTWfg==", + "deprecated": "js-IPFS has been deprecated in favour of Helia - please see https://github.com/ipfs/js-ipfs/issues/4336 for details", + "license": "(Apache-2.0 OR MIT)", + "dependencies": { + "interface-datastore": "^6.0.2", + "multiaddr": "^10.0.0", + "multiformats": "^9.4.13" + } + }, + "node_modules/ipfs-core-utils": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/ipfs-core-utils/-/ipfs-core-utils-0.13.0.tgz", + "integrity": "sha512-HP5EafxU4/dLW3U13CFsgqVO5Ika8N4sRSIb/dTg16NjLOozMH31TXV0Grtu2ZWo1T10ahTzMvrfT5f4mhioXw==", + "deprecated": "js-IPFS has been deprecated in favour of Helia - please see https://github.com/ipfs/js-ipfs/issues/4336 for details", + "license": "MIT", + "dependencies": { + "any-signal": "^2.1.2", + "blob-to-it": "^1.0.1", + "browser-readablestream-to-it": "^1.0.1", + "debug": "^4.1.1", + "err-code": "^3.0.1", + "ipfs-core-types": "^0.9.0", + "ipfs-unixfs": "^6.0.3", + "ipfs-utils": "^9.0.2", + "it-all": "^1.0.4", + "it-map": "^1.0.4", + "it-peekable": "^1.0.2", + "it-to-stream": "^1.0.0", + "merge-options": "^3.0.4", + "multiaddr": "^10.0.0", + "multiaddr-to-uri": "^8.0.0", + "multiformats": "^9.4.13", + "nanoid": "^3.1.23", + "parse-duration": "^1.0.0", + "timeout-abort-controller": "^2.0.0", + "uint8arrays": "^3.0.0" + } + }, + "node_modules/ipfs-http-client": { + "version": "55.0.0", + "resolved": "https://registry.npmjs.org/ipfs-http-client/-/ipfs-http-client-55.0.0.tgz", + "integrity": "sha512-GpvEs7C7WL9M6fN/kZbjeh4Y8YN7rY8b18tVWZnKxRsVwM25cIFrRI8CwNt3Ugin9yShieI3i9sPyzYGMrLNnQ==", + "deprecated": "js-IPFS has been deprecated in favour of Helia - please see https://github.com/ipfs/js-ipfs/issues/4336 for details", + "license": "(Apache-2.0 OR MIT)", + "dependencies": { + "@ipld/dag-cbor": "^7.0.0", + "@ipld/dag-json": "^8.0.1", + "@ipld/dag-pb": "^2.1.3", + "abort-controller": "^3.0.0", + "any-signal": "^2.1.2", + "debug": "^4.1.1", + "err-code": "^3.0.1", + "ipfs-core-types": "^0.9.0", + "ipfs-core-utils": "^0.13.0", + "ipfs-utils": "^9.0.2", + "it-first": "^1.0.6", + "it-last": "^1.0.4", + "merge-options": "^3.0.4", + "multiaddr": "^10.0.0", + "multiformats": "^9.4.13", + "native-abort-controller": "^1.0.3", + "parse-duration": "^1.0.0", + "stream-to-it": "^0.2.2", + "uint8arrays": "^3.0.0" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=3.0.0" + } + }, + "node_modules/ipfs-unixfs": { + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/ipfs-unixfs/-/ipfs-unixfs-6.0.9.tgz", + "integrity": "sha512-0DQ7p0/9dRB6XCb0mVCTli33GzIzSVx5udpJuVM47tGcD+W+Bl4LsnoLswd3ggNnNEakMv1FdoFITiEnchXDqQ==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "err-code": "^3.0.1", + "protobufjs": "^6.10.2" + }, + "engines": { + "node": ">=16.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/ipfs-utils": { + "version": "9.0.14", + "resolved": "https://registry.npmjs.org/ipfs-utils/-/ipfs-utils-9.0.14.tgz", + "integrity": "sha512-zIaiEGX18QATxgaS0/EOQNoo33W0islREABAcxXE8n7y2MGAlB+hdsxXn4J0hGZge8IqVQhW8sWIb+oJz2yEvg==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "any-signal": "^3.0.0", + "browser-readablestream-to-it": "^1.0.0", + "buffer": "^6.0.1", + "electron-fetch": "^1.7.2", + "err-code": "^3.0.1", + "is-electron": "^2.2.0", + "iso-url": "^1.1.5", + "it-all": "^1.0.4", + "it-glob": "^1.0.1", + "it-to-stream": "^1.0.0", + "merge-options": "^3.0.4", + "nanoid": "^3.1.20", + "native-fetch": "^3.0.0", + "node-fetch": "^2.6.8", + "react-native-fetch-api": "^3.0.0", + "stream-to-it": "^0.2.2" + }, + "engines": { + "node": ">=16.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/ipfs-utils/node_modules/any-signal": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/any-signal/-/any-signal-3.0.1.tgz", + "integrity": "sha512-xgZgJtKEa9YmDqXodIgl7Fl1C8yNXr8w6gXjqK3LW4GcEiYT+6AQfJSE/8SPsEpLLmcvbv8YU+qet94UewHxqg==", + "license": "MIT" + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "license": "MIT" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-electron": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-electron/-/is-electron-2.2.2.tgz", + "integrity": "sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg==", + "license": "MIT" + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "license": "MIT", + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-ip": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-3.1.0.tgz", + "integrity": "sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==", + "license": "MIT", + "dependencies": { + "ip-regex": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/iso-url": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/iso-url/-/iso-url-1.2.1.tgz", + "integrity": "sha512-9JPDgCN4B7QPkLtYAAOrEuAWvP9rWvR5offAr0/SeF046wIkglqH3VXgYYP6NcsKslH80UIVgmPqNe3j7tG2ng==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/isomorphic-ws": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", + "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", + "license": "MIT", + "peerDependencies": { + "ws": "*" + } + }, + "node_modules/it-all": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/it-all/-/it-all-1.0.6.tgz", + "integrity": "sha512-3cmCc6Heqe3uWi3CVM/k51fa/XbMFpQVzFoDsV0IZNHSQDyAXl3c4MjHkFX5kF3922OGj7Myv1nSEUgRtcuM1A==", + "license": "ISC" + }, + "node_modules/it-first": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/it-first/-/it-first-1.0.7.tgz", + "integrity": "sha512-nvJKZoBpZD/6Rtde6FXqwDqDZGF1sCADmr2Zoc0hZsIvnE449gRFnGctxDf09Bzc/FWnHXAdaHVIetY6lrE0/g==", + "license": "ISC" + }, + "node_modules/it-glob": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/it-glob/-/it-glob-1.0.2.tgz", + "integrity": "sha512-Ch2Dzhw4URfB9L/0ZHyY+uqOnKvBNeS/SMcRiPmJfpHiM0TsUZn+GkpcZxAoF3dJVdPm/PuIk3A4wlV7SUo23Q==", + "license": "ISC", + "dependencies": { + "@types/minimatch": "^3.0.4", + "minimatch": "^3.0.4" + } + }, + "node_modules/it-glob/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/it-glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/it-last": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/it-last/-/it-last-1.0.6.tgz", + "integrity": "sha512-aFGeibeiX/lM4bX3JY0OkVCFkAw8+n9lkukkLNivbJRvNz8lI3YXv5xcqhFUV2lDJiraEK3OXRDbGuevnnR67Q==", + "license": "ISC" + }, + "node_modules/it-map": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/it-map/-/it-map-1.0.6.tgz", + "integrity": "sha512-XT4/RM6UHIFG9IobGlQPFQUrlEKkU4eBUFG3qhWhfAdh1JfF2x11ShCrKCdmZ0OiZppPfoLuzcfA4cey6q3UAQ==", + "license": "ISC" + }, + "node_modules/it-peekable": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/it-peekable/-/it-peekable-1.0.3.tgz", + "integrity": "sha512-5+8zemFS+wSfIkSZyf0Zh5kNN+iGyccN02914BY4w/Dj+uoFEoPSvj5vaWn8pNZJNSxzjW0zHRxC3LUb2KWJTQ==", + "license": "ISC" + }, + "node_modules/it-to-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/it-to-stream/-/it-to-stream-1.0.0.tgz", + "integrity": "sha512-pLULMZMAB/+vbdvbZtebC0nWBTbG581lk6w8P7DfIIIKUfa8FbY7Oi0FxZcFPbxvISs7A9E+cMpLDBc1XhpAOA==", + "license": "MIT", + "dependencies": { + "buffer": "^6.0.3", + "fast-fifo": "^1.0.0", + "get-iterator": "^1.0.2", + "p-defer": "^3.0.0", + "p-fifo": "^1.0.0", + "readable-stream": "^3.6.0" + } + }, + "node_modules/it-to-stream/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jake": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", + "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", + "license": "Apache-2.0", + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jake/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/jake/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jake/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/jake/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jayson": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jayson/-/jayson-4.0.0.tgz", + "integrity": "sha512-v2RNpDCMu45fnLzSk47vx7I+QUaOsox6f5X0CUlabAFwxoP+8MfAY0NQRFwOEYXIxm8Ih5y6OaEa5KYiQMkyAA==", + "license": "MIT", + "dependencies": { + "@types/connect": "^3.4.33", + "@types/node": "^12.12.54", + "@types/ws": "^7.4.4", + "commander": "^2.20.3", + "delay": "^5.0.0", + "es6-promisify": "^5.0.0", + "eyes": "^0.1.8", + "isomorphic-ws": "^4.0.1", + "json-stringify-safe": "^5.0.1", + "JSONStream": "^1.3.5", + "uuid": "^8.3.2", + "ws": "^7.4.5" + }, + "bin": { + "jayson": "bin/jayson.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jayson/node_modules/@types/node": { + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", + "license": "MIT" + }, + "node_modules/jayson/node_modules/JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "license": "(MIT OR Apache-2.0)", + "dependencies": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + }, + "bin": { + "JSONStream": "bin.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "license": "MIT" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "license": "MIT" + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "license": "ISC" + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "engines": [ + "node >= 0.2.0" + ], + "license": "MIT" + }, + "node_modules/JSONStream": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.2.tgz", + "integrity": "sha512-mn0KSip7N4e0UDPZHnqDsHECo5uGQrixQKnAskOM1BIB8hd7QKbd6il8IPRPudPHOeHiECoCFqhyMaRO9+nWyA==", + "license": "(MIT OR Apache-2.0)", + "dependencies": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + }, + "bin": { + "JSONStream": "bin.js" + }, + "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", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/keccak/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "license": "MIT" + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "license": "MIT" + }, + "node_modules/lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", + "license": "MIT" + }, + "node_modules/lodash.lowercase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.lowercase/-/lodash.lowercase-4.3.0.tgz", + "integrity": "sha512-UcvP1IZYyDKyEL64mmrwoA1AbFu5ahojhTtkOUr1K9dbuxzS9ev8i4TxMMGCqRC9TE8uDaSoufNAXxRPNTseVA==", + "license": "MIT" + }, + "node_modules/lodash.lowerfirst": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/lodash.lowerfirst/-/lodash.lowerfirst-4.3.1.tgz", + "integrity": "sha512-UUKX7VhP1/JL54NXg2aq/E1Sfnjjes8fNYTNkPU8ZmsaVeBvPHKdbNaN79Re5XRL01u6wbq3j0cbYZj71Fcu5w==", + "license": "MIT" + }, + "node_modules/lodash.pad": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/lodash.pad/-/lodash.pad-4.5.1.tgz", + "integrity": "sha512-mvUHifnLqM+03YNzeTBS1/Gr6JRFjd3rRx88FHWUvamVaT9k2O/kXha3yBSOwB9/DTQrSTLJNHvLBBt2FdX7Mg==", + "license": "MIT" + }, + "node_modules/lodash.padend": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.6.1.tgz", + "integrity": "sha512-sOQs2aqGpbl27tmCS1QNZA09Uqp01ZzWfDUoD+xzTii0E7dSQfRKcRetFwa+uXaxaqL+TKm7CgD2JdKP7aZBSw==", + "license": "MIT" + }, + "node_modules/lodash.padstart": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.padstart/-/lodash.padstart-4.6.1.tgz", + "integrity": "sha512-sW73O6S8+Tg66eY56DBk85aQzzUJDtpoXFBgELMd5P/SotAguo+1kYO6RuYgXxA4HJH3LFTFPASX6ET6bjfriw==", + "license": "MIT" + }, + "node_modules/lodash.repeat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/lodash.repeat/-/lodash.repeat-4.1.0.tgz", + "integrity": "sha512-eWsgQW89IewS95ZOcr15HHCX6FVDxq3f2PNUIng3fyzsPev9imFQxIYdFZ6crl8L56UR6ZlGDLcEb3RZsCSSqw==", + "license": "MIT" + }, + "node_modules/lodash.snakecase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", + "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==", + "license": "MIT" + }, + "node_modules/lodash.startcase": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz", + "integrity": "sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==", + "license": "MIT" + }, + "node_modules/lodash.trim": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/lodash.trim/-/lodash.trim-4.5.1.tgz", + "integrity": "sha512-nJAlRl/K+eiOehWKDzoBVrSMhK0K3A3YQsUNXHQa5yIrKBAhsZgSu3KoAFoFT+mEgiyBHddZ0pRk1ITpIp90Wg==", + "license": "MIT" + }, + "node_modules/lodash.trimend": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/lodash.trimend/-/lodash.trimend-4.5.1.tgz", + "integrity": "sha512-lsD+k73XztDsMBKPKvzHXRKFNMohTjoTKIIo4ADLn5dA65LZ1BqlAvSXhR2rPEC3BgAUQnzMnorqDtqn2z4IHA==", + "license": "MIT" + }, + "node_modules/lodash.trimstart": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/lodash.trimstart/-/lodash.trimstart-4.5.1.tgz", + "integrity": "sha512-b/+D6La8tU76L/61/aN0jULWHkT0EeJCmVstPBn/K9MtD2qBW83AsBNrr63dKuWYwVMO7ucv13QNO/Ek/2RKaQ==", + "license": "MIT" + }, + "node_modules/lodash.uppercase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.uppercase/-/lodash.uppercase-4.3.0.tgz", + "integrity": "sha512-+Nbnxkj7s8K5U8z6KnEYPGUOGp3woZbB7Ecs7v3LkkjLQSm2kP9SKIILitN1ktn2mB/tmM9oSlku06I+/lH7QA==", + "license": "MIT" + }, + "node_modules/lodash.upperfirst": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz", + "integrity": "sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==", + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", + "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "license": "MIT", + "dependencies": { + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-symbols/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" + }, + "node_modules/log-symbols/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==", + "license": "Apache-2.0" + }, + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "license": "ISC" + }, + "node_modules/matchstick-as": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/matchstick-as/-/matchstick-as-0.5.0.tgz", + "integrity": "sha512-4K619YDH+so129qt4RB4JCNxaFwJJYLXPc7drpG+/mIj86Cfzg6FKs/bA91cnajmS1CLHdhHl9vt6Kd6Oqvfkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@graphprotocol/graph-ts": "^0.27.0", + "assemblyscript": "^0.19.20", + "wabt": "1.0.24" + } + }, + "node_modules/matchstick-as/node_modules/@graphprotocol/graph-ts": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@graphprotocol/graph-ts/-/graph-ts-0.27.0.tgz", + "integrity": "sha512-r1SPDIZVQiGMxcY8rhFSM0y7d/xAbQf5vHMWUf59js1KgoyWpM6P3tczZqmQd7JTmeyNsDGIPzd9FeaxllsU4w==", + "dev": true, + "dependencies": { + "assemblyscript": "0.19.10" + } + }, + "node_modules/matchstick-as/node_modules/@graphprotocol/graph-ts/node_modules/assemblyscript": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/assemblyscript/-/assemblyscript-0.19.10.tgz", + "integrity": "sha512-HavcUBXB3mBTRGJcpvaQjmnmaqKHBGREjSPNsIvnAk2f9dj78y4BkMaSSdvBQYWcDDzsHQjyUC8stICFkD1Odg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "binaryen": "101.0.0-nightly.20210723", + "long": "^4.0.0" + }, + "bin": { + "asc": "bin/asc", + "asinit": "bin/asinit" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/assemblyscript" + } + }, + "node_modules/matchstick-as/node_modules/binaryen": { + "version": "101.0.0-nightly.20210723", + "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-101.0.0-nightly.20210723.tgz", + "integrity": "sha512-eioJNqhHlkguVSbblHOtLqlhtC882SOEPKmNFZaDuz1hzQjolxZ+eu3/kaS10n3sGPONsIZsO7R9fR00UyhEUA==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "wasm-opt": "bin/wasm-opt" + } + }, + "node_modules/matchstick-as/node_modules/long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "license": "MIT", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/merge-options": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz", + "integrity": "sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==", + "license": "MIT", + "dependencies": { + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "license": "ISC" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "license": "MIT" + }, + "node_modules/minimatch": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz", + "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", + "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "license": "MIT" + }, + "node_modules/multiaddr": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/multiaddr/-/multiaddr-10.0.1.tgz", + "integrity": "sha512-G5upNcGzEGuTHkzxezPrrD6CaIHR9uo+7MwqhNVcXTs33IInon4y7nMiGxl2CY5hG7chvYQUQhz5V52/Qe3cbg==", + "deprecated": "This module is deprecated, please upgrade to @multiformats/multiaddr", + "license": "MIT", + "dependencies": { + "dns-over-http-resolver": "^1.2.3", + "err-code": "^3.0.1", + "is-ip": "^3.1.0", + "multiformats": "^9.4.5", + "uint8arrays": "^3.0.0", + "varint": "^6.0.0" + } + }, + "node_modules/multiaddr-to-uri": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/multiaddr-to-uri/-/multiaddr-to-uri-8.0.0.tgz", + "integrity": "sha512-dq4p/vsOOUdVEd1J1gl+R2GFrXJQH8yjLtz4hodqdVbieg39LvBOdMQRdQnfbg5LSM/q1BYNVf5CBbwZFFqBgA==", + "deprecated": "This module is deprecated, please upgrade to @multiformats/multiaddr-to-uri", + "license": "MIT", + "dependencies": { + "multiaddr": "^10.0.0" + } + }, + "node_modules/multiformats": { + "version": "9.9.0", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz", + "integrity": "sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==", + "license": "(Apache-2.0 AND MIT)" + }, + "node_modules/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" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/native-abort-controller": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/native-abort-controller/-/native-abort-controller-1.0.4.tgz", + "integrity": "sha512-zp8yev7nxczDJMoP6pDxyD20IU0T22eX8VwN2ztDccKvSZhRaV33yP1BGwKSZfXuqWUzsXopVFjBdau9OOAwMQ==", + "license": "MIT", + "peerDependencies": { + "abort-controller": "*" + } + }, + "node_modules/native-fetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/native-fetch/-/native-fetch-3.0.0.tgz", + "integrity": "sha512-G3Z7vx0IFb/FQ4JxvtqGABsOTIqRWvgQz6e+erkB+JJD6LrszQtMozEHI4EkmgZQvnGHrpLVzUWk7t4sJCIkVw==", + "license": "MIT", + "peerDependencies": { + "node-fetch": "*" + } + }, + "node_modules/natural-orderby": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/natural-orderby/-/natural-orderby-2.0.3.tgz", + "integrity": "sha512-p7KTHxU0CUrcOXe62Zfrb5Z13nLvPhSWR/so3kFulUQU0sgUll2Z0LwpsLN351eOOD+hRGu/F1g+6xDfPeD++Q==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/node-addon-api": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", + "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", + "license": "MIT" + }, + "node_modules/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==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-gyp-build": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.1.tgz", + "integrity": "sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==", + "license": "MIT", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/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==", + "license": "MIT", + "dependencies": { + "bn.js": "4.11.6", + "strip-hex-prefix": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/number-to-bn/node_modules/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==", + "license": "MIT" + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-treeify": { + "version": "1.1.33", + "resolved": "https://registry.npmjs.org/object-treeify/-/object-treeify-1.1.33.tgz", + "integrity": "sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "license": "MIT", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/ora/-/ora-4.0.2.tgz", + "integrity": "sha512-YUOZbamht5mfLxPmk4M35CD/5DuOkAacxlEUbStVXpBAt4fyhBf+vZHI/HRkI++QUp3sNoeA2Gw4C+hi4eGSig==", + "license": "MIT", + "dependencies": { + "chalk": "^2.4.2", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.2.0", + "is-interactive": "^1.0.0", + "log-symbols": "^3.0.0", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ora/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ora/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/ora/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" + }, + "node_modules/ora/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/ora/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/ora/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ora/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-defer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-3.0.0.tgz", + "integrity": "sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/p-fifo": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-fifo/-/p-fifo-1.0.0.tgz", + "integrity": "sha512-IjoCxXW48tqdtDFz6fqo5q1UfFVjjVZe8TC1QRflvNUJtNfCUhxOUw6MOVZhDPjqhSzc26xKdugsO17gmzd5+A==", + "license": "MIT", + "dependencies": { + "fast-fifo": "^1.0.0", + "p-defer": "^3.0.0" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/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==" + }, + "node_modules/parse-duration": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/parse-duration/-/parse-duration-1.1.0.tgz", + "integrity": "sha512-z6t9dvSJYaPoQq7quMzdEagSFtpGu+utzHqqxmpVWNNZRIXnvqyCvn9XsTdh7c/w0Bqmdz3RB3YnRaKtpRtEXQ==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/password-prompt": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/password-prompt/-/password-prompt-1.1.3.tgz", + "integrity": "sha512-HkrjG2aJlvF0t2BMH0e2LB/EHf3Lcq3fNMzy4GYHcQblAvOl+QQji1Lx7WRBMqpVK8p+KR7bCg7oqAMXtdgqyw==", + "license": "0BSD", + "dependencies": { + "ansi-escapes": "^4.3.2", + "cross-spawn": "^7.0.3" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "license": "MIT", + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/prettier": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", + "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" + }, + "node_modules/promise": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", + "license": "MIT", + "dependencies": { + "asap": "~2.0.6" + } + }, + "node_modules/protobufjs": { + "version": "6.11.4", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.4.tgz", + "integrity": "sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw==", + "hasInstallScript": true, + "license": "BSD-3-Clause", + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.1", + "@types/node": ">=13.7.0", + "long": "^4.0.0" + }, + "bin": { + "pbjs": "bin/pbjs", + "pbts": "bin/pbts" + } + }, + "node_modules/protobufjs/node_modules/long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", + "license": "Apache-2.0" + }, + "node_modules/pump": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz", + "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "license": "MIT" + }, + "node_modules/pvtsutils": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.5.tgz", + "integrity": "sha512-ARvb14YB9Nm2Xi6nBq1ZX6dAM0FsJnuk+31aUp4TrcZEdKUlSqOqsxJHUPJDNE3qiIp+iUPEIeR6Je/tgV7zsA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.6.1" + } + }, + "node_modules/pvutils": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.3.tgz", + "integrity": "sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/qs": { + "version": "6.12.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.3.tgz", + "integrity": "sha512-AWJm14H1vVaO/iNZ4/hO+HyaTehuy9nRqVdkTqlJt0HWvBiBIEXFmb4C0DGeYo3Xes9rrEW+TxHsaigCbN5ICQ==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/react-native-fetch-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/react-native-fetch-api/-/react-native-fetch-api-3.0.0.tgz", + "integrity": "sha512-g2rtqPjdroaboDKTsJCTlcmtw54E25OjyaunUP0anOZn4Fuo2IKs8BVfe02zVggA/UysbmfSnRJIqtNkAgggNA==", + "license": "MIT", + "dependencies": { + "p-defer": "^3.0.0" + } + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/receptacle": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/receptacle/-/receptacle-1.3.2.tgz", + "integrity": "sha512-HrsFvqZZheusncQRiEE7GatOAETrARKV/lnfYicIm8lbvp/JQOdADOfhjBd2DajvoszEyxSM6RlAAIZgEoeu/A==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/redeyed": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz", + "integrity": "sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==", + "license": "MIT", + "dependencies": { + "esprima": "~4.0.0" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/retimer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/retimer/-/retimer-3.0.0.tgz", + "integrity": "sha512-WKE0j11Pa0ZJI5YIk0nflGI7SQsfl2ljihVy7ogh7DeQSeYAUi0ubZ/yEueGtDfUPk6GH5LRw1hBdLq4IwUBWA==", + "license": "MIT" + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "license": "MIT", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/rlp": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", + "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", + "license": "MPL-2.0", + "dependencies": { + "bn.js": "^5.2.0" + }, + "bin": { + "rlp": "bin/rlp" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/scrypt-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", + "license": "MIT" + }, + "node_modules/secp256k1": { + "version": "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", + "node-gyp-build": "^4.2.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/semver": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.4.0.tgz", + "integrity": "sha512-RgOxM8Mw+7Zus0+zcLEUn8+JfoLpj/huFTItQy2hsM4khuC1HYRDp0cU482Ewn/Fcy6bCjufD8vAj7voC66KQw==", + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/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==", + "license": "MIT" + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "license": "(MIT AND BSD-3-Clause)", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/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==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/split-ca": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split-ca/-/split-ca-1.0.1.tgz", + "integrity": "sha512-Q5thBSxp5t8WPTTJQS59LrGqOZqOsrhDGDVm8azCqIBjSBd7nd9o2PM+mDulQQkh8h//4U6hFZnc/mul8t5pWQ==", + "license": "ISC" + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "license": "BSD-3-Clause" + }, + "node_modules/stream-to-it": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/stream-to-it/-/stream-to-it-0.2.4.tgz", + "integrity": "sha512-4vEbkSs83OahpmBybNJXlJd7d6/RxzkkSdT3I0mnGt79Xd2Kk+e1JqbvAvsQfCeKj3aKb0QIWkyK3/n0j506vQ==", + "license": "MIT", + "dependencies": { + "get-iterator": "^1.0.2" + } + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "license": "MIT", + "dependencies": { + "is-hex-prefixed": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/supports-hyperlinks": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/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==", + "license": "MIT", + "dependencies": { + "http-response-object": "^3.0.1", + "sync-rpc": "^1.2.1", + "then-request": "^6.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/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==", + "license": "MIT", + "dependencies": { + "get-port": "^3.1.0" + } + }, + "node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar-fs": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.3.tgz", + "integrity": "sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw==", + "license": "MIT", + "dependencies": { + "chownr": "^1.0.1", + "mkdirp": "^0.5.1", + "pump": "^1.0.0", + "tar-stream": "^1.1.2" + } + }, + "node_modules/tar-fs/node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "license": "ISC" + }, + "node_modules/tar-fs/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/tar-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", + "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", + "license": "MIT", + "dependencies": { + "bl": "^1.0.0", + "buffer-alloc": "^1.2.0", + "end-of-stream": "^1.0.0", + "fs-constants": "^1.0.0", + "readable-stream": "^2.3.0", + "to-buffer": "^1.1.1", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/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==", + "license": "MIT", + "dependencies": { + "@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" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/then-request/node_modules/@types/node": { + "version": "8.10.66", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz", + "integrity": "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==", + "license": "MIT" + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "license": "MIT" + }, + "node_modules/timeout-abort-controller": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/timeout-abort-controller/-/timeout-abort-controller-2.0.0.tgz", + "integrity": "sha512-2FAPXfzTPYEgw27bQGTHc0SzrbmnU2eso4qo172zMLZzaGqeu09PFa5B2FCUHM1tflgRqPgn5KQgp6+Vex4uNA==", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "native-abort-controller": "^1.0.4", + "retimer": "^3.0.0" + } + }, + "node_modules/tmp": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", + "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", + "license": "MIT", + "engines": { + "node": ">=14.14" + } + }, + "node_modules/tmp-promise": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz", + "integrity": "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==", + "license": "MIT", + "dependencies": { + "tmp": "^0.2.0" + } + }, + "node_modules/to-buffer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", + "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==", + "license": "MIT" + }, + "node_modules/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==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "license": "MIT", + "dependencies": { + "@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" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "license": "0BSD" + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "license": "MIT" + }, + "node_modules/typescript": { + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", + "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", + "license": "Apache-2.0", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/uint8arrays": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", + "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", + "license": "MIT", + "dependencies": { + "multiformats": "^9.4.2" + } + }, + "node_modules/undici-types": { + "version": "6.11.1", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.11.1.tgz", + "integrity": "sha512-mIDEX2ek50x0OlRgxryxsenE5XaQD4on5U2inY7RApK3SOJpofyw7uW2AyfMKkhAxXIceo2DeWGVGwyvng1GNQ==", + "license": "MIT" + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/urlpattern-polyfill": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-8.0.2.tgz", + "integrity": "sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ==", + "license": "MIT" + }, + "node_modules/utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", + "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==", + "license": "MIT" + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "license": "MIT" + }, + "node_modules/varint": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", + "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", + "license": "MIT" + }, + "node_modules/wabt": { + "version": "1.0.24", + "resolved": "https://registry.npmjs.org/wabt/-/wabt-1.0.24.tgz", + "integrity": "sha512-8l7sIOd3i5GWfTWciPL0+ff/FK/deVK2Q6FN+MPz4vfUcD78i2M/49XJTwF6aml91uIiuXJEsLKWMB2cw/mtKg==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "wasm-decompile": "bin/wasm-decompile", + "wasm-interp": "bin/wasm-interp", + "wasm-objdump": "bin/wasm-objdump", + "wasm-opcodecnt": "bin/wasm-opcodecnt", + "wasm-strip": "bin/wasm-strip", + "wasm-validate": "bin/wasm-validate", + "wasm2c": "bin/wasm2c", + "wasm2wat": "bin/wasm2wat", + "wat2wasm": "bin/wat2wasm" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/web-streams-polyfill": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/web3-eth-abi": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.7.0.tgz", + "integrity": "sha512-heqR0bWxgCJwjWIhq2sGyNj9bwun5+Xox/LdZKe+WMyTSy0cXDXEAgv3XKNkXC4JqdDt/ZlbTEx4TWak4TRMSg==", + "license": "LGPL-3.0", + "dependencies": { + "@ethersproject/abi": "5.0.7", + "web3-utils": "1.7.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-utils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.0.tgz", + "integrity": "sha512-O8Tl4Ky40Sp6pe89Olk2FsaUkgHyb5QAXuaKo38ms3CxZZ4d3rPGfjP9DNKGm5+IUgAZBNpF1VmlSmNCqfDI1w==", + "license": "LGPL-3.0", + "dependencies": { + "bn.js": "^4.11.9", + "ethereum-bloom-filters": "^1.0.6", + "ethereumjs-util": "^7.1.0", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-utils/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "license": "MIT" + }, + "node_modules/webcrypto-core": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/webcrypto-core/-/webcrypto-core-1.8.0.tgz", + "integrity": "sha512-kR1UQNH8MD42CYuLzvibfakG5Ew5seG85dMMoAM/1LqvckxaF6pUiidLuraIu4V+YCIFabYecUZAW0TuxAoaqw==", + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.3.8", + "@peculiar/json-schema": "^1.1.12", + "asn1js": "^3.0.1", + "pvtsutils": "^1.3.5", + "tslib": "^2.6.2" + } + }, + "node_modules/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==", + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "license": "MIT", + "dependencies": { + "string-width": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "license": "MIT" + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, + "node_modules/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==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + } + } +} diff --git a/thegraph/m-shutter-validator-registry/subgraph.yaml b/thegraph/m-shutter-validator-registry/subgraph.yaml index 542bce1..5b4aeef 100644 --- a/thegraph/m-shutter-validator-registry/subgraph.yaml +++ b/thegraph/m-shutter-validator-registry/subgraph.yaml @@ -10,7 +10,7 @@ dataSources: source: address: "0xefCC23E71f6bA9B22C4D28F7588141d44496A6D6" abi: ValidatorRegistry - startBlock: 0 + startBlock: 34627170 mapping: kind: ethereum/events apiVersion: 0.0.7 From 074814cf955b93a70aae0966a8bf02c901e96450 Mon Sep 17 00:00:00 2001 From: verkhohliad Date: Thu, 1 Aug 2024 10:01:27 +0100 Subject: [PATCH 09/22] remove abandoned skip logic for querying graph --- src/shared/ShutterTimer/useGetValidatorRegistryLogs.ts | 9 --------- 1 file changed, 9 deletions(-) diff --git a/src/shared/ShutterTimer/useGetValidatorRegistryLogs.ts b/src/shared/ShutterTimer/useGetValidatorRegistryLogs.ts index 6332fc0..f854f52 100644 --- a/src/shared/ShutterTimer/useGetValidatorRegistryLogs.ts +++ b/src/shared/ShutterTimer/useGetValidatorRegistryLogs.ts @@ -10,7 +10,6 @@ export interface ValidatorRegistryLog { } const SUB_GRAPH_MAX_QUERY_LOGS = 1000; -const SKIP_LIMIT = 5000; // query const LOGS_QUERY_KEY = 'logs'; @@ -22,15 +21,9 @@ export const useGetValidatorRegistryLogs = (chainId: number, lastBlockNumber: nu queryFn: async () => { try { let allLogs: ValidatorRegistryLog[] = []; - let skip = 0; // eslint-disable-next-line no-constant-condition while (true) { - if (skip > SKIP_LIMIT) { - // console.error('[service][logs] Exceeded skip limit'); - // break; - } - const blockNumber = allLogs.length ? allLogs[allLogs.length - 1].blockNumber : lastBlockNumber; const response = await getUpdates({ variables: { first: SUB_GRAPH_MAX_QUERY_LOGS, lastBlockNumber: Number(blockNumber) }}); @@ -42,8 +35,6 @@ export const useGetValidatorRegistryLogs = (chainId: number, lastBlockNumber: nu if (logs.length < SUB_GRAPH_MAX_QUERY_LOGS) { break; // Break the loop if the number of logs fetched is less than 'first', indicating the end of data } - - skip += SUB_GRAPH_MAX_QUERY_LOGS; // Increment skip by 'first' for the next page } console.log('[service][logs] queried logs', { allLogs, chainId }); From 7b544c699ffb6e3b7bed464ab7f8053a2ee3ed18 Mon Sep 17 00:00:00 2001 From: verkhohliad Date: Thu, 1 Aug 2024 14:39:51 +0100 Subject: [PATCH 10/22] minor fixes --- src/shared/ShutterTimer/ShutterTimer.tsx | 2 +- src/shared/ShutterTimer/useGetValidatorRegistryLogs.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/shared/ShutterTimer/ShutterTimer.tsx b/src/shared/ShutterTimer/ShutterTimer.tsx index c1aea50..cd96eb9 100644 --- a/src/shared/ShutterTimer/ShutterTimer.tsx +++ b/src/shared/ShutterTimer/ShutterTimer.tsx @@ -45,7 +45,7 @@ export const ShutterTimer = () => { const interval = setInterval(() => { const currentSlot = getSlot(chain.genesisTime); - const match = matches.find((m: any) => m.slot > currentSlot); + const match = matches.find((m: any) => Number(m.slot) > currentSlot); if (!match) { setTimeDifference(0); diff --git a/src/shared/ShutterTimer/useGetValidatorRegistryLogs.ts b/src/shared/ShutterTimer/useGetValidatorRegistryLogs.ts index f854f52..951f70f 100644 --- a/src/shared/ShutterTimer/useGetValidatorRegistryLogs.ts +++ b/src/shared/ShutterTimer/useGetValidatorRegistryLogs.ts @@ -32,7 +32,7 @@ export const useGetValidatorRegistryLogs = (chainId: number, lastBlockNumber: nu allLogs = [...allLogs, ...(logs ?? [])]; - if (logs.length < SUB_GRAPH_MAX_QUERY_LOGS) { + if (!logs || logs.length < SUB_GRAPH_MAX_QUERY_LOGS) { break; // Break the loop if the number of logs fetched is less than 'first', indicating the end of data } } From 872ea5f5ba65c20f0a74b36e28dc3b483d8c6e07 Mon Sep 17 00:00:00 2001 From: verkhohliad Date: Fri, 2 Aug 2024 13:25:39 +0100 Subject: [PATCH 11/22] add missing dependency --- package-lock.json | 2 +- package.json | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index 76f0ddf..318829b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -31,6 +31,7 @@ "eslint": "^8.57.0", "eslint-plugin-react-hooks": "^4.6.2", "eslint-plugin-react-refresh": "^0.4.7", + "graphql": "^16.9.0", "postcss": "^8.4.38", "tailwindcss": "^3.4.4", "typescript": "^5.2.2", @@ -13320,7 +13321,6 @@ "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.9.0.tgz", "integrity": "sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==", "license": "MIT", - "peer": true, "engines": { "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" } diff --git a/package.json b/package.json index 398e58f..bbecd07 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,7 @@ "eslint": "^8.57.0", "eslint-plugin-react-hooks": "^4.6.2", "eslint-plugin-react-refresh": "^0.4.7", + "graphql": "^16.9.0", "postcss": "^8.4.38", "tailwindcss": "^3.4.4", "typescript": "^5.2.2", From 54bd75a2b3451439cb6907d51bd9ebfcf103fcf2 Mon Sep 17 00:00:00 2001 From: verkhohliad Date: Wed, 14 Aug 2024 12:05:36 +0100 Subject: [PATCH 12/22] handle incorrect validator registration message, fix finding next shutter validator in next epochs, update progress unit to seconds --- src/shared/ShutterTimer/ShutterTimer.tsx | 5 ++-- .../useGetShutterValidatorIndexes.ts | 25 +++++++++++-------- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/src/shared/ShutterTimer/ShutterTimer.tsx b/src/shared/ShutterTimer/ShutterTimer.tsx index cd96eb9..5a8f5f6 100644 --- a/src/shared/ShutterTimer/ShutterTimer.tsx +++ b/src/shared/ShutterTimer/ShutterTimer.tsx @@ -49,7 +49,7 @@ export const ShutterTimer = () => { if (!match) { setTimeDifference(0); - setCurrentEpoch(getEpoch(chain.genesisTime) + 1); + setCurrentEpoch(currentEpoch + 1); clearInterval(interval); return; } @@ -73,7 +73,8 @@ export const ShutterTimer = () => { className="my-4" aria-label="Loading..." size="lg" - value={100 - timeDifference} + value={timeDifference} + formatOptions={{ style: "unit", unit: "second" }} color="warning" showValueLabel={true} /> diff --git a/src/shared/ShutterTimer/useGetShutterValidatorIndexes.ts b/src/shared/ShutterTimer/useGetShutterValidatorIndexes.ts index a168236..7060e00 100644 --- a/src/shared/ShutterTimer/useGetShutterValidatorIndexes.ts +++ b/src/shared/ShutterTimer/useGetShutterValidatorIndexes.ts @@ -36,19 +36,24 @@ export const useGetShutterValidatorIndexes = (chainId: number) => { let newLastBlock = lastBlockNumber; const indexes = logs?.reduce((acc, log) => { - const validatorIndex = extractValidatorIndex(log.message); - const subscriptionStatus = extractSubscriptionStatus(log.message); + try { + const validatorIndex = extractValidatorIndex(log.message); + const subscriptionStatus = extractSubscriptionStatus(log.message); - if (subscriptionStatus) { - acc.add(validatorIndex); - } else { - currentIndexes = currentIndexes.filter((index) => index !== validatorIndex); - acc.delete(validatorIndex); - } + if (subscriptionStatus) { + acc.add(validatorIndex); + } else { + currentIndexes = currentIndexes.filter((index) => index !== validatorIndex); + acc.delete(validatorIndex); + } - newLastBlock = Number(log.blockNumber); + newLastBlock = Number(log.blockNumber); - return acc; + return acc; + } catch (err) { + console.error('Failed to extract validator index from log', err); + return acc; + } }, new Set()); if (indexes && newLastBlock > lastBlockNumber) { From 5fb65e60e0ad0558758b7db0869b5073b2a467a7 Mon Sep 17 00:00:00 2001 From: verkhohliad Date: Wed, 14 Aug 2024 12:06:37 +0100 Subject: [PATCH 13/22] add theGraph secret to deployment script --- .github/workflows/dev_deploy.yml | 1 + .github/workflows/prod_deploy.yaml | 1 + 2 files changed, 2 insertions(+) diff --git a/.github/workflows/dev_deploy.yml b/.github/workflows/dev_deploy.yml index 8301b3d..5951e6e 100644 --- a/.github/workflows/dev_deploy.yml +++ b/.github/workflows/dev_deploy.yml @@ -13,6 +13,7 @@ concurrency: env: VITE_WALLET_CONNECT_PROJECT_ID: ${{ secrets.VITE_WALLET_CONNECT_PROJECT_ID }} + VITE_THE_GRAPH_API_KEY: ${{ secrets.VITE_THE_GRAPH_API_KEY }} jobs: deploy: diff --git a/.github/workflows/prod_deploy.yaml b/.github/workflows/prod_deploy.yaml index cb675f4..714b6cc 100644 --- a/.github/workflows/prod_deploy.yaml +++ b/.github/workflows/prod_deploy.yaml @@ -15,6 +15,7 @@ concurrency: env: VITE_WALLET_CONNECT_PROJECT_ID: ${{ secrets.VITE_WALLET_CONNECT_PROJECT_ID }} + VITE_THE_GRAPH_API_KEY: ${{ secrets.VITE_THE_GRAPH_API_KEY }} jobs: deploy: From 0bd7015a94823c6bf037de4546c8acc6335927a6 Mon Sep 17 00:00:00 2001 From: verkhohliad Date: Thu, 29 Aug 2024 20:38:57 +0100 Subject: [PATCH 14/22] feat: control waiting for new epochs if in next one there is no shutter validators --- src/shared/ShutterTimer/ShutterTimer.tsx | 71 ++++++++++++++++++------ 1 file changed, 55 insertions(+), 16 deletions(-) diff --git a/src/shared/ShutterTimer/ShutterTimer.tsx b/src/shared/ShutterTimer/ShutterTimer.tsx index 5a8f5f6..663154a 100644 --- a/src/shared/ShutterTimer/ShutterTimer.tsx +++ b/src/shared/ShutterTimer/ShutterTimer.tsx @@ -19,16 +19,37 @@ const getSlot = (genesisTime: number) => { return Math.floor(((Date.now() / 1000) - genesisTime) / SLOT_TIME); } +const getLoadingLabel = ({ isValidatorsLoading, isProposersLoading, isWaiting, timeDifference }: { + isValidatorsLoading: boolean, + isProposersLoading: boolean, + isWaiting: boolean, + timeDifference: number, +}) => { + if (isValidatorsLoading) { + return 'Fetching shutter validators...'; + } + if (isWaiting) { + return 'Waiting for epoch with shutter validators...'; + } + if (isProposersLoading) { + return 'Fetching proposers...'; + } + + return `Next Shutter transactions will be included in ~${timeDifference} seconds`; +} + export const ShutterTimer = () => { const chainId = useChainId(); const chain = useMemo(() => CHAINS_MAP[chainId], [chainId]); const [currentEpoch, setCurrentEpoch] = useState(getEpoch(chain.genesisTime)); const [timeDifference, setTimeDifference] = useState(0); + // waiting for next epoch + const [isWaiting, setIsWaiting] = useState(false); - const { validatorIndexes: shutteredValidatorIndexes, isLoading } = useGetShutterValidatorIndexes(chainId); + const { validatorIndexes: shutteredValidatorIndexes, isLoading: isValidatorsLoading } = useGetShutterValidatorIndexes(chainId); - const { data: dutiesProposer } = useFetchDutiesProposer(chain.gbcUrl, currentEpoch); + const { data: dutiesProposer, isLoading: isProposersLoading } = useFetchDutiesProposer(chain.gbcUrl, currentEpoch); const matches = useMemo(() => { if (!shutteredValidatorIndexes || !dutiesProposer) return; @@ -49,8 +70,18 @@ export const ShutterTimer = () => { if (!match) { setTimeDifference(0); - setCurrentEpoch(currentEpoch + 1); - clearInterval(interval); + + const nextEpochStart = chain.genesisTime + (currentEpoch + 1) * SLOTS_PER_EPOCH * SLOT_TIME; + const oneEpochAhead = Date.now() / 1000 + SLOTS_PER_EPOCH * SLOT_TIME; + + if (nextEpochStart < oneEpochAhead) { + setCurrentEpoch(currentEpoch + 1); + clearInterval(interval); + setIsWaiting(false); + } else { + setIsWaiting(true); + } + return; } @@ -65,21 +96,29 @@ export const ShutterTimer = () => { return (
- {isLoading ? ( + + {isValidatorsLoading || isProposersLoading || isWaiting ? ( ) : ( - - - + )} +
) }; From 7365828b6688d3b4dd9292c65ccfec95f4da4f40 Mon Sep 17 00:00:00 2001 From: verkhohliad Date: Fri, 30 Aug 2024 08:16:02 +0100 Subject: [PATCH 15/22] fix: recalculate epoch and waiting status for switching between chains for shutter timer --- src/shared/ShutterTimer/ShutterTimer.tsx | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/shared/ShutterTimer/ShutterTimer.tsx b/src/shared/ShutterTimer/ShutterTimer.tsx index 663154a..dbeefb1 100644 --- a/src/shared/ShutterTimer/ShutterTimer.tsx +++ b/src/shared/ShutterTimer/ShutterTimer.tsx @@ -61,6 +61,11 @@ export const ShutterTimer = () => { // console.log({ shutteredValidatorIndexes, dutiesProposer, currentEpoch, matches }); + useEffect(() => { + setCurrentEpoch(getEpoch(chain.genesisTime)); + setIsWaiting(false); + }, [chain]); + useEffect(() => { if (!dutiesProposer || !matches) return; From c6d44d4dcc279f118d7552612bddccf041e8b6dc Mon Sep 17 00:00:00 2001 From: verkhohliad Date: Fri, 30 Aug 2024 08:17:43 +0100 Subject: [PATCH 16/22] patch: add .nvmrc file --- .nvmrc | 1 + 1 file changed, 1 insertion(+) create mode 100644 .nvmrc diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000..510c921 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +22.3.0 \ No newline at end of file From eb440eee71fb9c734b3eb2e3801ff125066b566a Mon Sep 17 00:00:00 2001 From: verkhohliad Date: Fri, 30 Aug 2024 08:42:14 +0100 Subject: [PATCH 17/22] chore: setup prettier, commitlint conventional, husky, lint-staged, remove firebase config --- .commitlintrc.json | 3 + .husky/pre-commit | 1 + .prettierignore | 41 + .prettierrc.js | 7 + firebase.json | 17 - package-lock.json | 2015 ++++++++++++++++++++++++++++++++++++++++++-- package.json | 14 +- 7 files changed, 2027 insertions(+), 71 deletions(-) create mode 100644 .commitlintrc.json create mode 100755 .husky/pre-commit create mode 100644 .prettierignore create mode 100644 .prettierrc.js delete mode 100644 firebase.json diff --git a/.commitlintrc.json b/.commitlintrc.json new file mode 100644 index 0000000..c30e5a9 --- /dev/null +++ b/.commitlintrc.json @@ -0,0 +1,3 @@ +{ + "extends": ["@commitlint/config-conventional"] +} diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100755 index 0000000..2312dc5 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1 @@ +npx lint-staged diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..272ebe0 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,41 @@ +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build +/dist + +# misc +.DS_Store +*.d.ts +.eslintrc.js +.eslintignore +.prettierrc.js +.prettierignore +tsconfig.json +next.config.js + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# local env files +.env +.env.local +.env.development.local +.env.test.local +.env.production.local + +# Files generated by next-on-netlify command +/out_publish/ +/out_functions/ \ No newline at end of file diff --git a/.prettierrc.js b/.prettierrc.js new file mode 100644 index 0000000..c709800 --- /dev/null +++ b/.prettierrc.js @@ -0,0 +1,7 @@ +module.exports = { + bracketSpacing: true, + printWidth: 100, + semi: true, + singleQuote: true, + trailingComma: 'all', +} diff --git a/firebase.json b/firebase.json deleted file mode 100644 index 48ec05e..0000000 --- a/firebase.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "hosting": { - "site": "gnosis-shutter", - "public": "dist", - "ignore": [ - "firebase.json", - "**/.*", - "**/node_modules/**" - ], - "rewrites": [ - { - "source": "**", - "destination": "/index.html" - } - ] - } -} diff --git a/package-lock.json b/package-lock.json index 318829b..44b5213 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,12 +9,17 @@ "version": "0.0.0", "dependencies": { "@apollo/client": "^3.11.1", + "@commitlint/cli": "^19.4.1", + "@commitlint/config-conventional": "^19.4.1", "@nextui-org/react": "^2.3.6", "@tanstack/react-query": "^5.45.1", "@web3modal/wagmi": "^5.0.6", "ethers": "^5.7.2", "framer-motion": "^11.2.6", + "husky": "^9.1.5", + "lint-staged": "^15.2.9", "lodash": "^4.17.21", + "prettier": "^3.3.3", "react": "^18.3.1", "react-dom": "^18.3.1", "sonner": "^1.5.0", @@ -2219,6 +2224,944 @@ "sha.js": "^2.4.11" } }, + "node_modules/@commitlint/cli": { + "version": "19.4.1", + "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-19.4.1.tgz", + "integrity": "sha512-EerFVII3ZcnhXsDT9VePyIdCJoh3jEzygN1L37MjQXgPfGS6fJTWL/KHClVMod1d8w94lFC3l4Vh/y5ysVAz2A==", + "license": "MIT", + "dependencies": { + "@commitlint/format": "^19.3.0", + "@commitlint/lint": "^19.4.1", + "@commitlint/load": "^19.4.0", + "@commitlint/read": "^19.4.0", + "@commitlint/types": "^19.0.3", + "execa": "^8.0.1", + "yargs": "^17.0.0" + }, + "bin": { + "commitlint": "cli.js" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@commitlint/cli/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@commitlint/cli/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@commitlint/cli/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/@commitlint/cli/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/@commitlint/cli/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/@commitlint/cli/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/cli/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/@commitlint/cli/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/cli/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/cli/node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/cli/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "license": "MIT", + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/cli/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/cli/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@commitlint/cli/node_modules/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==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/cli/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@commitlint/cli/node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/@commitlint/cli/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "license": "MIT", + "dependencies": { + "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" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@commitlint/cli/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==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/@commitlint/config-conventional": { + "version": "19.4.1", + "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-19.4.1.tgz", + "integrity": "sha512-D5S5T7ilI5roybWGc8X35OBlRXLAwuTseH1ro0XgqkOWrhZU8yOwBOslrNmSDlTXhXLq8cnfhQyC42qaUCzlXA==", + "license": "MIT", + "dependencies": { + "@commitlint/types": "^19.0.3", + "conventional-changelog-conventionalcommits": "^7.0.2" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/config-validator": { + "version": "19.0.3", + "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-19.0.3.tgz", + "integrity": "sha512-2D3r4PKjoo59zBc2auodrSCaUnCSALCx54yveOFwwP/i2kfEAQrygwOleFWswLqK0UL/F9r07MFi5ev2ohyM4Q==", + "license": "MIT", + "dependencies": { + "@commitlint/types": "^19.0.3", + "ajv": "^8.11.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/config-validator/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@commitlint/config-validator/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/@commitlint/ensure": { + "version": "19.0.3", + "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-19.0.3.tgz", + "integrity": "sha512-SZEpa/VvBLoT+EFZVb91YWbmaZ/9rPH3ESrINOl0HD2kMYsjvl0tF7nMHh0EpTcv4+gTtZBAe1y/SS6/OhfZzQ==", + "license": "MIT", + "dependencies": { + "@commitlint/types": "^19.0.3", + "lodash.camelcase": "^4.3.0", + "lodash.kebabcase": "^4.1.1", + "lodash.snakecase": "^4.1.1", + "lodash.startcase": "^4.4.0", + "lodash.upperfirst": "^4.3.1" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/execute-rule": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-19.0.0.tgz", + "integrity": "sha512-mtsdpY1qyWgAO/iOK0L6gSGeR7GFcdW7tIjcNFxcWkfLDF5qVbPHKuGATFqRMsxcO8OUKNj0+3WOHB7EHm4Jdw==", + "license": "MIT", + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/format": { + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-19.3.0.tgz", + "integrity": "sha512-luguk5/aF68HiF4H23ACAfk8qS8AHxl4LLN5oxPc24H+2+JRPsNr1OS3Gaea0CrH7PKhArBMKBz5RX9sA5NtTg==", + "license": "MIT", + "dependencies": { + "@commitlint/types": "^19.0.3", + "chalk": "^5.3.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/format/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@commitlint/is-ignored": { + "version": "19.2.2", + "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-19.2.2.tgz", + "integrity": "sha512-eNX54oXMVxncORywF4ZPFtJoBm3Tvp111tg1xf4zWXGfhBPKpfKG6R+G3G4v5CPlRROXpAOpQ3HMhA9n1Tck1g==", + "license": "MIT", + "dependencies": { + "@commitlint/types": "^19.0.3", + "semver": "^7.6.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/lint": { + "version": "19.4.1", + "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-19.4.1.tgz", + "integrity": "sha512-Ws4YVAZ0jACTv6VThumITC1I5AG0UyXMGua3qcf55JmXIXm/ejfaVKykrqx7RyZOACKVAs8uDRIsEsi87JZ3+Q==", + "license": "MIT", + "dependencies": { + "@commitlint/is-ignored": "^19.2.2", + "@commitlint/parse": "^19.0.3", + "@commitlint/rules": "^19.4.1", + "@commitlint/types": "^19.0.3" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/load": { + "version": "19.4.0", + "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-19.4.0.tgz", + "integrity": "sha512-I4lCWaEZYQJ1y+Y+gdvbGAx9pYPavqZAZ3/7/8BpWh+QjscAn8AjsUpLV2PycBsEx7gupq5gM4BViV9xwTIJuw==", + "license": "MIT", + "dependencies": { + "@commitlint/config-validator": "^19.0.3", + "@commitlint/execute-rule": "^19.0.0", + "@commitlint/resolve-extends": "^19.1.0", + "@commitlint/types": "^19.0.3", + "chalk": "^5.3.0", + "cosmiconfig": "^9.0.0", + "cosmiconfig-typescript-loader": "^5.0.0", + "lodash.isplainobject": "^4.0.6", + "lodash.merge": "^4.6.2", + "lodash.uniq": "^4.5.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/load/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@commitlint/load/node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@commitlint/load/node_modules/cosmiconfig-typescript-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-5.0.0.tgz", + "integrity": "sha512-+8cK7jRAReYkMwMiG+bxhcNKiHJDM6bR9FD/nGBXOWdMLuYawjF5cGrtLilJ+LGd3ZjCXnJjR5DkfWPoIVlqJA==", + "license": "MIT", + "dependencies": { + "jiti": "^1.19.1" + }, + "engines": { + "node": ">=v16" + }, + "peerDependencies": { + "@types/node": "*", + "cosmiconfig": ">=8.2", + "typescript": ">=4" + } + }, + "node_modules/@commitlint/load/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==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/message": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-19.0.0.tgz", + "integrity": "sha512-c9czf6lU+9oF9gVVa2lmKaOARJvt4soRsVmbR7Njwp9FpbBgste5i7l/2l5o8MmbwGh4yE1snfnsy2qyA2r/Fw==", + "license": "MIT", + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/parse": { + "version": "19.0.3", + "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-19.0.3.tgz", + "integrity": "sha512-Il+tNyOb8VDxN3P6XoBBwWJtKKGzHlitEuXA5BP6ir/3loWlsSqDr5aecl6hZcC/spjq4pHqNh0qPlfeWu38QA==", + "license": "MIT", + "dependencies": { + "@commitlint/types": "^19.0.3", + "conventional-changelog-angular": "^7.0.0", + "conventional-commits-parser": "^5.0.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/read": { + "version": "19.4.0", + "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-19.4.0.tgz", + "integrity": "sha512-r95jLOEZzKDakXtnQub+zR3xjdnrl2XzerPwm7ch1/cc5JGq04tyaNpa6ty0CRCWdVrk4CZHhqHozb8yZwy2+g==", + "license": "MIT", + "dependencies": { + "@commitlint/top-level": "^19.0.0", + "@commitlint/types": "^19.0.3", + "execa": "^8.0.1", + "git-raw-commits": "^4.0.0", + "minimist": "^1.2.8" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/read/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/@commitlint/read/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/read/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/@commitlint/read/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/read/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/read/node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/read/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "license": "MIT", + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/read/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/read/node_modules/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==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/resolve-extends": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-19.1.0.tgz", + "integrity": "sha512-z2riI+8G3CET5CPgXJPlzftH+RiWYLMYv4C9tSLdLXdr6pBNimSKukYP9MS27ejmscqCTVA4almdLh0ODD2KYg==", + "license": "MIT", + "dependencies": { + "@commitlint/config-validator": "^19.0.3", + "@commitlint/types": "^19.0.3", + "global-directory": "^4.0.1", + "import-meta-resolve": "^4.0.0", + "lodash.mergewith": "^4.6.2", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/resolve-extends/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@commitlint/rules": { + "version": "19.4.1", + "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-19.4.1.tgz", + "integrity": "sha512-AgctfzAONoVxmxOXRyxXIq7xEPrd7lK/60h2egp9bgGUMZK9v0+YqLOA+TH+KqCa63ZoCr8owP2YxoSSu7IgnQ==", + "license": "MIT", + "dependencies": { + "@commitlint/ensure": "^19.0.3", + "@commitlint/message": "^19.0.0", + "@commitlint/to-lines": "^19.0.0", + "@commitlint/types": "^19.0.3", + "execa": "^8.0.1" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/rules/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/@commitlint/rules/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/rules/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/@commitlint/rules/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/rules/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/rules/node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/rules/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "license": "MIT", + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/rules/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/rules/node_modules/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==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/to-lines": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-19.0.0.tgz", + "integrity": "sha512-vkxWo+VQU5wFhiP9Ub9Sre0FYe019JxFikrALVoD5UGa8/t3yOJEpEhxC5xKiENKKhUkTpEItMTRAjHw2SCpZw==", + "license": "MIT", + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/top-level": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-19.0.0.tgz", + "integrity": "sha512-KKjShd6u1aMGNkCkaX4aG1jOGdn7f8ZI8TR1VEuNqUOjWTOdcDSsmglinglJ18JTjuBX5I1PtjrhQCRcixRVFQ==", + "license": "MIT", + "dependencies": { + "find-up": "^7.0.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/top-level/node_modules/find-up": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-7.0.0.tgz", + "integrity": "sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==", + "license": "MIT", + "dependencies": { + "locate-path": "^7.2.0", + "path-exists": "^5.0.0", + "unicorn-magic": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/top-level/node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "license": "MIT", + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/top-level/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/top-level/node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "license": "MIT", + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/top-level/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/@commitlint/top-level/node_modules/yocto-queue": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", + "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/types": { + "version": "19.0.3", + "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-19.0.3.tgz", + "integrity": "sha512-tpyc+7i6bPG9mvaBbtKUeghfyZSDgWquIDfMgqYtTbmZ9Y9VzEm2je9EYcQ0aoz5o7NvGS+rcDec93yO08MHYA==", + "license": "MIT", + "dependencies": { + "@types/conventional-commits-parser": "^5.0.0", + "chalk": "^5.3.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/types/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/@esbuild/aix-ppc64": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", @@ -9267,6 +10210,15 @@ "@babel/types": "^7.20.7" } }, + "node_modules/@types/conventional-commits-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz", + "integrity": "sha512-loB369iXNmAZglwWATL+WRe+CRMmmBPtpolYzIebFaX4YA3x+BEfLqhUAV9WanycKI3TG1IMr5bMJDajDKLlUQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/debug": { "version": "4.1.12", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", @@ -10587,6 +11539,21 @@ "integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==", "peer": true }, + "node_modules/ansi-escapes": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", + "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", + "license": "MIT", + "dependencies": { + "environment": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/ansi-fragments": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz", @@ -10669,8 +11636,13 @@ "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", + "license": "MIT" }, "node_modules/array-union": { "version": "2.1.0", @@ -11109,7 +12081,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, "engines": { "node": ">=6" } @@ -11290,6 +12261,112 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/cli-truncate": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", + "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", + "license": "MIT", + "dependencies": { + "slice-ansi": "^5.0.0", + "string-width": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/cli-truncate/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/cli-truncate/node_modules/emoji-regex": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", + "license": "MIT" + }, + "node_modules/cli-truncate/node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate/node_modules/slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/cli-truncate/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/clipboardy": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-4.0.0.tgz", @@ -11616,6 +12693,16 @@ "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", "peer": true }, + "node_modules/compare-func": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "license": "MIT", + "dependencies": { + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" + } + }, "node_modules/compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", @@ -11720,6 +12807,48 @@ "node": "^14.18.0 || >=16.10.0" } }, + "node_modules/conventional-changelog-angular": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz", + "integrity": "sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==", + "license": "ISC", + "dependencies": { + "compare-func": "^2.0.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/conventional-changelog-conventionalcommits": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-7.0.2.tgz", + "integrity": "sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==", + "license": "ISC", + "dependencies": { + "compare-func": "^2.0.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/conventional-commits-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz", + "integrity": "sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==", + "license": "MIT", + "dependencies": { + "is-text-path": "^2.0.0", + "JSONStream": "^1.3.5", + "meow": "^12.0.1", + "split2": "^4.0.0" + }, + "bin": { + "conventional-commits-parser": "cli.mjs" + }, + "engines": { + "node": ">=16" + } + }, "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", @@ -11869,6 +12998,18 @@ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", "devOptional": true }, + "node_modules/dargs": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-8.1.0.tgz", + "integrity": "sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/date-fns": { "version": "2.30.0", "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", @@ -11890,9 +13031,10 @@ "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==" }, "node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -12066,6 +13208,18 @@ "node": ">=6.0.0" } }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "license": "MIT", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/duplexify": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz", @@ -12169,6 +13323,15 @@ "node": ">=10.0.0" } }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/envinfo": { "version": "7.13.0", "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz", @@ -12181,11 +13344,22 @@ "node": ">=4" } }, + "node_modules/environment": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", + "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "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==", - "peer": true, "dependencies": { "is-arrayish": "^0.2.1" } @@ -12193,8 +13367,7 @@ "node_modules/error-ex/node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "peer": true + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" }, "node_modules/error-stack-parser": { "version": "2.1.4", @@ -12863,6 +14036,12 @@ "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" }, + "node_modules/fast-uri": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.1.tgz", + "integrity": "sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==", + "license": "MIT" + }, "node_modules/fast-xml-parser": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.0.tgz", @@ -13171,6 +14350,18 @@ "node": "6.* || 8.* || >= 10.*" } }, + "node_modules/get-east-asian-width": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz", + "integrity": "sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/get-intrinsic": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", @@ -13214,6 +14405,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/git-raw-commits": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-4.0.0.tgz", + "integrity": "sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==", + "license": "MIT", + "dependencies": { + "dargs": "^8.0.0", + "meow": "^12.0.1", + "split2": "^4.0.0" + }, + "bin": { + "git-raw-commits": "cli.mjs" + }, + "engines": { + "node": ">=16" + } + }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -13265,6 +14473,21 @@ "node": "*" } }, + "node_modules/global-directory": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz", + "integrity": "sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==", + "license": "MIT", + "dependencies": { + "ini": "4.1.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", @@ -13541,6 +14764,21 @@ "node": ">=10.17.0" } }, + "node_modules/husky": { + "version": "9.1.5", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.5.tgz", + "integrity": "sha512-rowAVRUBfI0b4+niA4SJMhfQwc107VLkBUgEYYAOQAbqDCnra1nYh83hF/MDmhYs9t9n1E3DuKOrs2LYNC+0Ag==", + "license": "MIT", + "bin": { + "husky": "bin.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" + } + }, "node_modules/i18next": { "version": "22.5.1", "resolved": "https://registry.npmjs.org/i18next/-/i18next-22.5.1.tgz", @@ -13623,7 +14861,6 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -13635,6 +14872,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/import-meta-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", + "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -13658,6 +14905,15 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, + "node_modules/ini": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", + "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/intl-messageformat": { "version": "10.5.14", "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.5.14.tgz", @@ -13853,6 +15109,15 @@ "node": ">=0.12.0" } }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", @@ -13880,9 +15145,21 @@ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-text-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz", + "integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==", + "license": "MIT", + "dependencies": { + "text-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/is-typed-array": { @@ -14449,7 +15726,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, "dependencies": { "argparse": "^2.0.1" }, @@ -14595,6 +15871,12 @@ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "peer": true }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "license": "MIT" + }, "node_modules/json-rpc-engine": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/json-rpc-engine/-/json-rpc-engine-6.1.0.tgz", @@ -14649,6 +15931,31 @@ "graceful-fs": "^4.1.6" } }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "engines": [ + "node >= 0.2.0" + ], + "license": "MIT" + }, + "node_modules/JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "license": "(MIT OR Apache-2.0)", + "dependencies": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + }, + "bin": { + "JSONStream": "bin.js" + }, + "engines": { + "node": "*" + } + }, "node_modules/keccak": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.4.tgz", @@ -14750,38 +16057,322 @@ "node": ">=10" } }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" - }, - "node_modules/listhen": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/listhen/-/listhen-1.7.2.tgz", - "integrity": "sha512-7/HamOm5YD9Wb7CFgAZkKgVPA96WwhcTQoqtm2VTZGVbVVn3IWKRBTgrU7cchA3Q8k9iCsG8Osoi9GX4JsGM9g==", + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "node_modules/lint-staged": { + "version": "15.2.9", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.2.9.tgz", + "integrity": "sha512-BZAt8Lk3sEnxw7tfxM7jeZlPRuT4M68O0/CwZhhaw6eeWu0Lz5eERE3m386InivXB64fp/mDID452h48tvKlRQ==", + "license": "MIT", + "dependencies": { + "chalk": "~5.3.0", + "commander": "~12.1.0", + "debug": "~4.3.6", + "execa": "~8.0.1", + "lilconfig": "~3.1.2", + "listr2": "~8.2.4", + "micromatch": "~4.0.7", + "pidtree": "~0.6.0", + "string-argv": "~0.3.2", + "yaml": "~2.5.0" + }, + "bin": { + "lint-staged": "bin/lint-staged.js" + }, + "engines": { + "node": ">=18.12.0" + }, + "funding": { + "url": "https://opencollective.com/lint-staged" + } + }, + "node_modules/lint-staged/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/lint-staged/node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/lint-staged/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/lint-staged/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/lint-staged/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/lilconfig": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", + "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/lint-staged/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "license": "MIT", + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/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==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/listhen": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/listhen/-/listhen-1.7.2.tgz", + "integrity": "sha512-7/HamOm5YD9Wb7CFgAZkKgVPA96WwhcTQoqtm2VTZGVbVVn3IWKRBTgrU7cchA3Q8k9iCsG8Osoi9GX4JsGM9g==", + "dependencies": { + "@parcel/watcher": "^2.4.1", + "@parcel/watcher-wasm": "^2.4.1", + "citty": "^0.1.6", + "clipboardy": "^4.0.0", + "consola": "^3.2.3", + "crossws": "^0.2.0", + "defu": "^6.1.4", + "get-port-please": "^3.1.2", + "h3": "^1.10.2", + "http-shutdown": "^1.2.2", + "jiti": "^1.21.0", + "mlly": "^1.6.1", + "node-forge": "^1.3.1", + "pathe": "^1.1.2", + "std-env": "^3.7.0", + "ufo": "^1.4.0", + "untun": "^0.1.3", + "uqr": "^0.1.2" + }, + "bin": { + "listen": "bin/listhen.mjs", + "listhen": "bin/listhen.mjs" + } + }, + "node_modules/listr2": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.2.4.tgz", + "integrity": "sha512-opevsywziHd3zHCVQGAj8zu+Z3yHNkkoYhWIGnq54RrCVwLz0MozotJEDnKsIBLvkfLGN6BLOyAeRrYI0pKA4g==", + "license": "MIT", + "dependencies": { + "cli-truncate": "^4.0.0", + "colorette": "^2.0.20", + "eventemitter3": "^5.0.1", + "log-update": "^6.1.0", + "rfdc": "^1.4.1", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/listr2/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/listr2/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/listr2/node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "license": "MIT" + }, + "node_modules/listr2/node_modules/emoji-regex": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", + "license": "MIT" + }, + "node_modules/listr2/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/listr2/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/listr2/node_modules/wrap-ansi": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", + "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", + "license": "MIT", "dependencies": { - "@parcel/watcher": "^2.4.1", - "@parcel/watcher-wasm": "^2.4.1", - "citty": "^0.1.6", - "clipboardy": "^4.0.0", - "consola": "^3.2.3", - "crossws": "^0.2.0", - "defu": "^6.1.4", - "get-port-please": "^3.1.2", - "h3": "^1.10.2", - "http-shutdown": "^1.2.2", - "jiti": "^1.21.0", - "mlly": "^1.6.1", - "node-forge": "^1.3.1", - "pathe": "^1.1.2", - "std-env": "^3.7.0", - "ufo": "^1.4.0", - "untun": "^0.1.3", - "uqr": "^0.1.2" + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" }, - "bin": { - "listen": "bin/listhen.mjs", - "listhen": "bin/listhen.mjs" + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, "node_modules/lit": { @@ -14831,6 +16422,12 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "license": "MIT" + }, "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -14851,6 +16448,12 @@ "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "license": "MIT" + }, "node_modules/lodash.kebabcase": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", @@ -14864,20 +16467,49 @@ "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, + "node_modules/lodash.mergewith": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", + "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==", + "license": "MIT" }, "node_modules/lodash.omit": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz", "integrity": "sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg==" }, + "node_modules/lodash.snakecase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", + "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==", + "license": "MIT" + }, + "node_modules/lodash.startcase": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz", + "integrity": "sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==", + "license": "MIT" + }, "node_modules/lodash.throttle": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==", "peer": true }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "license": "MIT" + }, + "node_modules/lodash.upperfirst": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz", + "integrity": "sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==", + "license": "MIT" + }, "node_modules/log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", @@ -14964,6 +16596,181 @@ "node": ">=8" } }, + "node_modules/log-update": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", + "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", + "license": "MIT", + "dependencies": { + "ansi-escapes": "^7.0.0", + "cli-cursor": "^5.0.0", + "slice-ansi": "^7.1.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/log-update/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-update/node_modules/cli-cursor": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", + "license": "MIT", + "dependencies": { + "restore-cursor": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/emoji-regex": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", + "license": "MIT" + }, + "node_modules/log-update/node_modules/is-fullwidth-code-point": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz", + "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==", + "license": "MIT", + "dependencies": { + "get-east-asian-width": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/onetime": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", + "license": "MIT", + "dependencies": { + "mimic-function": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/restore-cursor": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", + "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", + "license": "MIT", + "dependencies": { + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/slice-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz", + "integrity": "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/log-update/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", + "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/logkitty": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz", @@ -15049,6 +16856,18 @@ "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==", "peer": true }, + "node_modules/meow": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", + "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", + "license": "MIT", + "engines": { + "node": ">=16.10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -15665,6 +17484,18 @@ "node": ">=6" } }, + "node_modules/mimic-function": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", + "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", @@ -15693,7 +17524,6 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "peer": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -16439,7 +18269,6 @@ "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, "dependencies": { "callsites": "^3.0.0" }, @@ -16551,6 +18380,18 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/pidtree": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", + "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", + "license": "MIT", + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", @@ -16868,6 +18709,21 @@ "node": ">= 0.8.0" } }, + "node_modules/prettier": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, "node_modules/pretty-format": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", @@ -17528,6 +19384,15 @@ "node": ">=0.10.0" } }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/require-main-filename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", @@ -17553,7 +19418,6 @@ "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, "engines": { "node": ">=4" } @@ -17595,6 +19459,12 @@ "node": ">=0.10.0" } }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "license": "MIT" + }, "node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -18313,6 +20183,15 @@ "safe-buffer": "~5.2.0" } }, + "node_modules/string-argv": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", + "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", + "license": "MIT", + "engines": { + "node": ">=0.6.19" + } + }, "node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", @@ -18645,6 +20524,18 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "peer": true }, + "node_modules/text-extensions": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-2.4.0.tgz", + "integrity": "sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -18684,6 +20575,12 @@ "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", "peer": true }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "license": "MIT" + }, "node_modules/through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", @@ -18834,7 +20731,6 @@ "version": "5.5.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.2.tgz", "integrity": "sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==", - "devOptional": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -18934,6 +20830,18 @@ "node": ">=4" } }, + "node_modules/unicorn-magic": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", + "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", @@ -19699,9 +21607,10 @@ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, "node_modules/yaml": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz", - "integrity": "sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.0.tgz", + "integrity": "sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==", + "license": "ISC", "bin": { "yaml": "bin.mjs" }, diff --git a/package.json b/package.json index bbecd07..d4b58fb 100644 --- a/package.json +++ b/package.json @@ -8,16 +8,21 @@ "build": "tsc -b && vite build", "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", "preview": "vite preview", - "deploy": "npm run build & firebase deploy --only hosting:gnosis-shutter" + "prepare": "husky" }, "dependencies": { "@apollo/client": "^3.11.1", + "@commitlint/cli": "^19.4.1", + "@commitlint/config-conventional": "^19.4.1", "@nextui-org/react": "^2.3.6", "@tanstack/react-query": "^5.45.1", "@web3modal/wagmi": "^5.0.6", "ethers": "^5.7.2", "framer-motion": "^11.2.6", + "husky": "^9.1.5", + "lint-staged": "^15.2.9", "lodash": "^4.17.21", + "prettier": "^3.3.3", "react": "^18.3.1", "react-dom": "^18.3.1", "sonner": "^1.5.0", @@ -39,5 +44,12 @@ "tailwindcss": "^3.4.4", "typescript": "^5.2.2", "vite": "^5.3.1" + }, + "lint-staged": { + "*.{js,jsx,ts,tsx}": [ + "eslint --cache --fix", + "prettier --write", + "bash -c tsc" + ] } } From f6559ee5320b6ec9ae65425fd6fcc42253a26546 Mon Sep 17 00:00:00 2001 From: verkhohliad Date: Fri, 30 Aug 2024 09:15:56 +0100 Subject: [PATCH 18/22] chore: run eslint fix with prettier --- .eslintrc.cjs | 11 +- .gitignore | 4 +- package-lock.json | 1410 ++++++- package.json | 12 +- postcss.config.js | 2 +- public/blst/blst.js | 3512 +++++++++-------- public/blst/blst_bind.js | 1411 ++++--- public/blst/null_bind.js | 21 +- public/blst/runnable.js | 26 +- src/App.tsx | 4 +- src/abis/keyBroadcastABI.ts | 20 +- src/abis/keyperSetManagerABI.ts | 18 +- src/abis/sequencerABI.ts | 20 +- src/abis/validatorRegistryABI.ts | 114 +- src/components/Connect.tsx | 8 +- src/components/Header.tsx | 2 +- src/components/Select.tsx | 13 +- src/constants/chains.ts | 56 +- src/constants/config.ts | 2 +- src/hooks/useCreateWalletClient.ts | 16 +- src/hooks/useShutterEncryption.ts | 51 +- src/hooks/useSignTransaction.ts | 12 +- src/hooks/useTokenBalance.ts | 17 +- src/main.tsx | 14 +- src/pages/MainPage/AdvancedForm.tsx | 70 +- src/pages/MainPage/FAQAccordion.tsx | 58 +- src/pages/MainPage/FormsWrapper.tsx | 22 +- src/pages/MainPage/MainPage.tsx | 6 +- src/pages/MainPage/ProgressInfoCard.tsx | 42 +- src/pages/MainPage/SubmitButton.tsx | 40 +- src/pages/MainPage/TransferForm.tsx | 42 +- src/pages/MainPage/index.ts | 2 +- src/providers/GraphQLProvider.tsx | 8 +- src/providers/Web3ModalProvider.tsx | 6 +- src/services/shutter/blst.hpp.ts | 24 +- src/services/shutter/encryptDataBlst.ts | 60 +- src/shared/ShutterTimer/ShutterTimer.tsx | 68 +- .../ShutterTimer/ValidatorRegistryQL.ts | 19 +- src/shared/ShutterTimer/index.ts | 2 +- .../ShutterTimer/useFetchDutiesProposer.ts | 29 +- .../useGetShutterValidatorIndexes.ts | 11 +- .../useGetValidatorRegistryLogs.ts | 20 +- src/stores/createSelectors.ts | 14 +- src/stores/useValidatorIndexesStore.ts | 96 +- src/utils/eth.ts | 10 +- src/utils/mappers.ts | 3 +- tailwind.config.js | 20 +- .../src/validator-registry.ts | 20 +- .../tests/validator-registry-utils.ts | 20 +- .../tests/validator-registry.test.ts | 58 +- .../src/validator-registry.ts | 14 +- .../tests/validator-registry-utils.ts | 20 +- .../tests/validator-registry.test.ts | 58 +- vite.config.ts | 8 +- 54 files changed, 4845 insertions(+), 2801 deletions(-) diff --git a/.eslintrc.cjs b/.eslintrc.cjs index bb62692..ae99373 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -5,15 +5,22 @@ module.exports = { 'eslint:recommended', 'plugin:@typescript-eslint/recommended', 'plugin:react-hooks/recommended', + 'prettier', ], - ignorePatterns: ['dist', '.eslintrc.cjs'], + ignorePatterns: ['dist', '.eslintrc.cjs', 'thegraph', 'public'], parser: '@typescript-eslint/parser', - plugins: ['react-refresh'], + plugins: [ + 'react-refresh', + 'react', + '@typescript-eslint', + 'prettier' + ], rules: { 'react-refresh/only-export-components': [ 'warn', { allowConstantExport: true }, ], '@typescript-eslint/no-explicit-any': 'off', + "prettier/prettier": ["error"], }, } diff --git a/.gitignore b/.gitignore index b41f7fd..3cf3720 100644 --- a/.gitignore +++ b/.gitignore @@ -25,4 +25,6 @@ dist-ssr .env .vite .firebaserc -.firebase \ No newline at end of file +.firebase + +--fix \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 44b5213..87d141c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -34,6 +34,9 @@ "@vitejs/plugin-react": "^4.3.1", "autoprefixer": "^10.4.19", "eslint": "^8.57.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.2.1", + "eslint-plugin-react": "^7.35.0", "eslint-plugin-react-hooks": "^4.6.2", "eslint-plugin-react-refresh": "^0.4.7", "graphql": "^16.9.0", @@ -7132,6 +7135,19 @@ "node": ">=14" } }, + "node_modules/@pkgr/core": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", + "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, "node_modules/@react-aria/breadcrumbs": { "version": "3.5.13", "resolved": "https://registry.npmjs.org/@react-aria/breadcrumbs/-/breadcrumbs-3.5.13.tgz", @@ -11638,12 +11654,50 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array-ify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", "license": "MIT" }, + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", @@ -11653,6 +11707,105 @@ "node": ">=8" } }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", @@ -13010,6 +13163,60 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/date-fns": { "version": "2.30.0", "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", @@ -13113,6 +13320,24 @@ "node": ">=8" } }, + "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", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/defu": { "version": "6.1.4", "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", @@ -13391,6 +13616,67 @@ "node": ">= 0.8" } }, + "node_modules/es-abstract": { + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/es-define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", @@ -13410,6 +13696,88 @@ "node": ">= 0.4" } }, + "node_modules/es-iterator-helpers": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz", + "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "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", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/esbuild": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", @@ -13525,6 +13893,83 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint-config-prettier": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", + "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", + "dev": true, + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz", + "integrity": "sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.9.1" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": "*", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.35.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.35.0.tgz", + "integrity": "sha512-v501SSMOWv8gerHkk+IIQBkcGRGrO2nfybfj5pLxuJNFTPxxA3PSryhXTK+9pNbtkggheDdsC0E9Q8CuPk6JKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.2", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.19", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.8", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.0", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.11", + "string.prototype.repeat": "^1.0.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + } + }, "node_modules/eslint-plugin-react-hooks": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", @@ -13546,8 +13991,73 @@ "eslint": ">=7" } }, - "node_modules/eslint-scope": { - "version": "7.2.2", + "node_modules/eslint-plugin-react/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/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, @@ -13985,6 +14495,13 @@ "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", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true, + "license": "Apache-2.0" + }, "node_modules/fast-glob": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", @@ -14326,6 +14843,35 @@ "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", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/futoin-hkdf": { "version": "1.5.3", "resolved": "https://registry.npmjs.org/futoin-hkdf/-/futoin-hkdf-1.5.3.tgz", @@ -14405,6 +14951,24 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/git-raw-commits": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-4.0.0.tgz", @@ -14496,6 +15060,23 @@ "node": ">=4" } }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/globby": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", @@ -14580,6 +15161,16 @@ "unenv": "^1.9.0" } }, + "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", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -14914,6 +15505,21 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/intl-messageformat": { "version": "10.5.14", "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.5.14.tgz", @@ -14956,11 +15562,57 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-arrayish": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -14972,6 +15624,23 @@ "node": ">=8" } }, + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", @@ -14997,6 +15666,38 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-directory": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", @@ -15028,6 +15729,19 @@ "node": ">=0.10.0" } }, + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -15101,6 +15815,32 @@ "node": ">=8" } }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -15109,6 +15849,22 @@ "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-obj": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", @@ -15139,6 +15895,52 @@ "node": ">=0.10.0" } }, + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -15150,6 +15952,38 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-text-path": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz", @@ -15188,6 +16022,49 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", @@ -15255,6 +16132,20 @@ "ws": "*" } }, + "node_modules/iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + } + }, "node_modules/jackspeak": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.0.tgz", @@ -15956,6 +16847,22 @@ "node": "*" } }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, "node_modules/keccak": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.4.tgz", @@ -18010,6 +18917,100 @@ "node": ">= 6" } }, + "node_modules/object-inspect": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "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", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/ofetch": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.3.4.tgz", @@ -18724,6 +19725,19 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, + "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" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/pretty-format": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", @@ -19285,7 +20299,29 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "peer": true, "engines": { - "node": ">=0.10.0" + "node": ">=0.10.0" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", + "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.1", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/regenerate": { @@ -19320,6 +20356,25 @@ "@babel/runtime": "^7.8.4" } }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/regexpu-core": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", @@ -19672,6 +20727,32 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-array-concat/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -19691,6 +20772,24 @@ } ] }, + "node_modules/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/safe-stable-stringify": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", @@ -19886,6 +20985,22 @@ "node": ">= 0.4" } }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -19944,6 +21059,25 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/signal-exit": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", @@ -20252,6 +21386,96 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, + "node_modules/string.prototype.matchall": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", + "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "regexp.prototype.flags": "^1.5.2", + "set-function-name": "^2.0.2", + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -20390,6 +21614,23 @@ "node": ">=0.10" } }, + "node_modules/synckit": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.1.tgz", + "integrity": "sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@pkgr/core": "^0.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, "node_modules/system-architecture": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/system-architecture/-/system-architecture-0.1.0.tgz", @@ -20727,6 +21968,83 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/typescript": { "version": "5.5.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.2.tgz", @@ -20752,6 +22070,22 @@ "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", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/uncrypto": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/uncrypto/-/uncrypto-0.1.3.tgz", @@ -21389,6 +22723,76 @@ "node": ">= 8" } }, + "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", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.4.tgz", + "integrity": "sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==", + "dev": true, + "license": "MIT", + "dependencies": { + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/which-module": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", diff --git a/package.json b/package.json index d4b58fb..ea29ef0 100644 --- a/package.json +++ b/package.json @@ -2,11 +2,12 @@ "name": "shutter", "private": true, "version": "0.0.0", - "type": "module", "scripts": { "dev": "vite", "build": "tsc -b && vite build", - "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", + "lint": "eslint . --ext ts,tsx --report-unused-disable-directives", + "lint:fix": "eslint --fix \"./**/*.{js,jsx,ts,tsx}\"", + "format": "prettier --write \"./**/*.{js,jsx,ts,tsx}\"", "preview": "vite preview", "prepare": "husky" }, @@ -37,6 +38,9 @@ "@vitejs/plugin-react": "^4.3.1", "autoprefixer": "^10.4.19", "eslint": "^8.57.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.2.1", + "eslint-plugin-react": "^7.35.0", "eslint-plugin-react-hooks": "^4.6.2", "eslint-plugin-react-refresh": "^0.4.7", "graphql": "^16.9.0", @@ -47,8 +51,8 @@ }, "lint-staged": { "*.{js,jsx,ts,tsx}": [ - "eslint --cache --fix", - "prettier --write", + "npm run lint --cache --fix", + "npm run format", "bash -c tsc" ] } diff --git a/postcss.config.js b/postcss.config.js index 2e7af2b..2aa7205 100644 --- a/postcss.config.js +++ b/postcss.config.js @@ -3,4 +3,4 @@ export default { tailwindcss: {}, autoprefixer: {}, }, -} +}; diff --git a/public/blst/blst.js b/public/blst/blst.js index 78a971e..2c5791e 100644 --- a/public/blst/blst.js +++ b/public/blst/blst.js @@ -22,11 +22,16 @@ var ENVIRONMENT_IS_WEB = typeof window == 'object'; var ENVIRONMENT_IS_WORKER = typeof importScripts == 'function'; // N.b. Electron.js environment is simultaneously a NODE-environment, but // also a web environment. -var ENVIRONMENT_IS_NODE = typeof process == 'object' && typeof process.versions == 'object' && typeof process.versions.node == 'string'; +var ENVIRONMENT_IS_NODE = + typeof process == 'object' && + typeof process.versions == 'object' && + typeof process.versions.node == 'string'; var ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER; if (blst['ENVIRONMENT']) { - throw new Error('blst.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -sENVIRONMENT=web or -sENVIRONMENT=node)'); + throw new Error( + 'blst.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -sENVIRONMENT=web or -sENVIRONMENT=node)', + ); } if (ENVIRONMENT_IS_NODE) { @@ -34,13 +39,11 @@ if (ENVIRONMENT_IS_NODE) { // the require()` function. This is only necessary for multi-environment // builds, `-sENVIRONMENT=node` emits a static import declaration instead. // TODO: Swap all `require()`'s with `import()`'s? - } // --pre-jses are emitted after the blst integration code, so that they can // refer to blst (if they choose; they can also define blst) - // Sometimes an existing blst object exists with properties // meant to overwrite the default module functionality. Here // we collect those properties and reapply _after_ we configure @@ -64,19 +67,23 @@ function locateFile(path) { } // Hooks that are implemented differently in different runtime environments. -var read_, - readAsync, - readBinary; +var read_, readAsync, readBinary; if (ENVIRONMENT_IS_NODE) { - if (typeof process == 'undefined' || !process.release || process.release.name !== 'node') throw new Error('not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)'); + if (typeof process == 'undefined' || !process.release || process.release.name !== 'node') + throw new Error( + 'not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)', + ); var nodeVersion = process.versions.node; var numericVersion = nodeVersion.split('.').slice(0, 3); - numericVersion = (numericVersion[0] * 10000) + (numericVersion[1] * 100) + (numericVersion[2].split('-')[0] * 1); + numericVersion = + numericVersion[0] * 10000 + numericVersion[1] * 100 + numericVersion[2].split('-')[0] * 1; var minVersion = 160000; if (numericVersion < 160000) { - throw new Error('This emscripten-generated code requires node v16.0.0 (detected v' + nodeVersion + ')'); + throw new Error( + 'This emscripten-generated code requires node v16.0.0 (detected v' + nodeVersion + ')', + ); } // These modules will usually be used on Node.js. Load them eagerly to avoid @@ -86,32 +93,32 @@ if (ENVIRONMENT_IS_NODE) { scriptDirectory = __dirname + '/'; -// include: node_shell_read.js -read_ = (filename, binary) => { - // We need to re-wrap `file://` strings to URLs. Normalizing isn't - // necessary in that case, the path should already be absolute. - filename = isFileURI(filename) ? new URL(filename) : nodePath.normalize(filename); - return fs.readFileSync(filename, binary ? undefined : 'utf8'); -}; + // include: node_shell_read.js + read_ = (filename, binary) => { + // We need to re-wrap `file://` strings to URLs. Normalizing isn't + // necessary in that case, the path should already be absolute. + filename = isFileURI(filename) ? new URL(filename) : nodePath.normalize(filename); + return fs.readFileSync(filename, binary ? undefined : 'utf8'); + }; -readBinary = (filename) => { - var ret = read_(filename, true); - if (!ret.buffer) { - ret = new Uint8Array(ret); - } - assert(ret.buffer); - return ret; -}; + readBinary = (filename) => { + var ret = read_(filename, true); + if (!ret.buffer) { + ret = new Uint8Array(ret); + } + assert(ret.buffer); + return ret; + }; -readAsync = (filename, onload, onerror, binary = true) => { - // See the comment in the `read_` function. - filename = isFileURI(filename) ? new URL(filename) : nodePath.normalize(filename); - fs.readFile(filename, binary ? undefined : 'utf8', (err, data) => { - if (err) onerror(err); - else onload(binary ? data.buffer : data); - }); -}; -// end include: node_shell_read.js + readAsync = (filename, onload, onerror, binary = true) => { + // See the comment in the `read_` function. + filename = isFileURI(filename) ? new URL(filename) : nodePath.normalize(filename); + fs.readFile(filename, binary ? undefined : 'utf8', (err, data) => { + if (err) onerror(err); + else onload(binary ? data.buffer : data); + }); + }; + // end include: node_shell_read.js if (!blst['thisProgram'] && process.argv.length > 1) { thisProgram = process.argv[1].replace(/\\/g, '/'); } @@ -133,21 +140,26 @@ readAsync = (filename, onload, onerror, binary = true) => { process.exitCode = status; throw toThrow; }; - -} else -if (ENVIRONMENT_IS_SHELL) { - - if ((typeof process == 'object' && typeof require === 'function') || typeof window == 'object' || typeof importScripts == 'function') throw new Error('not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)'); - -} else +} else if (ENVIRONMENT_IS_SHELL) { + if ( + (typeof process == 'object' && typeof require === 'function') || + typeof window == 'object' || + typeof importScripts == 'function' + ) + throw new Error( + 'not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)', + ); +} // Note that this includes Node.js workers when relevant (pthreads is enabled). // Node.js workers are detected as a combination of ENVIRONMENT_IS_WORKER and // ENVIRONMENT_IS_NODE. -if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) { - if (ENVIRONMENT_IS_WORKER) { // Check worker, not web, since window could be polyfilled +else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) { + if (ENVIRONMENT_IS_WORKER) { + // Check worker, not web, since window could be polyfilled scriptDirectory = self.location.href; - } else if (typeof document != 'undefined' && document.currentScript) { // web + } else if (typeof document != 'undefined' && document.currentScript) { + // web scriptDirectory = document.currentScript.src; } // blob urls look like blob:http://site.com/etc/etc and we cannot infer anything from them. @@ -159,63 +171,69 @@ if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) { if (scriptDirectory.startsWith('blob:')) { scriptDirectory = ''; } else { - scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, '').lastIndexOf('/')+1); + scriptDirectory = scriptDirectory.substr( + 0, + scriptDirectory.replace(/[?#].*/, '').lastIndexOf('/') + 1, + ); } - if (!(typeof window == 'object' || typeof importScripts == 'function')) throw new Error('not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)'); + if (!(typeof window == 'object' || typeof importScripts == 'function')) + throw new Error( + 'not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)', + ); { -// include: web_or_worker_shell_read.js -read_ = (url) => { - var xhr = new XMLHttpRequest(); - xhr.open('GET', url, false); - xhr.send(null); - return xhr.responseText; - } - - if (ENVIRONMENT_IS_WORKER) { - readBinary = (url) => { + // include: web_or_worker_shell_read.js + read_ = (url) => { var xhr = new XMLHttpRequest(); xhr.open('GET', url, false); - xhr.responseType = 'arraybuffer'; xhr.send(null); - return new Uint8Array(/** @type{!ArrayBuffer} */(xhr.response)); + return xhr.responseText; }; - } - readAsync = (url, onload, onerror) => { - // Fetch has some additional restrictions over XHR, like it can't be used on a file:// url. - // See https://github.com/github/fetch/pull/92#issuecomment-140665932 - // Cordova or Electron apps are typically loaded from a file:// url. - // So use XHR on webview if URL is a file URL. - if (isFileURI(url)) { - var xhr = new XMLHttpRequest(); - xhr.open('GET', url, true); - xhr.responseType = 'arraybuffer'; - xhr.onload = () => { - if (xhr.status == 200 || (xhr.status == 0 && xhr.response)) { // file URLs can return 0 - onload(xhr.response); - return; - } - onerror(); + if (ENVIRONMENT_IS_WORKER) { + readBinary = (url) => { + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, false); + xhr.responseType = 'arraybuffer'; + xhr.send(null); + return new Uint8Array(/** @type{!ArrayBuffer} */ (xhr.response)); }; - xhr.onerror = onerror; - xhr.send(null); - return; } - fetch(url, { credentials: 'same-origin' }) - .then((response) => { - if (response.ok) { - return response.arrayBuffer(); + + readAsync = (url, onload, onerror) => { + // Fetch has some additional restrictions over XHR, like it can't be used on a file:// url. + // See https://github.com/github/fetch/pull/92#issuecomment-140665932 + // Cordova or Electron apps are typically loaded from a file:// url. + // So use XHR on webview if URL is a file URL. + if (isFileURI(url)) { + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, true); + xhr.responseType = 'arraybuffer'; + xhr.onload = () => { + if (xhr.status == 200 || (xhr.status == 0 && xhr.response)) { + // file URLs can return 0 + onload(xhr.response); + return; + } + onerror(); + }; + xhr.onerror = onerror; + xhr.send(null); + return; } - return Promise.reject(new Error(response.status + ' : ' + response.url)); - }) - .then(onload, onerror) - }; -// end include: web_or_worker_shell_read.js + fetch(url, { credentials: 'same-origin' }) + .then((response) => { + if (response.ok) { + return response.arrayBuffer(); + } + return Promise.reject(new Error(response.status + ' : ' + response.url)); + }) + .then(onload, onerror); + }; + // end include: web_or_worker_shell_read.js } -} else -{ +} else { throw new Error('environment detection error'); } @@ -234,23 +252,50 @@ checkIncomingModuleAPI(); // expected to arrive, and second, by using a local everywhere else that can be // minified. -if (blst['arguments']) arguments_ = blst['arguments'];legacyModuleProp('arguments', 'arguments_'); +if (blst['arguments']) arguments_ = blst['arguments']; +legacyModuleProp('arguments', 'arguments_'); -if (blst['thisProgram']) thisProgram = blst['thisProgram'];legacyModuleProp('thisProgram', 'thisProgram'); +if (blst['thisProgram']) thisProgram = blst['thisProgram']; +legacyModuleProp('thisProgram', 'thisProgram'); -if (blst['quit']) quit_ = blst['quit'];legacyModuleProp('quit', 'quit_'); +if (blst['quit']) quit_ = blst['quit']; +legacyModuleProp('quit', 'quit_'); // perform assertions in shell.js after we set up out() and err(), as otherwise if an assertion fails it cannot print the message // Assertions on removed incoming blst JS APIs. -assert(typeof blst['memoryInitializerPrefixURL'] == 'undefined', 'blst.memoryInitializerPrefixURL option was removed, use blst.locateFile instead'); -assert(typeof blst['pthreadMainPrefixURL'] == 'undefined', 'blst.pthreadMainPrefixURL option was removed, use blst.locateFile instead'); -assert(typeof blst['cdInitializerPrefixURL'] == 'undefined', 'blst.cdInitializerPrefixURL option was removed, use blst.locateFile instead'); -assert(typeof blst['filePackagePrefixURL'] == 'undefined', 'blst.filePackagePrefixURL option was removed, use blst.locateFile instead'); +assert( + typeof blst['memoryInitializerPrefixURL'] == 'undefined', + 'blst.memoryInitializerPrefixURL option was removed, use blst.locateFile instead', +); +assert( + typeof blst['pthreadMainPrefixURL'] == 'undefined', + 'blst.pthreadMainPrefixURL option was removed, use blst.locateFile instead', +); +assert( + typeof blst['cdInitializerPrefixURL'] == 'undefined', + 'blst.cdInitializerPrefixURL option was removed, use blst.locateFile instead', +); +assert( + typeof blst['filePackagePrefixURL'] == 'undefined', + 'blst.filePackagePrefixURL option was removed, use blst.locateFile instead', +); assert(typeof blst['read'] == 'undefined', 'blst.read option was removed (modify read_ in JS)'); -assert(typeof blst['readAsync'] == 'undefined', 'blst.readAsync option was removed (modify readAsync in JS)'); -assert(typeof blst['readBinary'] == 'undefined', 'blst.readBinary option was removed (modify readBinary in JS)'); -assert(typeof blst['setWindowTitle'] == 'undefined', 'blst.setWindowTitle option was removed (modify emscripten_set_window_title in JS)'); -assert(typeof blst['TOTAL_MEMORY'] == 'undefined', 'blst.TOTAL_MEMORY has been renamed blst.INITIAL_MEMORY'); +assert( + typeof blst['readAsync'] == 'undefined', + 'blst.readAsync option was removed (modify readAsync in JS)', +); +assert( + typeof blst['readBinary'] == 'undefined', + 'blst.readBinary option was removed (modify readBinary in JS)', +); +assert( + typeof blst['setWindowTitle'] == 'undefined', + 'blst.setWindowTitle option was removed (modify emscripten_set_window_title in JS)', +); +assert( + typeof blst['TOTAL_MEMORY'] == 'undefined', + 'blst.TOTAL_MEMORY has been renamed blst.INITIAL_MEMORY', +); legacyModuleProp('asm', 'wasmExports'); legacyModuleProp('read', 'read_'); legacyModuleProp('readAsync', 'readAsync'); @@ -266,7 +311,10 @@ var OPFS = 'OPFS is no longer included by default; build with -lopfs.js'; var NODEFS = 'NODEFS is no longer included by default; build with -lnodefs.js'; -assert(!ENVIRONMENT_IS_SHELL, 'shell environment detected but not enabled at build time. Add `shell` to `-sENVIRONMENT` to enable.'); +assert( + !ENVIRONMENT_IS_SHELL, + 'shell environment detected but not enabled at build time. Add `shell` to `-sENVIRONMENT` to enable.', +); // end include: shell.js @@ -281,8 +329,9 @@ assert(!ENVIRONMENT_IS_SHELL, 'shell environment detected but not enabled at bui // An online HTML version (which may be of a different version of Emscripten) // is up at http://kripken.github.io/emscripten-site/docs/api_reference/preamble.js.html -var wasmBinary; -if (blst['wasmBinary']) wasmBinary = blst['wasmBinary'];legacyModuleProp('wasmBinary', 'wasmBinary'); +var wasmBinary; +if (blst['wasmBinary']) wasmBinary = blst['wasmBinary']; +legacyModuleProp('wasmBinary', 'wasmBinary'); if (typeof WebAssembly != 'object') { err('no native wasm support detected'); @@ -322,21 +371,21 @@ function assert(condition, text) { // Memory management var HEAP, -/** @type {!Int8Array} */ + /** @type {!Int8Array} */ HEAP8, -/** @type {!Uint8Array} */ + /** @type {!Uint8Array} */ HEAPU8, -/** @type {!Int16Array} */ + /** @type {!Int16Array} */ HEAP16, -/** @type {!Uint16Array} */ + /** @type {!Uint16Array} */ HEAPU16, -/** @type {!Int32Array} */ + /** @type {!Int32Array} */ HEAP32, -/** @type {!Uint32Array} */ + /** @type {!Uint32Array} */ HEAPU32, -/** @type {!Float32Array} */ + /** @type {!Float32Array} */ HEAPF32, -/** @type {!Float64Array} */ + /** @type {!Float64Array} */ HEAPF64; // include: runtime_shared.js @@ -352,14 +401,28 @@ function updateMemoryViews() { blst['HEAPF64'] = HEAPF64 = new Float64Array(b); } // end include: runtime_shared.js -assert(!blst['STACK_SIZE'], 'STACK_SIZE can no longer be set at runtime. Use -sSTACK_SIZE at link time') - -assert(typeof Int32Array != 'undefined' && typeof Float64Array !== 'undefined' && Int32Array.prototype.subarray != undefined && Int32Array.prototype.set != undefined, - 'JS engine does not provide full typed array support'); +assert( + !blst['STACK_SIZE'], + 'STACK_SIZE can no longer be set at runtime. Use -sSTACK_SIZE at link time', +); + +assert( + typeof Int32Array != 'undefined' && + typeof Float64Array !== 'undefined' && + Int32Array.prototype.subarray != undefined && + Int32Array.prototype.set != undefined, + 'JS engine does not provide full typed array support', +); // If memory is defined in wasm, the user can't provide it, or set INITIAL_MEMORY -assert(!blst['wasmMemory'], 'Use of `wasmMemory` detected. Use -sIMPORTED_MEMORY to define wasmMemory externally'); -assert(!blst['INITIAL_MEMORY'], 'Detected runtime INITIAL_MEMORY setting. Use -sIMPORTED_MEMORY to define wasmMemory dynamically'); +assert( + !blst['wasmMemory'], + 'Use of `wasmMemory` detected. Use -sIMPORTED_MEMORY to define wasmMemory externally', +); +assert( + !blst['INITIAL_MEMORY'], + 'Detected runtime INITIAL_MEMORY setting. Use -sIMPORTED_MEMORY to define wasmMemory dynamically', +); // include: runtime_stack_check.js // Initializes the stack cookie. Called at the startup of main and at the startup of each thread in pthreads mode. @@ -375,10 +438,10 @@ function writeStackCookie() { // The stack grow downwards towards _emscripten_stack_get_end. // We write cookies to the final two words in the stack and detect if they are // ever overwritten. - HEAPU32[((max)>>2)] = 0x02135467; - HEAPU32[(((max)+(4))>>2)] = 0x89BACDFE; + HEAPU32[max >> 2] = 0x02135467; + HEAPU32[(max + 4) >> 2] = 0x89bacdfe; // Also test the global address 0 for integrity. - HEAPU32[((0)>>2)] = 1668509029; + HEAPU32[0 >> 2] = 1668509029; } function checkStackCookie() { @@ -388,30 +451,33 @@ function checkStackCookie() { if (max == 0) { max += 4; } - var cookie1 = HEAPU32[((max)>>2)]; - var cookie2 = HEAPU32[(((max)+(4))>>2)]; - if (cookie1 != 0x02135467 || cookie2 != 0x89BACDFE) { - abort(`Stack overflow! Stack cookie has been overwritten at ${ptrToString(max)}, expected hex dwords 0x89BACDFE and 0x2135467, but received ${ptrToString(cookie2)} ${ptrToString(cookie1)}`); + var cookie1 = HEAPU32[max >> 2]; + var cookie2 = HEAPU32[(max + 4) >> 2]; + if (cookie1 != 0x02135467 || cookie2 != 0x89bacdfe) { + abort( + `Stack overflow! Stack cookie has been overwritten at ${ptrToString(max)}, expected hex dwords 0x89BACDFE and 0x2135467, but received ${ptrToString(cookie2)} ${ptrToString(cookie1)}`, + ); } // Also test the global address 0 for integrity. - if (HEAPU32[((0)>>2)] != 0x63736d65 /* 'emsc' */) { + if (HEAPU32[0 >> 2] != 0x63736d65 /* 'emsc' */) { abort('Runtime error: The application has corrupted its heap memory area (address zero)!'); } } // end include: runtime_stack_check.js // include: runtime_assertions.js // Endianness check -(function() { +(function () { var h16 = new Int16Array(1); var h8 = new Int8Array(h16.buffer); h16[0] = 0x6373; - if (h8[0] !== 0x73 || h8[1] !== 0x63) throw 'Runtime error: expected the system to be little-endian! (Run with -sSUPPORT_BIG_ENDIAN to bypass)'; + if (h8[0] !== 0x73 || h8[1] !== 0x63) + throw 'Runtime error: expected the system to be little-endian! (Run with -sSUPPORT_BIG_ENDIAN to bypass)'; })(); // end include: runtime_assertions.js -var __ATPRERUN__ = []; // functions called before the runtime is initialized -var __ATINIT__ = []; // functions called during startup -var __ATEXIT__ = []; // functions called during shutdown +var __ATPRERUN__ = []; // functions called before the runtime is initialized +var __ATINIT__ = []; // functions called during startup +var __ATEXIT__ = []; // functions called during shutdown var __ATPOSTRUN__ = []; // functions called after the main() is called var runtimeInitialized = false; @@ -432,7 +498,6 @@ function initRuntime() { checkStackCookie(); - callRuntimeCallbacks(__ATINIT__); } @@ -457,8 +522,7 @@ function addOnInit(cb) { __ATINIT__.unshift(cb); } -function addOnExit(cb) { -} +function addOnExit(cb) {} function addOnPostRun(cb) { __ATPOSTRUN__.unshift(cb); @@ -473,10 +537,22 @@ function addOnPostRun(cb) { // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/trunc -assert(Math.imul, 'This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); -assert(Math.fround, 'This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); -assert(Math.clz32, 'This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); -assert(Math.trunc, 'This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); +assert( + Math.imul, + 'This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill', +); +assert( + Math.fround, + 'This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill', +); +assert( + Math.clz32, + 'This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill', +); +assert( + Math.trunc, + 'This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill', +); // end include: runtime_math.js // A counter of dependencies for calling run(). If we need to // do asynchronous work before running, increment this and @@ -595,18 +671,38 @@ function abort(what) { // show errors on likely calls to FS when it was not included var FS = { error() { - abort('Filesystem support (FS) was not included. The problem is that you are using files from JS, but files were not used from C/C++, so filesystem support was not auto-included. You can force-include filesystem support with -sFORCE_FILESYSTEM'); + abort( + 'Filesystem support (FS) was not included. The problem is that you are using files from JS, but files were not used from C/C++, so filesystem support was not auto-included. You can force-include filesystem support with -sFORCE_FILESYSTEM', + ); + }, + init() { + FS.error(); + }, + createDataFile() { + FS.error(); + }, + createPreloadedFile() { + FS.error(); + }, + createLazyFile() { + FS.error(); + }, + open() { + FS.error(); + }, + mkdev() { + FS.error(); + }, + registerDevice() { + FS.error(); + }, + analyzePath() { + FS.error(); + }, + + ErrnoError() { + FS.error(); }, - init() { FS.error() }, - createDataFile() { FS.error() }, - createPreloadedFile() { FS.error() }, - createLazyFile() { FS.error() }, - open() { FS.error() }, - mkdev() { FS.error() }, - registerDevice() { FS.error() }, - analyzePath() { FS.error() }, - - ErrnoError() { FS.error() }, }; blst['FS_createDataFile'] = FS.createDataFile; blst['FS_createPreloadedFile'] = FS.createPreloadedFile; @@ -633,7 +729,10 @@ function createExportWrapper(name, nargs) { var f = wasmExports[name]; assert(f, `exported native function \`${name}\` not found`); // Only assert for too many arguments. Too few can be valid since the missing arguments will be zero filled. - assert(args.length <= nargs, `native function \`${name}\` called with ${args.length} args but expects ${nargs}`); + assert( + args.length <= nargs, + `native function \`${name}\` called with ${args.length} args but expects ${nargs}`, + ); return f(...args); }; } @@ -655,11 +754,11 @@ class CppException extends EmscriptenEH { } // end include: runtime_exceptions.js function findWasmBinary() { - var f = 'blst.wasm'; - if (!isDataURI(f)) { - return locateFile(f); - } - return f; + var f = 'blst.wasm'; + if (!isDataURI(f)) { + return locateFile(f); + } + return f; } var wasmBinaryFile; @@ -676,16 +775,20 @@ function getBinarySync(file) { function getBinaryPromise(binaryFile) { // If we don't have the binary yet, load it asynchronously using readAsync. - if (!wasmBinary - ) { + if (!wasmBinary) { // Fetch the binary use readAsync return new Promise((resolve, reject) => { - readAsync(binaryFile, - (response) => resolve(new Uint8Array(/** @type{!ArrayBuffer} */(response))), + readAsync( + binaryFile, + (response) => resolve(new Uint8Array(/** @type{!ArrayBuffer} */ (response))), (error) => { - try { resolve(getBinarySync(binaryFile)); } - catch (e) { reject(e); } - }); + try { + resolve(getBinarySync(binaryFile)); + } catch (e) { + reject(e); + } + }, + ); }); } @@ -694,33 +797,39 @@ function getBinaryPromise(binaryFile) { } function instantiateArrayBuffer(binaryFile, imports, receiver) { - return getBinaryPromise(binaryFile).then((binary) => { - return WebAssembly.instantiate(binary, imports); - }).then(receiver, (reason) => { - err(`failed to asynchronously prepare wasm: ${reason}`); - - // Warn on some common problems. - if (isFileURI(wasmBinaryFile)) { - err(`warning: Loading from a file URI (${wasmBinaryFile}) is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing`); - } - abort(reason); - }); + return getBinaryPromise(binaryFile) + .then((binary) => { + return WebAssembly.instantiate(binary, imports); + }) + .then(receiver, (reason) => { + err(`failed to asynchronously prepare wasm: ${reason}`); + + // Warn on some common problems. + if (isFileURI(wasmBinaryFile)) { + err( + `warning: Loading from a file URI (${wasmBinaryFile}) is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing`, + ); + } + abort(reason); + }); } function instantiateAsync(binary, binaryFile, imports, callback) { - if (!binary && - typeof WebAssembly.instantiateStreaming == 'function' && - !isDataURI(binaryFile) && - // Don't use streaming for file:// delivered objects in a webview, fetch them synchronously. - !isFileURI(binaryFile) && - // Avoid instantiateStreaming() on Node.js environment for now, as while - // Node.js v18.1.0 implements it, it does not have a full fetch() - // implementation yet. - // - // Reference: - // https://github.com/emscripten-core/emscripten/pull/16917 - !ENVIRONMENT_IS_NODE && - typeof fetch == 'function') { + if ( + !binary && + typeof WebAssembly.instantiateStreaming == 'function' && + !isDataURI(binaryFile) && + // Don't use streaming for file:// delivered objects in a webview, fetch them synchronously. + !isFileURI(binaryFile) && + // Avoid instantiateStreaming() on Node.js environment for now, as while + // Node.js v18.1.0 implements it, it does not have a full fetch() + // implementation yet. + // + // Reference: + // https://github.com/emscripten-core/emscripten/pull/16917 + !ENVIRONMENT_IS_NODE && + typeof fetch == 'function' + ) { return fetch(binaryFile, { credentials: 'same-origin' }).then((response) => { // Suppress closure warning here since the upstream definition for // instantiateStreaming only allows Promise rather than @@ -729,15 +838,13 @@ function instantiateAsync(binary, binaryFile, imports, callback) { /** @suppress {checkTypes} */ var result = WebAssembly.instantiateStreaming(response, imports); - return result.then( - callback, - function(reason) { - // We expect the most common failure cause to be a bad MIME type for the binary, - // in which case falling back to ArrayBuffer instantiation should work. - err(`wasm streaming compile failed: ${reason}`); - err('falling back to ArrayBuffer instantiation'); - return instantiateArrayBuffer(binaryFile, imports, callback); - }); + return result.then(callback, function (reason) { + // We expect the most common failure cause to be a bad MIME type for the binary, + // in which case falling back to ArrayBuffer instantiation should work. + err(`wasm streaming compile failed: ${reason}`); + err('falling back to ArrayBuffer instantiation'); + return instantiateArrayBuffer(binaryFile, imports, callback); + }); }); } return instantiateArrayBuffer(binaryFile, imports, callback); @@ -746,9 +853,9 @@ function instantiateAsync(binary, binaryFile, imports, callback) { function getWasmImports() { // prepare imports return { - 'env': wasmImports, - 'wasi_snapshot_preview1': wasmImports, - } + env: wasmImports, + wasi_snapshot_preview1: wasmImports, + }; } // Create the wasm instance. @@ -762,15 +869,13 @@ function createWasm() { function receiveInstance(instance, module) { wasmExports = instance.exports; - - wasmMemory = wasmExports['memory']; - + assert(wasmMemory, 'memory not found in wasm exports'); updateMemoryViews(); wasmTable = wasmExports['__indirect_function_table']; - + assert(wasmTable, 'table not found in wasm exports'); addOnInit(wasmExports['__wasm_call_ctors']); @@ -789,7 +894,10 @@ function createWasm() { function receiveInstantiationResult(result) { // 'result' is a ResultObject object which has both the module and instance. // receiveInstance() will swap in the exports (to blst.asm) so they can be called - assert(blst === trueModule, 'the blst object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?'); + assert( + blst === trueModule, + 'the blst object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?', + ); trueModule = null; // TODO: Due to Closure regression https://github.com/google/closure-compiler/issues/3193, the above line no longer optimizes out down to the following line. // When the regression is fixed, can restore the above PTHREADS-enabled path. @@ -805,9 +913,9 @@ function createWasm() { if (blst['instantiateWasm']) { try { return blst['instantiateWasm'](info, receiveInstance); - } catch(e) { + } catch (e) { err(`blst.instantiateWasm callback failed with error: ${e}`); - return false; + return false; } } @@ -822,15 +930,16 @@ var tempDouble; var tempI64; // include: runtime_debug.js -function legacyModuleProp(prop, newName, incoming=true) { +function legacyModuleProp(prop, newName, incoming = true) { if (!Object.getOwnPropertyDescriptor(blst, prop)) { Object.defineProperty(blst, prop, { configurable: true, get() { - let extra = incoming ? ' (the initial value can be provided on blst, but after startup the value is only looked for on a local variable of that name)' : ''; + let extra = incoming + ? ' (the initial value can be provided on blst, but after startup the value is only looked for on a local variable of that name)' + : ''; abort(`\`blst.${prop}\` has been replaced by \`${newName}\`` + extra); - - } + }, }); } } @@ -843,15 +952,17 @@ function ignoredModuleProp(prop) { // forcing the filesystem exports a few things by default function isExportedByForceFilesystem(name) { - return name === 'FS_createPath' || - name === 'FS_createDataFile' || - name === 'FS_createPreloadedFile' || - name === 'FS_unlink' || - name === 'addRunDependency' || - // The old FS has some functionality that WasmFS lacks. - name === 'FS_createLazyFile' || - name === 'FS_createDevice' || - name === 'removeRunDependency'; + return ( + name === 'FS_createPath' || + name === 'FS_createDataFile' || + name === 'FS_createPreloadedFile' || + name === 'FS_unlink' || + name === 'addRunDependency' || + // The old FS has some functionality that WasmFS lacks. + name === 'FS_createLazyFile' || + name === 'FS_createDevice' || + name === 'removeRunDependency' + ); } function missingGlobal(sym, msg) { @@ -861,7 +972,7 @@ function missingGlobal(sym, msg) { get() { warnOnce(`\`${sym}\` is not longer defined by emscripten. ${msg}`); return undefined; - } + }, }); } } @@ -886,11 +997,12 @@ function missingLibrarySymbol(sym) { } msg += ` (e.g. -sDEFAULT_LIBRARY_FUNCS_TO_INCLUDE='${librarySymbol}')`; if (isExportedByForceFilesystem(sym)) { - msg += '. Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you'; + msg += + '. Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you'; } warnOnce(msg); return undefined; - } + }, }); } // Any symbol that is not included from the JS library is also (by definition) @@ -905,10 +1017,11 @@ function unexportedRuntimeSymbol(sym) { get() { var msg = `'${sym}' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the Emscripten FAQ)`; if (isExportedByForceFilesystem(sym)) { - msg += '. Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you'; + msg += + '. Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you'; } abort(msg); - } + }, }); } } @@ -922,542 +1035,575 @@ function dbg(...args) { // end include: runtime_debug.js // === Body === -function blst_exception(code) { throw new Error(BLST_ERROR_str[code]); } +function blst_exception(code) { + throw new Error(BLST_ERROR_str[code]); +} // end include: preamble.js +/** @constructor */ +function ExitStatus(status) { + this.name = 'ExitStatus'; + this.message = `Program terminated with exit(${status})`; + this.status = status; +} - /** @constructor */ - function ExitStatus(status) { - this.name = 'ExitStatus'; - this.message = `Program terminated with exit(${status})`; - this.status = status; - } +var callRuntimeCallbacks = (callbacks) => { + while (callbacks.length > 0) { + // Pass the module as the first argument. + callbacks.shift()(blst); + } +}; - var callRuntimeCallbacks = (callbacks) => { - while (callbacks.length > 0) { - // Pass the module as the first argument. - callbacks.shift()(blst); - } - }; +/** + * @param {number} ptr + * @param {string} type + */ +function getValue(ptr, type = 'i8') { + if (type.endsWith('*')) type = '*'; + switch (type) { + case 'i1': + return HEAP8[ptr]; + case 'i8': + return HEAP8[ptr]; + case 'i16': + return HEAP16[ptr >> 1]; + case 'i32': + return HEAP32[ptr >> 2]; + case 'i64': + abort('to do getValue(i64) use WASM_BIGINT'); + case 'float': + return HEAPF32[ptr >> 2]; + case 'double': + return HEAPF64[ptr >> 3]; + case '*': + return HEAPU32[ptr >> 2]; + default: + abort(`invalid type for getValue: ${type}`); + } +} - - /** - * @param {number} ptr - * @param {string} type - */ - function getValue(ptr, type = 'i8') { - if (type.endsWith('*')) type = '*'; - switch (type) { - case 'i1': return HEAP8[ptr]; - case 'i8': return HEAP8[ptr]; - case 'i16': return HEAP16[((ptr)>>1)]; - case 'i32': return HEAP32[((ptr)>>2)]; - case 'i64': abort('to do getValue(i64) use WASM_BIGINT'); - case 'float': return HEAPF32[((ptr)>>2)]; - case 'double': return HEAPF64[((ptr)>>3)]; - case '*': return HEAPU32[((ptr)>>2)]; - default: abort(`invalid type for getValue: ${type}`); +var lengthBytesUTF8 = (str) => { + var len = 0; + for (var i = 0; i < str.length; ++i) { + // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code + // unit, not a Unicode code point of the character! So decode + // UTF16->UTF32->UTF8. + // See http://unicode.org/faq/utf_bom.html#utf16-3 + var c = str.charCodeAt(i); // possibly a lead surrogate + if (c <= 0x7f) { + len++; + } else if (c <= 0x7ff) { + len += 2; + } else if (c >= 0xd800 && c <= 0xdfff) { + len += 4; + ++i; + } else { + len += 3; } } + return len; +}; - var lengthBytesUTF8 = (str) => { - var len = 0; - for (var i = 0; i < str.length; ++i) { - // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code - // unit, not a Unicode code point of the character! So decode - // UTF16->UTF32->UTF8. - // See http://unicode.org/faq/utf_bom.html#utf16-3 - var c = str.charCodeAt(i); // possibly a lead surrogate - if (c <= 0x7F) { - len++; - } else if (c <= 0x7FF) { - len += 2; - } else if (c >= 0xD800 && c <= 0xDFFF) { - len += 4; ++i; - } else { - len += 3; - } - } - return len; - }; - - var stringToUTF8Array = (str, heap, outIdx, maxBytesToWrite) => { - assert(typeof str === 'string', `stringToUTF8Array expects a string (got ${typeof str})`); - // Parameter maxBytesToWrite is not optional. Negative values, 0, null, - // undefined and false each don't write out any bytes. - if (!(maxBytesToWrite > 0)) - return 0; - - var startIdx = outIdx; - var endIdx = outIdx + maxBytesToWrite - 1; // -1 for string null terminator. - for (var i = 0; i < str.length; ++i) { - // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code - // unit, not a Unicode code point of the character! So decode - // UTF16->UTF32->UTF8. - // See http://unicode.org/faq/utf_bom.html#utf16-3 - // For UTF8 byte structure, see http://en.wikipedia.org/wiki/UTF-8#Description - // and https://www.ietf.org/rfc/rfc2279.txt - // and https://tools.ietf.org/html/rfc3629 - var u = str.charCodeAt(i); // possibly a lead surrogate - if (u >= 0xD800 && u <= 0xDFFF) { - var u1 = str.charCodeAt(++i); - u = 0x10000 + ((u & 0x3FF) << 10) | (u1 & 0x3FF); - } - if (u <= 0x7F) { - if (outIdx >= endIdx) break; - heap[outIdx++] = u; - } else if (u <= 0x7FF) { - if (outIdx + 1 >= endIdx) break; - heap[outIdx++] = 0xC0 | (u >> 6); - heap[outIdx++] = 0x80 | (u & 63); - } else if (u <= 0xFFFF) { - if (outIdx + 2 >= endIdx) break; - heap[outIdx++] = 0xE0 | (u >> 12); - heap[outIdx++] = 0x80 | ((u >> 6) & 63); - heap[outIdx++] = 0x80 | (u & 63); - } else { - if (outIdx + 3 >= endIdx) break; - if (u > 0x10FFFF) warnOnce('Invalid Unicode code point ' + ptrToString(u) + ' encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF).'); - heap[outIdx++] = 0xF0 | (u >> 18); - heap[outIdx++] = 0x80 | ((u >> 12) & 63); - heap[outIdx++] = 0x80 | ((u >> 6) & 63); - heap[outIdx++] = 0x80 | (u & 63); - } - } - // Null-terminate the pointer to the buffer. - heap[outIdx] = 0; - return outIdx - startIdx; - }; - /** @type {function(string, boolean=, number=)} */ - function intArrayFromString(stringy, dontAddNull, length) { - var len = length > 0 ? length : lengthBytesUTF8(stringy)+1; - var u8array = new Array(len); - var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length); - if (dontAddNull) u8array.length = numBytesWritten; - return u8array; - } - - var noExitRuntime = blst['noExitRuntime'] || true; - - var ptrToString = (ptr) => { - assert(typeof ptr === 'number'); - // With CAN_ADDRESS_2GB or MEMORY64, pointers are already unsigned. - ptr >>>= 0; - return '0x' + ptr.toString(16).padStart(8, '0'); - }; +var stringToUTF8Array = (str, heap, outIdx, maxBytesToWrite) => { + assert(typeof str === 'string', `stringToUTF8Array expects a string (got ${typeof str})`); + // Parameter maxBytesToWrite is not optional. Negative values, 0, null, + // undefined and false each don't write out any bytes. + if (!(maxBytesToWrite > 0)) return 0; + + var startIdx = outIdx; + var endIdx = outIdx + maxBytesToWrite - 1; // -1 for string null terminator. + for (var i = 0; i < str.length; ++i) { + // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code + // unit, not a Unicode code point of the character! So decode + // UTF16->UTF32->UTF8. + // See http://unicode.org/faq/utf_bom.html#utf16-3 + // For UTF8 byte structure, see http://en.wikipedia.org/wiki/UTF-8#Description + // and https://www.ietf.org/rfc/rfc2279.txt + // and https://tools.ietf.org/html/rfc3629 + var u = str.charCodeAt(i); // possibly a lead surrogate + if (u >= 0xd800 && u <= 0xdfff) { + var u1 = str.charCodeAt(++i); + u = (0x10000 + ((u & 0x3ff) << 10)) | (u1 & 0x3ff); + } + if (u <= 0x7f) { + if (outIdx >= endIdx) break; + heap[outIdx++] = u; + } else if (u <= 0x7ff) { + if (outIdx + 1 >= endIdx) break; + heap[outIdx++] = 0xc0 | (u >> 6); + heap[outIdx++] = 0x80 | (u & 63); + } else if (u <= 0xffff) { + if (outIdx + 2 >= endIdx) break; + heap[outIdx++] = 0xe0 | (u >> 12); + heap[outIdx++] = 0x80 | ((u >> 6) & 63); + heap[outIdx++] = 0x80 | (u & 63); + } else { + if (outIdx + 3 >= endIdx) break; + if (u > 0x10ffff) + warnOnce( + 'Invalid Unicode code point ' + + ptrToString(u) + + ' encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF).', + ); + heap[outIdx++] = 0xf0 | (u >> 18); + heap[outIdx++] = 0x80 | ((u >> 12) & 63); + heap[outIdx++] = 0x80 | ((u >> 6) & 63); + heap[outIdx++] = 0x80 | (u & 63); + } + } + // Null-terminate the pointer to the buffer. + heap[outIdx] = 0; + return outIdx - startIdx; +}; +/** @type {function(string, boolean=, number=)} */ +function intArrayFromString(stringy, dontAddNull, length) { + var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1; + var u8array = new Array(len); + var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length); + if (dontAddNull) u8array.length = numBytesWritten; + return u8array; +} + +var noExitRuntime = blst['noExitRuntime'] || true; + +var ptrToString = (ptr) => { + assert(typeof ptr === 'number'); + // With CAN_ADDRESS_2GB or MEMORY64, pointers are already unsigned. + ptr >>>= 0; + return '0x' + ptr.toString(16).padStart(8, '0'); +}; + +/** + * @param {number} ptr + * @param {number} value + * @param {string} type + */ +function setValue(ptr, value, type = 'i8') { + if (type.endsWith('*')) type = '*'; + switch (type) { + case 'i1': + HEAP8[ptr] = value; + break; + case 'i8': + HEAP8[ptr] = value; + break; + case 'i16': + HEAP16[ptr >> 1] = value; + break; + case 'i32': + HEAP32[ptr >> 2] = value; + break; + case 'i64': + abort('to do setValue(i64) use WASM_BIGINT'); + case 'float': + HEAPF32[ptr >> 2] = value; + break; + case 'double': + HEAPF64[ptr >> 3] = value; + break; + case '*': + HEAPU32[ptr >> 2] = value; + break; + default: + abort(`invalid type for setValue: ${type}`); + } +} + +var stackRestore = (val) => __emscripten_stack_restore(val); + +var stackSave = () => _emscripten_stack_get_current(); + +var warnOnce = (text) => { + warnOnce.shown ||= {}; + if (!warnOnce.shown[text]) { + warnOnce.shown[text] = 1; + if (ENVIRONMENT_IS_NODE) text = 'warning: ' + text; + err(text); + } +}; + +var UTF8Decoder = typeof TextDecoder != 'undefined' ? new TextDecoder('utf8') : undefined; + +/** + * Given a pointer 'idx' to a null-terminated UTF8-encoded string in the given + * array that contains uint8 values, returns a copy of that string as a + * Javascript String object. + * heapOrArray is either a regular array, or a JavaScript typed array view. + * @param {number} idx + * @param {number=} maxBytesToRead + * @return {string} + */ +var UTF8ArrayToString = (heapOrArray, idx, maxBytesToRead) => { + var endIdx = idx + maxBytesToRead; + var endPtr = idx; + // TextDecoder needs to know the byte length in advance, it doesn't stop on + // null terminator by itself. Also, use the length info to avoid running tiny + // strings through TextDecoder, since .subarray() allocates garbage. + // (As a tiny code save trick, compare endPtr against endIdx using a negation, + // so that undefined means Infinity) + while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr; + + if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) { + return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr)); + } + var str = ''; + // If building with TextDecoder, we have already computed the string length + // above, so test loop end condition against that + while (idx < endPtr) { + // For UTF8 byte structure, see: + // http://en.wikipedia.org/wiki/UTF-8#Description + // https://www.ietf.org/rfc/rfc2279.txt + // https://tools.ietf.org/html/rfc3629 + var u0 = heapOrArray[idx++]; + if (!(u0 & 0x80)) { + str += String.fromCharCode(u0); + continue; + } + var u1 = heapOrArray[idx++] & 63; + if ((u0 & 0xe0) == 0xc0) { + str += String.fromCharCode(((u0 & 31) << 6) | u1); + continue; + } + var u2 = heapOrArray[idx++] & 63; + if ((u0 & 0xf0) == 0xe0) { + u0 = ((u0 & 15) << 12) | (u1 << 6) | u2; + } else { + if ((u0 & 0xf8) != 0xf0) + warnOnce( + 'Invalid UTF-8 leading byte ' + + ptrToString(u0) + + ' encountered when deserializing a UTF-8 string in wasm memory to a JS string!', + ); + u0 = ((u0 & 7) << 18) | (u1 << 12) | (u2 << 6) | (heapOrArray[idx++] & 63); + } - - /** - * @param {number} ptr - * @param {number} value - * @param {string} type - */ - function setValue(ptr, value, type = 'i8') { - if (type.endsWith('*')) type = '*'; - switch (type) { - case 'i1': HEAP8[ptr] = value; break; - case 'i8': HEAP8[ptr] = value; break; - case 'i16': HEAP16[((ptr)>>1)] = value; break; - case 'i32': HEAP32[((ptr)>>2)] = value; break; - case 'i64': abort('to do setValue(i64) use WASM_BIGINT'); - case 'float': HEAPF32[((ptr)>>2)] = value; break; - case 'double': HEAPF64[((ptr)>>3)] = value; break; - case '*': HEAPU32[((ptr)>>2)] = value; break; - default: abort(`invalid type for setValue: ${type}`); + if (u0 < 0x10000) { + str += String.fromCharCode(u0); + } else { + var ch = u0 - 0x10000; + str += String.fromCharCode(0xd800 | (ch >> 10), 0xdc00 | (ch & 0x3ff)); } } + return str; +}; - var stackRestore = (val) => __emscripten_stack_restore(val); +/** + * Given a pointer 'ptr' to a null-terminated UTF8-encoded string in the + * emscripten HEAP, returns a copy of that string as a Javascript String object. + * + * @param {number} ptr + * @param {number=} maxBytesToRead - An optional length that specifies the + * maximum number of bytes to read. You can omit this parameter to scan the + * string until the first 0 byte. If maxBytesToRead is passed, and the string + * at [ptr, ptr+maxBytesToReadr[ contains a null byte in the middle, then the + * string will cut short at that byte index (i.e. maxBytesToRead will not + * produce a string of exact length [ptr, ptr+maxBytesToRead[) N.B. mixing + * frequent uses of UTF8ToString() with and without maxBytesToRead may throw + * JS JIT optimizations off, so it is worth to consider consistently using one + * @return {string} + */ +var UTF8ToString = (ptr, maxBytesToRead) => { + assert(typeof ptr == 'number', `UTF8ToString expects a number (got ${typeof ptr})`); + return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : ''; +}; +var ___assert_fail = (condition, filename, line, func) => { + abort( + `Assertion failed: ${UTF8ToString(condition)}, at: ` + + [ + filename ? UTF8ToString(filename) : 'unknown filename', + line, + func ? UTF8ToString(func) : 'unknown function', + ], + ); +}; - var stackSave = () => _emscripten_stack_get_current(); +var exceptionCaught = []; - var warnOnce = (text) => { - warnOnce.shown ||= {}; - if (!warnOnce.shown[text]) { - warnOnce.shown[text] = 1; - if (ENVIRONMENT_IS_NODE) text = 'warning: ' + text; - err(text); - } - }; +var uncaughtExceptionCount = 0; +var ___cxa_begin_catch = (ptr) => { + var info = new ExceptionInfo(ptr); + if (!info.get_caught()) { + info.set_caught(true); + uncaughtExceptionCount--; + } + info.set_rethrown(false); + exceptionCaught.push(info); + ___cxa_increment_exception_refcount(info.excPtr); + return info.get_exception_ptr(); +}; - var UTF8Decoder = typeof TextDecoder != 'undefined' ? new TextDecoder('utf8') : undefined; - - /** - * Given a pointer 'idx' to a null-terminated UTF8-encoded string in the given - * array that contains uint8 values, returns a copy of that string as a - * Javascript String object. - * heapOrArray is either a regular array, or a JavaScript typed array view. - * @param {number} idx - * @param {number=} maxBytesToRead - * @return {string} - */ - var UTF8ArrayToString = (heapOrArray, idx, maxBytesToRead) => { - var endIdx = idx + maxBytesToRead; - var endPtr = idx; - // TextDecoder needs to know the byte length in advance, it doesn't stop on - // null terminator by itself. Also, use the length info to avoid running tiny - // strings through TextDecoder, since .subarray() allocates garbage. - // (As a tiny code save trick, compare endPtr against endIdx using a negation, - // so that undefined means Infinity) - while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr; - - if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) { - return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr)); - } - var str = ''; - // If building with TextDecoder, we have already computed the string length - // above, so test loop end condition against that - while (idx < endPtr) { - // For UTF8 byte structure, see: - // http://en.wikipedia.org/wiki/UTF-8#Description - // https://www.ietf.org/rfc/rfc2279.txt - // https://tools.ietf.org/html/rfc3629 - var u0 = heapOrArray[idx++]; - if (!(u0 & 0x80)) { str += String.fromCharCode(u0); continue; } - var u1 = heapOrArray[idx++] & 63; - if ((u0 & 0xE0) == 0xC0) { str += String.fromCharCode(((u0 & 31) << 6) | u1); continue; } - var u2 = heapOrArray[idx++] & 63; - if ((u0 & 0xF0) == 0xE0) { - u0 = ((u0 & 15) << 12) | (u1 << 6) | u2; - } else { - if ((u0 & 0xF8) != 0xF0) warnOnce('Invalid UTF-8 leading byte ' + ptrToString(u0) + ' encountered when deserializing a UTF-8 string in wasm memory to a JS string!'); - u0 = ((u0 & 7) << 18) | (u1 << 12) | (u2 << 6) | (heapOrArray[idx++] & 63); - } - - if (u0 < 0x10000) { - str += String.fromCharCode(u0); - } else { - var ch = u0 - 0x10000; - str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); - } - } - return str; - }; - - /** - * Given a pointer 'ptr' to a null-terminated UTF8-encoded string in the - * emscripten HEAP, returns a copy of that string as a Javascript String object. - * - * @param {number} ptr - * @param {number=} maxBytesToRead - An optional length that specifies the - * maximum number of bytes to read. You can omit this parameter to scan the - * string until the first 0 byte. If maxBytesToRead is passed, and the string - * at [ptr, ptr+maxBytesToReadr[ contains a null byte in the middle, then the - * string will cut short at that byte index (i.e. maxBytesToRead will not - * produce a string of exact length [ptr, ptr+maxBytesToRead[) N.B. mixing - * frequent uses of UTF8ToString() with and without maxBytesToRead may throw - * JS JIT optimizations off, so it is worth to consider consistently using one - * @return {string} - */ - var UTF8ToString = (ptr, maxBytesToRead) => { - assert(typeof ptr == 'number', `UTF8ToString expects a number (got ${typeof ptr})`); - return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : ''; - }; - var ___assert_fail = (condition, filename, line, func) => { - abort(`Assertion failed: ${UTF8ToString(condition)}, at: ` + [filename ? UTF8ToString(filename) : 'unknown filename', line, func ? UTF8ToString(func) : 'unknown function']); - }; +var exceptionLast = 0; - var exceptionCaught = []; - - - var uncaughtExceptionCount = 0; - var ___cxa_begin_catch = (ptr) => { - var info = new ExceptionInfo(ptr); - if (!info.get_caught()) { - info.set_caught(true); - uncaughtExceptionCount--; - } - info.set_rethrown(false); - exceptionCaught.push(info); - ___cxa_increment_exception_refcount(info.excPtr); - return info.get_exception_ptr(); - }; +var ___cxa_end_catch = () => { + // Clear state flag. + _setThrew(0, 0); + assert(exceptionCaught.length > 0); + // Call destructor if one is registered then clear it. + var info = exceptionCaught.pop(); - - var exceptionLast = 0; - - - var ___cxa_end_catch = () => { - // Clear state flag. - _setThrew(0, 0); - assert(exceptionCaught.length > 0); - // Call destructor if one is registered then clear it. - var info = exceptionCaught.pop(); - - ___cxa_decrement_exception_refcount(info.excPtr); - exceptionLast = 0; // XXX in decRef? - }; + ___cxa_decrement_exception_refcount(info.excPtr); + exceptionLast = 0; // XXX in decRef? +}; - - class ExceptionInfo { - // excPtr - Thrown object pointer to wrap. Metadata pointer is calculated from it. - constructor(excPtr) { - this.excPtr = excPtr; - this.ptr = excPtr - 24; - } - - set_type(type) { - HEAPU32[(((this.ptr)+(4))>>2)] = type; - } - - get_type() { - return HEAPU32[(((this.ptr)+(4))>>2)]; - } - - set_destructor(destructor) { - HEAPU32[(((this.ptr)+(8))>>2)] = destructor; - } - - get_destructor() { - return HEAPU32[(((this.ptr)+(8))>>2)]; - } - - set_caught(caught) { - caught = caught ? 1 : 0; - HEAP8[(this.ptr)+(12)] = caught; - } - - get_caught() { - return HEAP8[(this.ptr)+(12)] != 0; - } - - set_rethrown(rethrown) { - rethrown = rethrown ? 1 : 0; - HEAP8[(this.ptr)+(13)] = rethrown; - } - - get_rethrown() { - return HEAP8[(this.ptr)+(13)] != 0; - } - - // Initialize native structure fields. Should be called once after allocated. - init(type, destructor) { - this.set_adjusted_ptr(0); - this.set_type(type); - this.set_destructor(destructor); - } - - set_adjusted_ptr(adjustedPtr) { - HEAPU32[(((this.ptr)+(16))>>2)] = adjustedPtr; - } - - get_adjusted_ptr() { - return HEAPU32[(((this.ptr)+(16))>>2)]; - } - - // Get pointer which is expected to be received by catch clause in C++ code. It may be adjusted - // when the pointer is casted to some of the exception object base classes (e.g. when virtual - // inheritance is used). When a pointer is thrown this method should return the thrown pointer - // itself. - get_exception_ptr() { - // Work around a fastcomp bug, this code is still included for some reason in a build without - // exceptions support. - var isPointer = ___cxa_is_pointer_type(this.get_type()); - if (isPointer) { - return HEAPU32[((this.excPtr)>>2)]; - } - var adjusted = this.get_adjusted_ptr(); - if (adjusted !== 0) return adjusted; - return this.excPtr; - } +class ExceptionInfo { + // excPtr - Thrown object pointer to wrap. Metadata pointer is calculated from it. + constructor(excPtr) { + this.excPtr = excPtr; + this.ptr = excPtr - 24; + } + + set_type(type) { + HEAPU32[(this.ptr + 4) >> 2] = type; + } + + get_type() { + return HEAPU32[(this.ptr + 4) >> 2]; + } + + set_destructor(destructor) { + HEAPU32[(this.ptr + 8) >> 2] = destructor; + } + + get_destructor() { + return HEAPU32[(this.ptr + 8) >> 2]; + } + + set_caught(caught) { + caught = caught ? 1 : 0; + HEAP8[this.ptr + 12] = caught; + } + + get_caught() { + return HEAP8[this.ptr + 12] != 0; + } + + set_rethrown(rethrown) { + rethrown = rethrown ? 1 : 0; + HEAP8[this.ptr + 13] = rethrown; + } + + get_rethrown() { + return HEAP8[this.ptr + 13] != 0; + } + + // Initialize native structure fields. Should be called once after allocated. + init(type, destructor) { + this.set_adjusted_ptr(0); + this.set_type(type); + this.set_destructor(destructor); + } + + set_adjusted_ptr(adjustedPtr) { + HEAPU32[(this.ptr + 16) >> 2] = adjustedPtr; + } + + get_adjusted_ptr() { + return HEAPU32[(this.ptr + 16) >> 2]; + } + + // Get pointer which is expected to be received by catch clause in C++ code. It may be adjusted + // when the pointer is casted to some of the exception object base classes (e.g. when virtual + // inheritance is used). When a pointer is thrown this method should return the thrown pointer + // itself. + get_exception_ptr() { + // Work around a fastcomp bug, this code is still included for some reason in a build without + // exceptions support. + var isPointer = ___cxa_is_pointer_type(this.get_type()); + if (isPointer) { + return HEAPU32[this.excPtr >> 2]; } - - var ___resumeException = (ptr) => { - if (!exceptionLast) { - exceptionLast = new CppException(ptr); - } - throw exceptionLast; - }; - - - var setTempRet0 = (val) => __emscripten_tempret_set(val); - var findMatchingCatch = (args) => { - var thrown = - exceptionLast?.excPtr; - if (!thrown) { - // just pass through the null ptr - setTempRet0(0); - return 0; - } - var info = new ExceptionInfo(thrown); - info.set_adjusted_ptr(thrown); - var thrownType = info.get_type(); - if (!thrownType) { - // just pass through the thrown ptr - setTempRet0(0); - return thrown; - } - - // can_catch receives a **, add indirection - // The different catch blocks are denoted by different types. - // Due to inheritance, those types may not precisely match the - // type of the thrown object. Find one which matches, and - // return the type of the catch block which should be called. - for (var caughtType of args) { - if (caughtType === 0 || caughtType === thrownType) { - // Catch all clause matched or exactly the same type is caught - break; - } - var adjusted_ptr_addr = info.ptr + 16; - if (___cxa_can_catch(caughtType, thrownType, adjusted_ptr_addr)) { - setTempRet0(caughtType); - return thrown; - } - } - setTempRet0(thrownType); + var adjusted = this.get_adjusted_ptr(); + if (adjusted !== 0) return adjusted; + return this.excPtr; + } +} + +var ___resumeException = (ptr) => { + if (!exceptionLast) { + exceptionLast = new CppException(ptr); + } + throw exceptionLast; +}; + +var setTempRet0 = (val) => __emscripten_tempret_set(val); +var findMatchingCatch = (args) => { + var thrown = exceptionLast?.excPtr; + if (!thrown) { + // just pass through the null ptr + setTempRet0(0); + return 0; + } + var info = new ExceptionInfo(thrown); + info.set_adjusted_ptr(thrown); + var thrownType = info.get_type(); + if (!thrownType) { + // just pass through the thrown ptr + setTempRet0(0); + return thrown; + } + + // can_catch receives a **, add indirection + // The different catch blocks are denoted by different types. + // Due to inheritance, those types may not precisely match the + // type of the thrown object. Find one which matches, and + // return the type of the catch block which should be called. + for (var caughtType of args) { + if (caughtType === 0 || caughtType === thrownType) { + // Catch all clause matched or exactly the same type is caught + break; + } + var adjusted_ptr_addr = info.ptr + 16; + if (___cxa_can_catch(caughtType, thrownType, adjusted_ptr_addr)) { + setTempRet0(caughtType); return thrown; - }; - var ___cxa_find_matching_catch_2 = () => findMatchingCatch([]); - - var ___cxa_find_matching_catch_3 = (arg0) => findMatchingCatch([arg0]); - - - - var ___cxa_throw = (ptr, type, destructor) => { - var info = new ExceptionInfo(ptr); - // Initialize ExceptionInfo content after it was allocated in __cxa_allocate_exception. - info.init(type, destructor); - exceptionLast = new CppException(ptr); - uncaughtExceptionCount++; - throw exceptionLast; - }; + } + } + setTempRet0(thrownType); + return thrown; +}; +var ___cxa_find_matching_catch_2 = () => findMatchingCatch([]); +var ___cxa_find_matching_catch_3 = (arg0) => findMatchingCatch([arg0]); - var __abort_js = () => { - abort('native code called abort()'); - }; +var ___cxa_throw = (ptr, type, destructor) => { + var info = new ExceptionInfo(ptr); + // Initialize ExceptionInfo content after it was allocated in __cxa_allocate_exception. + info.init(type, destructor); + exceptionLast = new CppException(ptr); + uncaughtExceptionCount++; + throw exceptionLast; +}; - var __emscripten_memcpy_js = (dest, src, num) => HEAPU8.copyWithin(dest, src, src + num); +var __abort_js = () => { + abort('native code called abort()'); +}; - var getHeapMax = () => - HEAPU8.length; - - var abortOnCannotGrowMemory = (requestedSize) => { - abort(`Cannot enlarge memory arrays to size ${requestedSize} bytes (OOM). Either (1) compile with -sINITIAL_MEMORY=X with X higher than the current value ${HEAP8.length}, (2) compile with -sALLOW_MEMORY_GROWTH which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -sABORTING_MALLOC=0`); - }; - var _emscripten_resize_heap = (requestedSize) => { - var oldSize = HEAPU8.length; - // With CAN_ADDRESS_2GB or MEMORY64, pointers are already unsigned. - requestedSize >>>= 0; - abortOnCannotGrowMemory(requestedSize); - }; +var __emscripten_memcpy_js = (dest, src, num) => HEAPU8.copyWithin(dest, src, src + num); - var SYSCALLS = { - varargs:undefined, +var getHeapMax = () => HEAPU8.length; + +var abortOnCannotGrowMemory = (requestedSize) => { + abort( + `Cannot enlarge memory arrays to size ${requestedSize} bytes (OOM). Either (1) compile with -sINITIAL_MEMORY=X with X higher than the current value ${HEAP8.length}, (2) compile with -sALLOW_MEMORY_GROWTH which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -sABORTING_MALLOC=0`, + ); +}; +var _emscripten_resize_heap = (requestedSize) => { + var oldSize = HEAPU8.length; + // With CAN_ADDRESS_2GB or MEMORY64, pointers are already unsigned. + requestedSize >>>= 0; + abortOnCannotGrowMemory(requestedSize); +}; + +var SYSCALLS = { + varargs: undefined, getStr(ptr) { - var ret = UTF8ToString(ptr); - return ret; - }, - }; - var _fd_close = (fd) => { - abort('fd_close called without SYSCALLS_REQUIRE_FILESYSTEM'); - }; + var ret = UTF8ToString(ptr); + return ret; + }, +}; +var _fd_close = (fd) => { + abort('fd_close called without SYSCALLS_REQUIRE_FILESYSTEM'); +}; - var convertI32PairToI53Checked = (lo, hi) => { - assert(lo == (lo >>> 0) || lo == (lo|0)); // lo should either be a i32 or a u32 - assert(hi === (hi|0)); // hi should be a i32 - return ((hi + 0x200000) >>> 0 < 0x400001 - !!lo) ? (lo >>> 0) + hi * 4294967296 : NaN; - }; - function _fd_seek(fd,offset_low, offset_high,whence,newOffset) { - var offset = convertI32PairToI53Checked(offset_low, offset_high); - - - return 70; - ; - } - - var printCharBuffers = [null,[],[]]; - - var printChar = (stream, curr) => { - var buffer = printCharBuffers[stream]; - assert(buffer); - if (curr === 0 || curr === 10) { - (stream === 1 ? out : err)(UTF8ArrayToString(buffer, 0)); - buffer.length = 0; - } else { - buffer.push(curr); - } - }; - - var flush_NO_FILESYSTEM = () => { - // flush anything remaining in the buffers during shutdown - _fflush(0); - if (printCharBuffers[1].length) printChar(1, 10); - if (printCharBuffers[2].length) printChar(2, 10); - }; - - - var _fd_write = (fd, iov, iovcnt, pnum) => { - // hack to support printf in SYSCALLS_REQUIRE_FILESYSTEM=0 - var num = 0; - for (var i = 0; i < iovcnt; i++) { - var ptr = HEAPU32[((iov)>>2)]; - var len = HEAPU32[(((iov)+(4))>>2)]; - iov += 8; - for (var j = 0; j < len; j++) { - printChar(fd, HEAPU8[ptr+j]); - } - num += len; - } - HEAPU32[((pnum)>>2)] = num; - return 0; - }; +var convertI32PairToI53Checked = (lo, hi) => { + assert(lo == lo >>> 0 || lo == (lo | 0)); // lo should either be a i32 or a u32 + assert(hi === (hi | 0)); // hi should be a i32 + return (hi + 0x200000) >>> 0 < 0x400001 - !!lo ? (lo >>> 0) + hi * 4294967296 : NaN; +}; +function _fd_seek(fd, offset_low, offset_high, whence, newOffset) { + var offset = convertI32PairToI53Checked(offset_low, offset_high); + + return 70; +} - var _llvm_eh_typeid_for = (type) => type; +var printCharBuffers = [null, [], []]; +var printChar = (stream, curr) => { + var buffer = printCharBuffers[stream]; + assert(buffer); + if (curr === 0 || curr === 10) { + (stream === 1 ? out : err)(UTF8ArrayToString(buffer, 0)); + buffer.length = 0; + } else { + buffer.push(curr); + } +}; +var flush_NO_FILESYSTEM = () => { + // flush anything remaining in the buffers during shutdown + _fflush(0); + if (printCharBuffers[1].length) printChar(1, 10); + if (printCharBuffers[2].length) printChar(2, 10); +}; - var alignMemory = (size, alignment) => { - assert(alignment, "alignment argument is required"); - return Math.ceil(size / alignment) * alignment; - }; +var _fd_write = (fd, iov, iovcnt, pnum) => { + // hack to support printf in SYSCALLS_REQUIRE_FILESYSTEM=0 + var num = 0; + for (var i = 0; i < iovcnt; i++) { + var ptr = HEAPU32[iov >> 2]; + var len = HEAPU32[(iov + 4) >> 2]; + iov += 8; + for (var j = 0; j < len; j++) { + printChar(fd, HEAPU8[ptr + j]); + } + num += len; + } + HEAPU32[pnum >> 2] = num; + return 0; +}; - var wasmTableMirror = []; - - /** @type {WebAssembly.Table} */ - var wasmTable; - var getWasmTableEntry = (funcPtr) => { - var func = wasmTableMirror[funcPtr]; - if (!func) { - if (funcPtr >= wasmTableMirror.length) wasmTableMirror.length = funcPtr + 1; - wasmTableMirror[funcPtr] = func = wasmTable.get(funcPtr); - } - assert(wasmTable.get(funcPtr) == func, 'JavaScript-side Wasm function table mirror is out of date!'); - return func; - }; +var _llvm_eh_typeid_for = (type) => type; - var incrementExceptionRefcount = (ptr) => ___cxa_increment_exception_refcount(ptr); - blst['incrementExceptionRefcount'] = incrementExceptionRefcount; - - var decrementExceptionRefcount = (ptr) => ___cxa_decrement_exception_refcount(ptr); - blst['decrementExceptionRefcount'] = decrementExceptionRefcount; - - - - - - var stackAlloc = (sz) => __emscripten_stack_alloc(sz); - - var getExceptionMessageCommon = (ptr) => { - var sp = stackSave(); - var type_addr_addr = stackAlloc(4); - var message_addr_addr = stackAlloc(4); - ___get_exception_message(ptr, type_addr_addr, message_addr_addr); - var type_addr = HEAPU32[((type_addr_addr)>>2)]; - var message_addr = HEAPU32[((message_addr_addr)>>2)]; - var type = UTF8ToString(type_addr); - _free(type_addr); - var message; - if (message_addr) { - message = UTF8ToString(message_addr); - _free(message_addr); - } - stackRestore(sp); - return [type, message]; - }; - var getExceptionMessage = (ptr) => getExceptionMessageCommon(ptr); - blst['getExceptionMessage'] = getExceptionMessage; +var alignMemory = (size, alignment) => { + assert(alignment, 'alignment argument is required'); + return Math.ceil(size / alignment) * alignment; +}; + +var wasmTableMirror = []; + +/** @type {WebAssembly.Table} */ +var wasmTable; +var getWasmTableEntry = (funcPtr) => { + var func = wasmTableMirror[funcPtr]; + if (!func) { + if (funcPtr >= wasmTableMirror.length) wasmTableMirror.length = funcPtr + 1; + wasmTableMirror[funcPtr] = func = wasmTable.get(funcPtr); + } + assert( + wasmTable.get(funcPtr) == func, + 'JavaScript-side Wasm function table mirror is out of date!', + ); + return func; +}; + +var incrementExceptionRefcount = (ptr) => ___cxa_increment_exception_refcount(ptr); +blst['incrementExceptionRefcount'] = incrementExceptionRefcount; + +var decrementExceptionRefcount = (ptr) => ___cxa_decrement_exception_refcount(ptr); +blst['decrementExceptionRefcount'] = decrementExceptionRefcount; + +var stackAlloc = (sz) => __emscripten_stack_alloc(sz); + +var getExceptionMessageCommon = (ptr) => { + var sp = stackSave(); + var type_addr_addr = stackAlloc(4); + var message_addr_addr = stackAlloc(4); + ___get_exception_message(ptr, type_addr_addr, message_addr_addr); + var type_addr = HEAPU32[type_addr_addr >> 2]; + var message_addr = HEAPU32[message_addr_addr >> 2]; + var type = UTF8ToString(type_addr); + _free(type_addr); + var message; + if (message_addr) { + message = UTF8ToString(message_addr); + _free(message_addr); + } + stackRestore(sp); + return [type, message]; +}; +var getExceptionMessage = (ptr) => getExceptionMessageCommon(ptr); +blst['getExceptionMessage'] = getExceptionMessage; function checkIncomingModuleAPI() { ignoredModuleProp('fetchSettings'); } @@ -1513,256 +1659,382 @@ var wasmImports = { /** @export */ invoke_viiii, /** @export */ - llvm_eh_typeid_for: _llvm_eh_typeid_for + llvm_eh_typeid_for: _llvm_eh_typeid_for, }; var wasmExports = createWasm(); var ___wasm_call_ctors = createExportWrapper('__wasm_call_ctors', 0); -var _webidl_free = blst['_webidl_free'] = createExportWrapper('webidl_free', 1); -var _free = blst['_free'] = createExportWrapper('free', 1); -var _webidl_malloc = blst['_webidl_malloc'] = createExportWrapper('webidl_malloc', 1); -var _malloc = blst['_malloc'] = createExportWrapper('malloc', 1); -var _emscripten_bind_VoidPtr___destroy___0 = blst['_emscripten_bind_VoidPtr___destroy___0'] = createExportWrapper('emscripten_bind_VoidPtr___destroy___0', 1); -var _const_G1 = blst['_const_G1'] = createExportWrapper('const_G1', 0); -var _const_G2 = blst['_const_G2'] = createExportWrapper('const_G2', 0); -var _const_NEG_G1 = blst['_const_NEG_G1'] = createExportWrapper('const_NEG_G1', 0); -var _const_NEG_G2 = blst['_const_NEG_G2'] = createExportWrapper('const_NEG_G2', 0); -var _SecretKey_0 = blst['_SecretKey_0'] = createExportWrapper('SecretKey_0', 0); -var _SecretKey__destroy__0 = blst['_SecretKey__destroy__0'] = createExportWrapper('SecretKey__destroy__0', 1); -var _SecretKey_keygen_3 = blst['_SecretKey_keygen_3'] = createExportWrapper('SecretKey_keygen_3', 4); -var _SecretKey_derive_master_eip2333_2 = blst['_SecretKey_derive_master_eip2333_2'] = createExportWrapper('SecretKey_derive_master_eip2333_2', 3); -var _SecretKey_derive_child_eip2333_2 = blst['_SecretKey_derive_child_eip2333_2'] = createExportWrapper('SecretKey_derive_child_eip2333_2', 3); -var _SecretKey_from_bendian_1 = blst['_SecretKey_from_bendian_1'] = createExportWrapper('SecretKey_from_bendian_1', 2); -var _SecretKey_from_lendian_1 = blst['_SecretKey_from_lendian_1'] = createExportWrapper('SecretKey_from_lendian_1', 2); -var _SecretKey_to_bendian_0 = blst['_SecretKey_to_bendian_0'] = createExportWrapper('SecretKey_to_bendian_0', 1); -var _SecretKey_to_lendian_0 = blst['_SecretKey_to_lendian_0'] = createExportWrapper('SecretKey_to_lendian_0', 1); -var _Scalar_0 = blst['_Scalar_0'] = createExportWrapper('Scalar_0', 0); -var _Scalar_2 = blst['_Scalar_2'] = createExportWrapper('Scalar_2', 2); -var _Scalar_3 = blst['_Scalar_3'] = createExportWrapper('Scalar_3', 3); -var _Scalar__destroy__0 = blst['_Scalar__destroy__0'] = createExportWrapper('Scalar__destroy__0', 1); -var _Scalar_hash_to_3 = blst['_Scalar_hash_to_3'] = createExportWrapper('Scalar_hash_to_3', 4); -var _Scalar_dup_0 = blst['_Scalar_dup_0'] = createExportWrapper('Scalar_dup_0', 1); -var _Scalar_from_bendian_2 = blst['_Scalar_from_bendian_2'] = createExportWrapper('Scalar_from_bendian_2', 3); -var _Scalar_from_lendian_2 = blst['_Scalar_from_lendian_2'] = createExportWrapper('Scalar_from_lendian_2', 3); -var _Scalar_to_bendian_0 = blst['_Scalar_to_bendian_0'] = createExportWrapper('Scalar_to_bendian_0', 1); -var _Scalar_to_lendian_0 = blst['_Scalar_to_lendian_0'] = createExportWrapper('Scalar_to_lendian_0', 1); -var _Scalar_add_1 = blst['_Scalar_add_1'] = createExportWrapper('Scalar_add_1', 2); -var _Scalar_sub_1 = blst['_Scalar_sub_1'] = createExportWrapper('Scalar_sub_1', 2); -var _Scalar_mul_1 = blst['_Scalar_mul_1'] = createExportWrapper('Scalar_mul_1', 2); -var _Scalar_inverse_0 = blst['_Scalar_inverse_0'] = createExportWrapper('Scalar_inverse_0', 1); -var _PT_p_affine_1 = blst['_PT_p_affine_1'] = createExportWrapper('PT_p_affine_1', 1); -var _PT_q_affine_1 = blst['_PT_q_affine_1'] = createExportWrapper('PT_q_affine_1', 1); -var _PT_pq_affine_2 = blst['_PT_pq_affine_2'] = createExportWrapper('PT_pq_affine_2', 2); -var _PT_pq_2 = blst['_PT_pq_2'] = createExportWrapper('PT_pq_2', 2); -var _PT__destroy__0 = blst['_PT__destroy__0'] = createExportWrapper('PT__destroy__0', 1); -var _PT_dup_0 = blst['_PT_dup_0'] = createExportWrapper('PT_dup_0', 1); -var _PT_is_one_0 = blst['_PT_is_one_0'] = createExportWrapper('PT_is_one_0', 1); -var _PT_is_equal_1 = blst['_PT_is_equal_1'] = createExportWrapper('PT_is_equal_1', 2); -var _PT_sqr_0 = blst['_PT_sqr_0'] = createExportWrapper('PT_sqr_0', 1); -var _PT_mul_1 = blst['_PT_mul_1'] = createExportWrapper('PT_mul_1', 2); -var _PT_final_exp_0 = blst['_PT_final_exp_0'] = createExportWrapper('PT_final_exp_0', 1); -var _PT_in_group_0 = blst['_PT_in_group_0'] = createExportWrapper('PT_in_group_0', 1); -var _PT_to_bendian_0 = blst['_PT_to_bendian_0'] = createExportWrapper('PT_to_bendian_0', 1); -var _PT_finalverify_2 = blst['_PT_finalverify_2'] = createExportWrapper('PT_finalverify_2', 2); -var _PT_one_0 = blst['_PT_one_0'] = createExportWrapper('PT_one_0', 0); -var _Pairing_2 = blst['_Pairing_2'] = createExportWrapper('Pairing_2', 2); -var _Pairing__destroy__0 = blst['_Pairing__destroy__0'] = createExportWrapper('Pairing__destroy__0', 1); -var _Pairing_commit_0 = blst['_Pairing_commit_0'] = createExportWrapper('Pairing_commit_0', 1); -var _Pairing_sizeof_0 = blst['_Pairing_sizeof_0'] = createExportWrapper('Pairing_sizeof_0', 0); -var _Pairing_merge_1 = blst['_Pairing_merge_1'] = createExportWrapper('Pairing_merge_1', 2); -var _Pairing_finalverify_1 = blst['_Pairing_finalverify_1'] = createExportWrapper('Pairing_finalverify_1', 2); -var _Pairing_raw_aggregate_2 = blst['_Pairing_raw_aggregate_2'] = createExportWrapper('Pairing_raw_aggregate_2', 3); -var _Pairing_as_fp12_0 = blst['_Pairing_as_fp12_0'] = createExportWrapper('Pairing_as_fp12_0', 1); -var _P1_Affine_0 = blst['_P1_Affine_0'] = createExportWrapper('P1_Affine_0', 0); -var _P1_Affine_1 = blst['_P1_Affine_1'] = createExportWrapper('P1_Affine_1', 1); -var _P1_Affine_2 = blst['_P1_Affine_2'] = createExportWrapper('P1_Affine_2', 2); -var _P1_Affine__destroy__0 = blst['_P1_Affine__destroy__0'] = createExportWrapper('P1_Affine__destroy__0', 1); -var _P1_Affine_dup_0 = blst['_P1_Affine_dup_0'] = createExportWrapper('P1_Affine_dup_0', 1); -var _P1_Affine_to_jacobian_0 = blst['_P1_Affine_to_jacobian_0'] = createExportWrapper('P1_Affine_to_jacobian_0', 1); -var _P1_Affine_serialize_0 = blst['_P1_Affine_serialize_0'] = createExportWrapper('P1_Affine_serialize_0', 1); -var _P1_Affine_compress_0 = blst['_P1_Affine_compress_0'] = createExportWrapper('P1_Affine_compress_0', 1); -var _P1_Affine_on_curve_0 = blst['_P1_Affine_on_curve_0'] = createExportWrapper('P1_Affine_on_curve_0', 1); -var _P1_Affine_in_group_0 = blst['_P1_Affine_in_group_0'] = createExportWrapper('P1_Affine_in_group_0', 1); -var _P1_Affine_is_inf_0 = blst['_P1_Affine_is_inf_0'] = createExportWrapper('P1_Affine_is_inf_0', 1); -var _P1_Affine_is_equal_1 = blst['_P1_Affine_is_equal_1'] = createExportWrapper('P1_Affine_is_equal_1', 2); -var _P1_Affine_core_verify_7 = blst['_P1_Affine_core_verify_7'] = createExportWrapper('P1_Affine_core_verify_7', 8); -var _P1_Affine_generator_0 = blst['_P1_Affine_generator_0'] = createExportWrapper('P1_Affine_generator_0', 0); -var _P1_0 = blst['_P1_0'] = createExportWrapper('P1_0', 0); -var _P1_affine_1 = blst['_P1_affine_1'] = createExportWrapper('P1_affine_1', 1); -var _P1_secretkey_1 = blst['_P1_secretkey_1'] = createExportWrapper('P1_secretkey_1', 1); -var _P1_2 = blst['_P1_2'] = createExportWrapper('P1_2', 2); -var _P1__destroy__0 = blst['_P1__destroy__0'] = createExportWrapper('P1__destroy__0', 1); -var _P1_dup_0 = blst['_P1_dup_0'] = createExportWrapper('P1_dup_0', 1); -var _P1_to_affine_0 = blst['_P1_to_affine_0'] = createExportWrapper('P1_to_affine_0', 1); -var _P1_serialize_0 = blst['_P1_serialize_0'] = createExportWrapper('P1_serialize_0', 1); -var _P1_compress_0 = blst['_P1_compress_0'] = createExportWrapper('P1_compress_0', 1); -var _P1_on_curve_0 = blst['_P1_on_curve_0'] = createExportWrapper('P1_on_curve_0', 1); -var _P1_in_group_0 = blst['_P1_in_group_0'] = createExportWrapper('P1_in_group_0', 1); -var _P1_is_inf_0 = blst['_P1_is_inf_0'] = createExportWrapper('P1_is_inf_0', 1); -var _P1_is_equal_1 = blst['_P1_is_equal_1'] = createExportWrapper('P1_is_equal_1', 2); -var _P1_aggregate_1 = blst['_P1_aggregate_1'] = createExportWrapper('P1_aggregate_1', 2); -var _P1_sign_with_1 = blst['_P1_sign_with_1'] = createExportWrapper('P1_sign_with_1', 2); -var _P1_hash_to_5 = blst['_P1_hash_to_5'] = createExportWrapper('P1_hash_to_5', 6); -var _P1_encode_to_5 = blst['_P1_encode_to_5'] = createExportWrapper('P1_encode_to_5', 6); -var _P1_mult_1 = blst['_P1_mult_1'] = createExportWrapper('P1_mult_1', 2); -var _P1_mult_2 = blst['_P1_mult_2'] = createExportWrapper('P1_mult_2', 3); -var _P1_cneg_1 = blst['_P1_cneg_1'] = createExportWrapper('P1_cneg_1', 2); -var _P1_add_1 = blst['_P1_add_1'] = createExportWrapper('P1_add_1', 2); -var _P1_add_affine_1 = blst['_P1_add_affine_1'] = createExportWrapper('P1_add_affine_1', 2); -var _P1_dbl_0 = blst['_P1_dbl_0'] = createExportWrapper('P1_dbl_0', 1); -var _P1_generator_0 = blst['_P1_generator_0'] = createExportWrapper('P1_generator_0', 0); -var _Pairing_aggregate_pk_in_g1_6 = blst['_Pairing_aggregate_pk_in_g1_6'] = createExportWrapper('Pairing_aggregate_pk_in_g1_6', 7); -var _Pairing_mul_n_aggregate_pk_in_g1_8 = blst['_Pairing_mul_n_aggregate_pk_in_g1_8'] = createExportWrapper('Pairing_mul_n_aggregate_pk_in_g1_8', 9); -var _P2_Affine_0 = blst['_P2_Affine_0'] = createExportWrapper('P2_Affine_0', 0); -var _P2_Affine_1 = blst['_P2_Affine_1'] = createExportWrapper('P2_Affine_1', 1); -var _P2_Affine_2 = blst['_P2_Affine_2'] = createExportWrapper('P2_Affine_2', 2); -var _P2_Affine__destroy__0 = blst['_P2_Affine__destroy__0'] = createExportWrapper('P2_Affine__destroy__0', 1); -var _P2_Affine_dup_0 = blst['_P2_Affine_dup_0'] = createExportWrapper('P2_Affine_dup_0', 1); -var _P2_Affine_to_jacobian_0 = blst['_P2_Affine_to_jacobian_0'] = createExportWrapper('P2_Affine_to_jacobian_0', 1); -var _P2_Affine_serialize_0 = blst['_P2_Affine_serialize_0'] = createExportWrapper('P2_Affine_serialize_0', 1); -var _P2_Affine_compress_0 = blst['_P2_Affine_compress_0'] = createExportWrapper('P2_Affine_compress_0', 1); -var _P2_Affine_on_curve_0 = blst['_P2_Affine_on_curve_0'] = createExportWrapper('P2_Affine_on_curve_0', 1); -var _P2_Affine_in_group_0 = blst['_P2_Affine_in_group_0'] = createExportWrapper('P2_Affine_in_group_0', 1); -var _P2_Affine_is_inf_0 = blst['_P2_Affine_is_inf_0'] = createExportWrapper('P2_Affine_is_inf_0', 1); -var _P2_Affine_is_equal_1 = blst['_P2_Affine_is_equal_1'] = createExportWrapper('P2_Affine_is_equal_1', 2); -var _P2_Affine_core_verify_7 = blst['_P2_Affine_core_verify_7'] = createExportWrapper('P2_Affine_core_verify_7', 8); -var _P2_Affine_generator_0 = blst['_P2_Affine_generator_0'] = createExportWrapper('P2_Affine_generator_0', 0); -var _P2_0 = blst['_P2_0'] = createExportWrapper('P2_0', 0); -var _P2_affine_1 = blst['_P2_affine_1'] = createExportWrapper('P2_affine_1', 1); -var _P2_secretkey_1 = blst['_P2_secretkey_1'] = createExportWrapper('P2_secretkey_1', 1); -var _P2_2 = blst['_P2_2'] = createExportWrapper('P2_2', 2); -var _P2__destroy__0 = blst['_P2__destroy__0'] = createExportWrapper('P2__destroy__0', 1); -var _P2_dup_0 = blst['_P2_dup_0'] = createExportWrapper('P2_dup_0', 1); -var _P2_to_affine_0 = blst['_P2_to_affine_0'] = createExportWrapper('P2_to_affine_0', 1); -var _P2_serialize_0 = blst['_P2_serialize_0'] = createExportWrapper('P2_serialize_0', 1); -var _P2_compress_0 = blst['_P2_compress_0'] = createExportWrapper('P2_compress_0', 1); -var _P2_on_curve_0 = blst['_P2_on_curve_0'] = createExportWrapper('P2_on_curve_0', 1); -var _P2_in_group_0 = blst['_P2_in_group_0'] = createExportWrapper('P2_in_group_0', 1); -var _P2_is_inf_0 = blst['_P2_is_inf_0'] = createExportWrapper('P2_is_inf_0', 1); -var _P2_is_equal_1 = blst['_P2_is_equal_1'] = createExportWrapper('P2_is_equal_1', 2); -var _P2_aggregate_1 = blst['_P2_aggregate_1'] = createExportWrapper('P2_aggregate_1', 2); -var _P2_sign_with_1 = blst['_P2_sign_with_1'] = createExportWrapper('P2_sign_with_1', 2); -var _P2_hash_to_5 = blst['_P2_hash_to_5'] = createExportWrapper('P2_hash_to_5', 6); -var _P2_encode_to_5 = blst['_P2_encode_to_5'] = createExportWrapper('P2_encode_to_5', 6); -var _P2_mult_1 = blst['_P2_mult_1'] = createExportWrapper('P2_mult_1', 2); -var _P2_mult_2 = blst['_P2_mult_2'] = createExportWrapper('P2_mult_2', 3); -var _P2_cneg_1 = blst['_P2_cneg_1'] = createExportWrapper('P2_cneg_1', 2); -var _P2_add_1 = blst['_P2_add_1'] = createExportWrapper('P2_add_1', 2); -var _P2_add_affine_1 = blst['_P2_add_affine_1'] = createExportWrapper('P2_add_affine_1', 2); -var _P2_dbl_0 = blst['_P2_dbl_0'] = createExportWrapper('P2_dbl_0', 1); -var _P2_generator_0 = blst['_P2_generator_0'] = createExportWrapper('P2_generator_0', 0); -var _Pairing_aggregate_pk_in_g2_6 = blst['_Pairing_aggregate_pk_in_g2_6'] = createExportWrapper('Pairing_aggregate_pk_in_g2_6', 7); -var _Pairing_mul_n_aggregate_pk_in_g2_8 = blst['_Pairing_mul_n_aggregate_pk_in_g2_8'] = createExportWrapper('Pairing_mul_n_aggregate_pk_in_g2_8', 9); +var _webidl_free = (blst['_webidl_free'] = createExportWrapper('webidl_free', 1)); +var _free = (blst['_free'] = createExportWrapper('free', 1)); +var _webidl_malloc = (blst['_webidl_malloc'] = createExportWrapper('webidl_malloc', 1)); +var _malloc = (blst['_malloc'] = createExportWrapper('malloc', 1)); +var _emscripten_bind_VoidPtr___destroy___0 = (blst['_emscripten_bind_VoidPtr___destroy___0'] = + createExportWrapper('emscripten_bind_VoidPtr___destroy___0', 1)); +var _const_G1 = (blst['_const_G1'] = createExportWrapper('const_G1', 0)); +var _const_G2 = (blst['_const_G2'] = createExportWrapper('const_G2', 0)); +var _const_NEG_G1 = (blst['_const_NEG_G1'] = createExportWrapper('const_NEG_G1', 0)); +var _const_NEG_G2 = (blst['_const_NEG_G2'] = createExportWrapper('const_NEG_G2', 0)); +var _SecretKey_0 = (blst['_SecretKey_0'] = createExportWrapper('SecretKey_0', 0)); +var _SecretKey__destroy__0 = (blst['_SecretKey__destroy__0'] = createExportWrapper( + 'SecretKey__destroy__0', + 1, +)); +var _SecretKey_keygen_3 = (blst['_SecretKey_keygen_3'] = createExportWrapper( + 'SecretKey_keygen_3', + 4, +)); +var _SecretKey_derive_master_eip2333_2 = (blst['_SecretKey_derive_master_eip2333_2'] = + createExportWrapper('SecretKey_derive_master_eip2333_2', 3)); +var _SecretKey_derive_child_eip2333_2 = (blst['_SecretKey_derive_child_eip2333_2'] = + createExportWrapper('SecretKey_derive_child_eip2333_2', 3)); +var _SecretKey_from_bendian_1 = (blst['_SecretKey_from_bendian_1'] = createExportWrapper( + 'SecretKey_from_bendian_1', + 2, +)); +var _SecretKey_from_lendian_1 = (blst['_SecretKey_from_lendian_1'] = createExportWrapper( + 'SecretKey_from_lendian_1', + 2, +)); +var _SecretKey_to_bendian_0 = (blst['_SecretKey_to_bendian_0'] = createExportWrapper( + 'SecretKey_to_bendian_0', + 1, +)); +var _SecretKey_to_lendian_0 = (blst['_SecretKey_to_lendian_0'] = createExportWrapper( + 'SecretKey_to_lendian_0', + 1, +)); +var _Scalar_0 = (blst['_Scalar_0'] = createExportWrapper('Scalar_0', 0)); +var _Scalar_2 = (blst['_Scalar_2'] = createExportWrapper('Scalar_2', 2)); +var _Scalar_3 = (blst['_Scalar_3'] = createExportWrapper('Scalar_3', 3)); +var _Scalar__destroy__0 = (blst['_Scalar__destroy__0'] = createExportWrapper( + 'Scalar__destroy__0', + 1, +)); +var _Scalar_hash_to_3 = (blst['_Scalar_hash_to_3'] = createExportWrapper('Scalar_hash_to_3', 4)); +var _Scalar_dup_0 = (blst['_Scalar_dup_0'] = createExportWrapper('Scalar_dup_0', 1)); +var _Scalar_from_bendian_2 = (blst['_Scalar_from_bendian_2'] = createExportWrapper( + 'Scalar_from_bendian_2', + 3, +)); +var _Scalar_from_lendian_2 = (blst['_Scalar_from_lendian_2'] = createExportWrapper( + 'Scalar_from_lendian_2', + 3, +)); +var _Scalar_to_bendian_0 = (blst['_Scalar_to_bendian_0'] = createExportWrapper( + 'Scalar_to_bendian_0', + 1, +)); +var _Scalar_to_lendian_0 = (blst['_Scalar_to_lendian_0'] = createExportWrapper( + 'Scalar_to_lendian_0', + 1, +)); +var _Scalar_add_1 = (blst['_Scalar_add_1'] = createExportWrapper('Scalar_add_1', 2)); +var _Scalar_sub_1 = (blst['_Scalar_sub_1'] = createExportWrapper('Scalar_sub_1', 2)); +var _Scalar_mul_1 = (blst['_Scalar_mul_1'] = createExportWrapper('Scalar_mul_1', 2)); +var _Scalar_inverse_0 = (blst['_Scalar_inverse_0'] = createExportWrapper('Scalar_inverse_0', 1)); +var _PT_p_affine_1 = (blst['_PT_p_affine_1'] = createExportWrapper('PT_p_affine_1', 1)); +var _PT_q_affine_1 = (blst['_PT_q_affine_1'] = createExportWrapper('PT_q_affine_1', 1)); +var _PT_pq_affine_2 = (blst['_PT_pq_affine_2'] = createExportWrapper('PT_pq_affine_2', 2)); +var _PT_pq_2 = (blst['_PT_pq_2'] = createExportWrapper('PT_pq_2', 2)); +var _PT__destroy__0 = (blst['_PT__destroy__0'] = createExportWrapper('PT__destroy__0', 1)); +var _PT_dup_0 = (blst['_PT_dup_0'] = createExportWrapper('PT_dup_0', 1)); +var _PT_is_one_0 = (blst['_PT_is_one_0'] = createExportWrapper('PT_is_one_0', 1)); +var _PT_is_equal_1 = (blst['_PT_is_equal_1'] = createExportWrapper('PT_is_equal_1', 2)); +var _PT_sqr_0 = (blst['_PT_sqr_0'] = createExportWrapper('PT_sqr_0', 1)); +var _PT_mul_1 = (blst['_PT_mul_1'] = createExportWrapper('PT_mul_1', 2)); +var _PT_final_exp_0 = (blst['_PT_final_exp_0'] = createExportWrapper('PT_final_exp_0', 1)); +var _PT_in_group_0 = (blst['_PT_in_group_0'] = createExportWrapper('PT_in_group_0', 1)); +var _PT_to_bendian_0 = (blst['_PT_to_bendian_0'] = createExportWrapper('PT_to_bendian_0', 1)); +var _PT_finalverify_2 = (blst['_PT_finalverify_2'] = createExportWrapper('PT_finalverify_2', 2)); +var _PT_one_0 = (blst['_PT_one_0'] = createExportWrapper('PT_one_0', 0)); +var _Pairing_2 = (blst['_Pairing_2'] = createExportWrapper('Pairing_2', 2)); +var _Pairing__destroy__0 = (blst['_Pairing__destroy__0'] = createExportWrapper( + 'Pairing__destroy__0', + 1, +)); +var _Pairing_commit_0 = (blst['_Pairing_commit_0'] = createExportWrapper('Pairing_commit_0', 1)); +var _Pairing_sizeof_0 = (blst['_Pairing_sizeof_0'] = createExportWrapper('Pairing_sizeof_0', 0)); +var _Pairing_merge_1 = (blst['_Pairing_merge_1'] = createExportWrapper('Pairing_merge_1', 2)); +var _Pairing_finalverify_1 = (blst['_Pairing_finalverify_1'] = createExportWrapper( + 'Pairing_finalverify_1', + 2, +)); +var _Pairing_raw_aggregate_2 = (blst['_Pairing_raw_aggregate_2'] = createExportWrapper( + 'Pairing_raw_aggregate_2', + 3, +)); +var _Pairing_as_fp12_0 = (blst['_Pairing_as_fp12_0'] = createExportWrapper('Pairing_as_fp12_0', 1)); +var _P1_Affine_0 = (blst['_P1_Affine_0'] = createExportWrapper('P1_Affine_0', 0)); +var _P1_Affine_1 = (blst['_P1_Affine_1'] = createExportWrapper('P1_Affine_1', 1)); +var _P1_Affine_2 = (blst['_P1_Affine_2'] = createExportWrapper('P1_Affine_2', 2)); +var _P1_Affine__destroy__0 = (blst['_P1_Affine__destroy__0'] = createExportWrapper( + 'P1_Affine__destroy__0', + 1, +)); +var _P1_Affine_dup_0 = (blst['_P1_Affine_dup_0'] = createExportWrapper('P1_Affine_dup_0', 1)); +var _P1_Affine_to_jacobian_0 = (blst['_P1_Affine_to_jacobian_0'] = createExportWrapper( + 'P1_Affine_to_jacobian_0', + 1, +)); +var _P1_Affine_serialize_0 = (blst['_P1_Affine_serialize_0'] = createExportWrapper( + 'P1_Affine_serialize_0', + 1, +)); +var _P1_Affine_compress_0 = (blst['_P1_Affine_compress_0'] = createExportWrapper( + 'P1_Affine_compress_0', + 1, +)); +var _P1_Affine_on_curve_0 = (blst['_P1_Affine_on_curve_0'] = createExportWrapper( + 'P1_Affine_on_curve_0', + 1, +)); +var _P1_Affine_in_group_0 = (blst['_P1_Affine_in_group_0'] = createExportWrapper( + 'P1_Affine_in_group_0', + 1, +)); +var _P1_Affine_is_inf_0 = (blst['_P1_Affine_is_inf_0'] = createExportWrapper( + 'P1_Affine_is_inf_0', + 1, +)); +var _P1_Affine_is_equal_1 = (blst['_P1_Affine_is_equal_1'] = createExportWrapper( + 'P1_Affine_is_equal_1', + 2, +)); +var _P1_Affine_core_verify_7 = (blst['_P1_Affine_core_verify_7'] = createExportWrapper( + 'P1_Affine_core_verify_7', + 8, +)); +var _P1_Affine_generator_0 = (blst['_P1_Affine_generator_0'] = createExportWrapper( + 'P1_Affine_generator_0', + 0, +)); +var _P1_0 = (blst['_P1_0'] = createExportWrapper('P1_0', 0)); +var _P1_affine_1 = (blst['_P1_affine_1'] = createExportWrapper('P1_affine_1', 1)); +var _P1_secretkey_1 = (blst['_P1_secretkey_1'] = createExportWrapper('P1_secretkey_1', 1)); +var _P1_2 = (blst['_P1_2'] = createExportWrapper('P1_2', 2)); +var _P1__destroy__0 = (blst['_P1__destroy__0'] = createExportWrapper('P1__destroy__0', 1)); +var _P1_dup_0 = (blst['_P1_dup_0'] = createExportWrapper('P1_dup_0', 1)); +var _P1_to_affine_0 = (blst['_P1_to_affine_0'] = createExportWrapper('P1_to_affine_0', 1)); +var _P1_serialize_0 = (blst['_P1_serialize_0'] = createExportWrapper('P1_serialize_0', 1)); +var _P1_compress_0 = (blst['_P1_compress_0'] = createExportWrapper('P1_compress_0', 1)); +var _P1_on_curve_0 = (blst['_P1_on_curve_0'] = createExportWrapper('P1_on_curve_0', 1)); +var _P1_in_group_0 = (blst['_P1_in_group_0'] = createExportWrapper('P1_in_group_0', 1)); +var _P1_is_inf_0 = (blst['_P1_is_inf_0'] = createExportWrapper('P1_is_inf_0', 1)); +var _P1_is_equal_1 = (blst['_P1_is_equal_1'] = createExportWrapper('P1_is_equal_1', 2)); +var _P1_aggregate_1 = (blst['_P1_aggregate_1'] = createExportWrapper('P1_aggregate_1', 2)); +var _P1_sign_with_1 = (blst['_P1_sign_with_1'] = createExportWrapper('P1_sign_with_1', 2)); +var _P1_hash_to_5 = (blst['_P1_hash_to_5'] = createExportWrapper('P1_hash_to_5', 6)); +var _P1_encode_to_5 = (blst['_P1_encode_to_5'] = createExportWrapper('P1_encode_to_5', 6)); +var _P1_mult_1 = (blst['_P1_mult_1'] = createExportWrapper('P1_mult_1', 2)); +var _P1_mult_2 = (blst['_P1_mult_2'] = createExportWrapper('P1_mult_2', 3)); +var _P1_cneg_1 = (blst['_P1_cneg_1'] = createExportWrapper('P1_cneg_1', 2)); +var _P1_add_1 = (blst['_P1_add_1'] = createExportWrapper('P1_add_1', 2)); +var _P1_add_affine_1 = (blst['_P1_add_affine_1'] = createExportWrapper('P1_add_affine_1', 2)); +var _P1_dbl_0 = (blst['_P1_dbl_0'] = createExportWrapper('P1_dbl_0', 1)); +var _P1_generator_0 = (blst['_P1_generator_0'] = createExportWrapper('P1_generator_0', 0)); +var _Pairing_aggregate_pk_in_g1_6 = (blst['_Pairing_aggregate_pk_in_g1_6'] = createExportWrapper( + 'Pairing_aggregate_pk_in_g1_6', + 7, +)); +var _Pairing_mul_n_aggregate_pk_in_g1_8 = (blst['_Pairing_mul_n_aggregate_pk_in_g1_8'] = + createExportWrapper('Pairing_mul_n_aggregate_pk_in_g1_8', 9)); +var _P2_Affine_0 = (blst['_P2_Affine_0'] = createExportWrapper('P2_Affine_0', 0)); +var _P2_Affine_1 = (blst['_P2_Affine_1'] = createExportWrapper('P2_Affine_1', 1)); +var _P2_Affine_2 = (blst['_P2_Affine_2'] = createExportWrapper('P2_Affine_2', 2)); +var _P2_Affine__destroy__0 = (blst['_P2_Affine__destroy__0'] = createExportWrapper( + 'P2_Affine__destroy__0', + 1, +)); +var _P2_Affine_dup_0 = (blst['_P2_Affine_dup_0'] = createExportWrapper('P2_Affine_dup_0', 1)); +var _P2_Affine_to_jacobian_0 = (blst['_P2_Affine_to_jacobian_0'] = createExportWrapper( + 'P2_Affine_to_jacobian_0', + 1, +)); +var _P2_Affine_serialize_0 = (blst['_P2_Affine_serialize_0'] = createExportWrapper( + 'P2_Affine_serialize_0', + 1, +)); +var _P2_Affine_compress_0 = (blst['_P2_Affine_compress_0'] = createExportWrapper( + 'P2_Affine_compress_0', + 1, +)); +var _P2_Affine_on_curve_0 = (blst['_P2_Affine_on_curve_0'] = createExportWrapper( + 'P2_Affine_on_curve_0', + 1, +)); +var _P2_Affine_in_group_0 = (blst['_P2_Affine_in_group_0'] = createExportWrapper( + 'P2_Affine_in_group_0', + 1, +)); +var _P2_Affine_is_inf_0 = (blst['_P2_Affine_is_inf_0'] = createExportWrapper( + 'P2_Affine_is_inf_0', + 1, +)); +var _P2_Affine_is_equal_1 = (blst['_P2_Affine_is_equal_1'] = createExportWrapper( + 'P2_Affine_is_equal_1', + 2, +)); +var _P2_Affine_core_verify_7 = (blst['_P2_Affine_core_verify_7'] = createExportWrapper( + 'P2_Affine_core_verify_7', + 8, +)); +var _P2_Affine_generator_0 = (blst['_P2_Affine_generator_0'] = createExportWrapper( + 'P2_Affine_generator_0', + 0, +)); +var _P2_0 = (blst['_P2_0'] = createExportWrapper('P2_0', 0)); +var _P2_affine_1 = (blst['_P2_affine_1'] = createExportWrapper('P2_affine_1', 1)); +var _P2_secretkey_1 = (blst['_P2_secretkey_1'] = createExportWrapper('P2_secretkey_1', 1)); +var _P2_2 = (blst['_P2_2'] = createExportWrapper('P2_2', 2)); +var _P2__destroy__0 = (blst['_P2__destroy__0'] = createExportWrapper('P2__destroy__0', 1)); +var _P2_dup_0 = (blst['_P2_dup_0'] = createExportWrapper('P2_dup_0', 1)); +var _P2_to_affine_0 = (blst['_P2_to_affine_0'] = createExportWrapper('P2_to_affine_0', 1)); +var _P2_serialize_0 = (blst['_P2_serialize_0'] = createExportWrapper('P2_serialize_0', 1)); +var _P2_compress_0 = (blst['_P2_compress_0'] = createExportWrapper('P2_compress_0', 1)); +var _P2_on_curve_0 = (blst['_P2_on_curve_0'] = createExportWrapper('P2_on_curve_0', 1)); +var _P2_in_group_0 = (blst['_P2_in_group_0'] = createExportWrapper('P2_in_group_0', 1)); +var _P2_is_inf_0 = (blst['_P2_is_inf_0'] = createExportWrapper('P2_is_inf_0', 1)); +var _P2_is_equal_1 = (blst['_P2_is_equal_1'] = createExportWrapper('P2_is_equal_1', 2)); +var _P2_aggregate_1 = (blst['_P2_aggregate_1'] = createExportWrapper('P2_aggregate_1', 2)); +var _P2_sign_with_1 = (blst['_P2_sign_with_1'] = createExportWrapper('P2_sign_with_1', 2)); +var _P2_hash_to_5 = (blst['_P2_hash_to_5'] = createExportWrapper('P2_hash_to_5', 6)); +var _P2_encode_to_5 = (blst['_P2_encode_to_5'] = createExportWrapper('P2_encode_to_5', 6)); +var _P2_mult_1 = (blst['_P2_mult_1'] = createExportWrapper('P2_mult_1', 2)); +var _P2_mult_2 = (blst['_P2_mult_2'] = createExportWrapper('P2_mult_2', 3)); +var _P2_cneg_1 = (blst['_P2_cneg_1'] = createExportWrapper('P2_cneg_1', 2)); +var _P2_add_1 = (blst['_P2_add_1'] = createExportWrapper('P2_add_1', 2)); +var _P2_add_affine_1 = (blst['_P2_add_affine_1'] = createExportWrapper('P2_add_affine_1', 2)); +var _P2_dbl_0 = (blst['_P2_dbl_0'] = createExportWrapper('P2_dbl_0', 1)); +var _P2_generator_0 = (blst['_P2_generator_0'] = createExportWrapper('P2_generator_0', 0)); +var _Pairing_aggregate_pk_in_g2_6 = (blst['_Pairing_aggregate_pk_in_g2_6'] = createExportWrapper( + 'Pairing_aggregate_pk_in_g2_6', + 7, +)); +var _Pairing_mul_n_aggregate_pk_in_g2_8 = (blst['_Pairing_mul_n_aggregate_pk_in_g2_8'] = + createExportWrapper('Pairing_mul_n_aggregate_pk_in_g2_8', 9)); var _fflush = createExportWrapper('fflush', 1); var _setThrew = createExportWrapper('setThrew', 2); var __emscripten_tempret_set = createExportWrapper('_emscripten_tempret_set', 1); -var _emscripten_stack_init = () => (_emscripten_stack_init = wasmExports['emscripten_stack_init'])(); -var _emscripten_stack_get_free = () => (_emscripten_stack_get_free = wasmExports['emscripten_stack_get_free'])(); -var _emscripten_stack_get_base = () => (_emscripten_stack_get_base = wasmExports['emscripten_stack_get_base'])(); -var _emscripten_stack_get_end = () => (_emscripten_stack_get_end = wasmExports['emscripten_stack_get_end'])(); -var __emscripten_stack_restore = (a0) => (__emscripten_stack_restore = wasmExports['_emscripten_stack_restore'])(a0); -var __emscripten_stack_alloc = (a0) => (__emscripten_stack_alloc = wasmExports['_emscripten_stack_alloc'])(a0); -var _emscripten_stack_get_current = () => (_emscripten_stack_get_current = wasmExports['emscripten_stack_get_current'])(); +var _emscripten_stack_init = () => + (_emscripten_stack_init = wasmExports['emscripten_stack_init'])(); +var _emscripten_stack_get_free = () => + (_emscripten_stack_get_free = wasmExports['emscripten_stack_get_free'])(); +var _emscripten_stack_get_base = () => + (_emscripten_stack_get_base = wasmExports['emscripten_stack_get_base'])(); +var _emscripten_stack_get_end = () => + (_emscripten_stack_get_end = wasmExports['emscripten_stack_get_end'])(); +var __emscripten_stack_restore = (a0) => + (__emscripten_stack_restore = wasmExports['_emscripten_stack_restore'])(a0); +var __emscripten_stack_alloc = (a0) => + (__emscripten_stack_alloc = wasmExports['_emscripten_stack_alloc'])(a0); +var _emscripten_stack_get_current = () => + (_emscripten_stack_get_current = wasmExports['emscripten_stack_get_current'])(); var ___cxa_free_exception = createExportWrapper('__cxa_free_exception', 1); -var ___cxa_increment_exception_refcount = createExportWrapper('__cxa_increment_exception_refcount', 1); -var ___cxa_decrement_exception_refcount = createExportWrapper('__cxa_decrement_exception_refcount', 1); +var ___cxa_increment_exception_refcount = createExportWrapper( + '__cxa_increment_exception_refcount', + 1, +); +var ___cxa_decrement_exception_refcount = createExportWrapper( + '__cxa_decrement_exception_refcount', + 1, +); var ___get_exception_message = createExportWrapper('__get_exception_message', 3); var ___cxa_can_catch = createExportWrapper('__cxa_can_catch', 3); var ___cxa_is_pointer_type = createExportWrapper('__cxa_is_pointer_type', 1); -var dynCall_jiji = blst['dynCall_jiji'] = createExportWrapper('dynCall_jiji', 5); +var dynCall_jiji = (blst['dynCall_jiji'] = createExportWrapper('dynCall_jiji', 5)); -function invoke_viiii(index,a1,a2,a3,a4) { +function invoke_viiii(index, a1, a2, a3, a4) { var sp = stackSave(); try { - getWasmTableEntry(index)(a1,a2,a3,a4); - } catch(e) { + getWasmTableEntry(index)(a1, a2, a3, a4); + } catch (e) { stackRestore(sp); if (!(e instanceof EmscriptenEH)) throw e; _setThrew(1, 0); } } -function invoke_iiii(index,a1,a2,a3) { +function invoke_iiii(index, a1, a2, a3) { var sp = stackSave(); try { - return getWasmTableEntry(index)(a1,a2,a3); - } catch(e) { + return getWasmTableEntry(index)(a1, a2, a3); + } catch (e) { stackRestore(sp); if (!(e instanceof EmscriptenEH)) throw e; _setThrew(1, 0); } } -function invoke_iii(index,a1,a2) { +function invoke_iii(index, a1, a2) { var sp = stackSave(); try { - return getWasmTableEntry(index)(a1,a2); - } catch(e) { + return getWasmTableEntry(index)(a1, a2); + } catch (e) { stackRestore(sp); if (!(e instanceof EmscriptenEH)) throw e; _setThrew(1, 0); } } -function invoke_iiiii(index,a1,a2,a3,a4) { +function invoke_iiiii(index, a1, a2, a3, a4) { var sp = stackSave(); try { - return getWasmTableEntry(index)(a1,a2,a3,a4); - } catch(e) { + return getWasmTableEntry(index)(a1, a2, a3, a4); + } catch (e) { stackRestore(sp); if (!(e instanceof EmscriptenEH)) throw e; _setThrew(1, 0); } } -function invoke_vi(index,a1) { +function invoke_vi(index, a1) { var sp = stackSave(); try { getWasmTableEntry(index)(a1); - } catch(e) { + } catch (e) { stackRestore(sp); if (!(e instanceof EmscriptenEH)) throw e; _setThrew(1, 0); } } -function invoke_ii(index,a1) { +function invoke_ii(index, a1) { var sp = stackSave(); try { return getWasmTableEntry(index)(a1); - } catch(e) { + } catch (e) { stackRestore(sp); if (!(e instanceof EmscriptenEH)) throw e; _setThrew(1, 0); } } -function invoke_vii(index,a1,a2) { +function invoke_vii(index, a1, a2) { var sp = stackSave(); try { - getWasmTableEntry(index)(a1,a2); - } catch(e) { + getWasmTableEntry(index)(a1, a2); + } catch (e) { stackRestore(sp); if (!(e instanceof EmscriptenEH)) throw e; _setThrew(1, 0); } } -function invoke_iiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8) { +function invoke_iiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8) { var sp = stackSave(); try { - return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8); - } catch(e) { + return getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8); + } catch (e) { stackRestore(sp); if (!(e instanceof EmscriptenEH)) throw e; _setThrew(1, 0); } } -function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6) { +function invoke_iiiiiii(index, a1, a2, a3, a4, a5, a6) { var sp = stackSave(); try { - return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6); - } catch(e) { + return getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6); + } catch (e) { stackRestore(sp); if (!(e instanceof EmscriptenEH)) throw e; _setThrew(1, 0); @@ -1773,25 +2045,24 @@ function invoke_v(index) { var sp = stackSave(); try { getWasmTableEntry(index)(); - } catch(e) { + } catch (e) { stackRestore(sp); if (!(e instanceof EmscriptenEH)) throw e; _setThrew(1, 0); } } -function invoke_viii(index,a1,a2,a3) { +function invoke_viii(index, a1, a2, a3) { var sp = stackSave(); try { - getWasmTableEntry(index)(a1,a2,a3); - } catch(e) { + getWasmTableEntry(index)(a1, a2, a3); + } catch (e) { stackRestore(sp); if (!(e instanceof EmscriptenEH)) throw e; _setThrew(1, 0); } } - // include: postamble.js // === Auto-generated postamble setup entry stuff === @@ -1972,7 +2243,7 @@ var missingLibrarySymbols = [ 'demangle', 'stackTrace', ]; -missingLibrarySymbols.forEach(missingLibrarySymbol) +missingLibrarySymbols.forEach(missingLibrarySymbol); var unexportedSymbols = [ 'run', @@ -2080,8 +2351,6 @@ var unexportedSymbols = [ ]; unexportedSymbols.forEach(unexportedRuntimeSymbol); - - var calledRun; dependenciesFulfilled = function runCaller() { @@ -2100,12 +2369,11 @@ function stackCheckInit() { } function run() { - if (runDependencies > 0) { return; } - stackCheckInit(); + stackCheckInit(); preRun(); @@ -2127,21 +2395,23 @@ function run() { if (blst['onRuntimeInitialized']) blst['onRuntimeInitialized'](); - assert(!blst['_main'], 'compiled without a main, but one is present. if you added it from JS, use blst["onRuntimeInitialized"]'); + assert( + !blst['_main'], + 'compiled without a main, but one is present. if you added it from JS, use blst["onRuntimeInitialized"]', + ); postRun(); } if (blst['setStatus']) { blst['setStatus']('Running...'); - setTimeout(function() { - setTimeout(function() { + setTimeout(function () { + setTimeout(function () { blst['setStatus'](''); }, 1); doRun(); }, 1); - } else - { + } else { doRun(); } checkStackCookie(); @@ -2164,15 +2434,20 @@ function checkUnflushedContent() { var has = false; out = err = (x) => { has = true; - } - try { // it doesn't matter if it fails + }; + try { + // it doesn't matter if it fails flush_NO_FILESYSTEM(); - } catch(e) {} + } catch (e) {} out = oldOut; err = oldErr; if (has) { - warnOnce('stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the Emscripten FAQ), or make sure to emit a newline when you printf etc.'); - warnOnce('(this may also be due to not including full filesystem support - try building with -sFORCE_FILESYSTEM)'); + warnOnce( + 'stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the Emscripten FAQ), or make sure to emit a newline when you printf etc.', + ); + warnOnce( + '(this may also be due to not including full filesystem support - try building with -sFORCE_FILESYSTEM)', + ); } } @@ -2192,8 +2467,7 @@ run(); // Bindings utilities /** @suppress {duplicate} (TODO: avoid emitting this multiple times, it is redundant) */ -function WrapperObject() { -} +function WrapperObject() {} WrapperObject.prototype = Object.create(WrapperObject.prototype); WrapperObject.prototype.constructor = WrapperObject; WrapperObject.prototype.__class__ = WrapperObject; @@ -2215,7 +2489,7 @@ function wrapPointer(ptr, __class__) { if (ret) return ret; ret = Object.create((__class__ || WrapperObject).prototype); ret.ptr = ptr; - return cache[ptr] = ret; + return (cache[ptr] = ret); } blst['wrapPointer'] = wrapPointer; @@ -2258,9 +2532,9 @@ blst['getClass'] = getClass; /** @suppress {duplicate} (TODO: avoid emitting this multiple times, it is redundant) */ var ensureCache = { - buffer: 0, // the main buffer of temporary storage - size: 0, // the size of buffer - pos: 0, // the next free offset in buffer + buffer: 0, // the main buffer of temporary storage + size: 0, // the size of buffer + pos: 0, // the next free offset in buffer temps: [], // extra allocations needed: 0, // the total size we need next time @@ -2278,7 +2552,8 @@ var ensureCache = { // clean up ensureCache.needed = 0; } - if (!ensureCache.buffer) { // happens first time, or when we need to grow + if (!ensureCache.buffer) { + // happens first time, or when we need to grow ensureCache.size += 128; // heuristic, avoid many small grow events ensureCache.buffer = blst['_webidl_malloc'](ensureCache.size); assert(ensureCache.buffer); @@ -2376,7 +2651,9 @@ function ensureFloat64(value) { // Interface: VoidPtr /** @suppress {undefinedVars, duplicate} @this{Object} */ -function VoidPtr() { throw "cannot construct a VoidPtr, no constructor in IDL" } +function VoidPtr() { + throw 'cannot construct a VoidPtr, no constructor in IDL'; +} VoidPtr.prototype = Object.create(WrapperObject.prototype); VoidPtr.prototype.constructor = VoidPtr; VoidPtr.prototype.__class__ = VoidPtr; @@ -2384,7 +2661,7 @@ VoidPtr.__cache__ = {}; blst['VoidPtr'] = VoidPtr; /** @suppress {undefinedVars, duplicate} @this{Object} */ -VoidPtr.prototype['__destroy__'] = VoidPtr.prototype.__destroy__ = function() { +VoidPtr.prototype['__destroy__'] = VoidPtr.prototype.__destroy__ = function () { var self = this.ptr; _emscripten_bind_VoidPtr___destroy___0(self); }; @@ -2397,843 +2674,976 @@ VoidPtr.prototype['__destroy__'] = VoidPtr.prototype.__destroy__ = function() { //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! const BLST_ERROR_str = [ - "BLST_ERROR: success", - "BLST_ERROR: bad point encoding", - "BLST_ERROR: point is not on curve", - "BLST_ERROR: point is not in group", - "BLST_ERROR: context type mismatch", - "BLST_ERROR: verify failed", - "BLST_ERROR: public key is infinite", - "BLST_ERROR: bad scalar", + 'BLST_ERROR: success', + 'BLST_ERROR: bad point encoding', + 'BLST_ERROR: point is not on curve', + 'BLST_ERROR: point is not in group', + 'BLST_ERROR: context type mismatch', + 'BLST_ERROR: verify failed', + 'BLST_ERROR: public key is infinite', + 'BLST_ERROR: bad scalar', ]; -function unsupported(type, extra) -{ if (typeof extra === 'undefined') - return `${type ? type.constructor.name : 'none'}: unsupported type`; - else - return `${type ? type.constructor.name : 'none'}/${extra ? extra.constructor.name : 'none'}: unsupported types or combination thereof`; -} - -function ensureAny(value) -{ if (value === null) - return [0, 0]; - - switch (value.constructor) { - case String: - return [ensureString(value), lengthBytesUTF8(value)]; - case ArrayBuffer: - return [ensureInt8(new Uint8Array(value)), value.byteLength]; - case BigInt: - if (value < 0) - throw new Error("expecting unsigned BigInt value"); - var temp = []; - while (value != 0) { - temp.push(Number(value & 255n)); - value >>= 8n; - } - return [ensureInt8(temp), temp.length]; - case Uint8Array: case Buffer: - return [ensureInt8(value), value.length]; - default: - throw new Error(unsupported(value)); - } +function unsupported(type, extra) { + if (typeof extra === 'undefined') + return `${type ? type.constructor.name : 'none'}: unsupported type`; + else + return `${type ? type.constructor.name : 'none'}/${extra ? extra.constructor.name : 'none'}: unsupported types or combination thereof`; +} + +function ensureAny(value) { + if (value === null) return [0, 0]; + + switch (value.constructor) { + case String: + return [ensureString(value), lengthBytesUTF8(value)]; + case ArrayBuffer: + return [ensureInt8(new Uint8Array(value)), value.byteLength]; + case BigInt: + if (value < 0) throw new Error('expecting unsigned BigInt value'); + var temp = []; + while (value != 0) { + temp.push(Number(value & 255n)); + value >>= 8n; + } + return [ensureInt8(temp), temp.length]; + case Uint8Array: + case Buffer: + return [ensureInt8(value), value.length]; + default: + throw new Error(unsupported(value)); + } } -(function() { - function setupConsts() { - var i = 0; - blst['BLST_SUCCESS'] = i++; - blst['BLST_BAD_ENCODING'] = i++; - blst['BLST_POINT_NOT_ON_CURVE'] = i++; - blst['BLST_POINT_NOT_IN_GROUP'] = i++; - blst['BLST_AGGR_TYPE_MISMATCH'] = i++; - blst['BLST_VERIFY_FAIL'] = i++; - blst['BLST_PK_IS_INFINITY'] = i++; - blst['BLST_BAD_SCALAR'] = i++; - blst['BLS12_381_G1'] = wrapPointer(_const_G1(), P1_Affine); - blst['BLS12_381_G2'] = wrapPointer(_const_G2(), P2_Affine); - blst['BLS12_381_NEG_G1'] = wrapPointer(_const_NEG_G1(), P1_Affine); - blst['BLS12_381_NEG_G2'] = wrapPointer(_const_NEG_G2(), P2_Affine); - } - if (runtimeInitialized) setupConsts(); - else addOnInit(setupConsts); +(function () { + function setupConsts() { + var i = 0; + blst['BLST_SUCCESS'] = i++; + blst['BLST_BAD_ENCODING'] = i++; + blst['BLST_POINT_NOT_ON_CURVE'] = i++; + blst['BLST_POINT_NOT_IN_GROUP'] = i++; + blst['BLST_AGGR_TYPE_MISMATCH'] = i++; + blst['BLST_VERIFY_FAIL'] = i++; + blst['BLST_PK_IS_INFINITY'] = i++; + blst['BLST_BAD_SCALAR'] = i++; + blst['BLS12_381_G1'] = wrapPointer(_const_G1(), P1_Affine); + blst['BLS12_381_G2'] = wrapPointer(_const_G2(), P2_Affine); + blst['BLS12_381_NEG_G1'] = wrapPointer(_const_NEG_G1(), P1_Affine); + blst['BLS12_381_NEG_G2'] = wrapPointer(_const_NEG_G2(), P2_Affine); + } + if (runtimeInitialized) setupConsts(); + else addOnInit(setupConsts); })(); /** @this{Object} */ -function SecretKey() -{ this.ptr = _SecretKey_0(); - getCache(SecretKey)[this.ptr] = this; +function SecretKey() { + this.ptr = _SecretKey_0(); + getCache(SecretKey)[this.ptr] = this; } SecretKey.prototype = Object.create(WrapperObject.prototype); SecretKey.prototype.constructor = SecretKey; SecretKey.prototype.__class__ = SecretKey; SecretKey.__cache__ = {}; blst['SecretKey'] = SecretKey; -SecretKey.prototype['__destroy__'] = SecretKey.prototype.__destroy__ = /** @this{Object} */ -function() -{ _SecretKey__destroy__0(this.ptr); this.ptr = 0; };; +SecretKey.prototype['__destroy__'] = SecretKey.prototype.__destroy__ = + /** @this{Object} */ + function () { + _SecretKey__destroy__0(this.ptr); + this.ptr = 0; + }; -SecretKey.prototype['keygen'] = SecretKey.prototype.keygen = /** @this{Object} */ -function(IKM, info) -{ ensureCache.prepare(); +SecretKey.prototype['keygen'] = SecretKey.prototype.keygen = + /** @this{Object} */ + function (IKM, info) { + ensureCache.prepare(); const [_IKM, IKM_len] = ensureAny(IKM); - if (IKM_len < 32) - throw new Error("BLST_ERROR: bad scalar"); + if (IKM_len < 32) throw new Error('BLST_ERROR: bad scalar'); info = ensureString(info); _SecretKey_keygen_3(this.ptr, _IKM, IKM_len, info); HEAP8.fill(0, _IKM, _IKM + IKM_len); -};; + }; -SecretKey.prototype['derive_master_eip2333'] = SecretKey.prototype.derive_master_eip2333 = /** @this{Object} */ -function(IKM) -{ ensureCache.prepare(); +SecretKey.prototype['derive_master_eip2333'] = SecretKey.prototype.derive_master_eip2333 = + /** @this{Object} */ + function (IKM) { + ensureCache.prepare(); const [_IKM, IKM_len] = ensureAny(IKM); - if (IKM_len < 32) - throw new Error("BLST_ERROR: bad scalar"); + if (IKM_len < 32) throw new Error('BLST_ERROR: bad scalar'); _SecretKey_derive_master_eip2333_2(this.ptr, _IKM, IKM_len); HEAP8.fill(0, _IKM, _IKM + IKM_len); -};; + }; -SecretKey.prototype['derive_child_eip2333'] = SecretKey.prototype.derive_child_eip2333 = /** @this{Object} */ -function(sk, child_index) -{ if (!(sk instanceof SecretKey)) - throw new Error(unsupported(sk)); +SecretKey.prototype['derive_child_eip2333'] = SecretKey.prototype.derive_child_eip2333 = + /** @this{Object} */ + function (sk, child_index) { + if (!(sk instanceof SecretKey)) throw new Error(unsupported(sk)); _SecretKey_derive_child_eip2333_2(this.ptr, sk.ptr, child_index); -};; + }; -SecretKey.prototype['from_bendian'] = SecretKey.prototype.from_bendian = /** @this{Object} */ -function(sk) -{ if (!(sk instanceof Uint8Array) || sk.length != 32) - throw new Error(unsupported(sk)); +SecretKey.prototype['from_bendian'] = SecretKey.prototype.from_bendian = + /** @this{Object} */ + function (sk) { + if (!(sk instanceof Uint8Array) || sk.length != 32) throw new Error(unsupported(sk)); ensureCache.prepare(); sk = ensureInt8(sk); _SecretKey_from_bendian_1(this.ptr, sk); HEAP8.fill(0, sk, sk + 32); -};; + }; -SecretKey.prototype['from_lendian'] = SecretKey.prototype.from_lendian = /** @this{Object} */ -function(sk) -{ if (!(sk instanceof Uint8Array) || sk.length != 32) - throw new Error(unsupported(sk)); +SecretKey.prototype['from_lendian'] = SecretKey.prototype.from_lendian = + /** @this{Object} */ + function (sk) { + if (!(sk instanceof Uint8Array) || sk.length != 32) throw new Error(unsupported(sk)); ensureCache.prepare(); sk = ensureInt8(sk); _SecretKey_from_lendian_1(this.ptr, sk); HEAP8.fill(0, sk, sk + 32); -};; + }; -SecretKey.prototype['to_bendian'] = SecretKey.prototype.to_bendian = /** @this{Object} */ -function() -{ var out = _SecretKey_to_bendian_0(this.ptr); +SecretKey.prototype['to_bendian'] = SecretKey.prototype.to_bendian = + /** @this{Object} */ + function () { + var out = _SecretKey_to_bendian_0(this.ptr); var ret = new Uint8Array(HEAPU8.subarray(out, out + 32)); HEAP8.fill(0, out, out + 32); return ret; -};; + }; -SecretKey.prototype['to_lendian'] = SecretKey.prototype.to_lendian = /** @this{Object} */ -function() -{ var out = _SecretKey_to_lendian_0(this.ptr); +SecretKey.prototype['to_lendian'] = SecretKey.prototype.to_lendian = + /** @this{Object} */ + function () { + var out = _SecretKey_to_lendian_0(this.ptr); var ret = new Uint8Array(HEAPU8.subarray(out, out + 32)); HEAP8.fill(0, out, out + 32); return ret; -};; + }; /** @this{Object} */ -function Scalar(scalar, DST) -{ if (typeof scalar === 'undefined' || scalar === null) { - this.ptr = _Scalar_0(); +function Scalar(scalar, DST) { + if (typeof scalar === 'undefined' || scalar === null) { + this.ptr = _Scalar_0(); + } else { + ensureCache.prepare(); + const [_scalar, len] = ensureAny(scalar); + if (typeof DST === 'string' || DST === null) { + DST = ensureString(DST); + this.ptr = _Scalar_3(_scalar, len, DST); } else { - ensureCache.prepare(); - const [ _scalar, len] = ensureAny(scalar); - if (typeof DST === 'string' || DST === null) { - DST = ensureString(DST); - this.ptr = _Scalar_3(_scalar, len, DST); - } else { - this.ptr = _Scalar_2(_scalar, len*8); - } + this.ptr = _Scalar_2(_scalar, len * 8); } - getCache(Scalar)[this.ptr] = this; + } + getCache(Scalar)[this.ptr] = this; } Scalar.prototype = Object.create(WrapperObject.prototype); Scalar.prototype.constructor = Scalar; Scalar.prototype.__class__ = Scalar; Scalar.__cache__ = {}; blst['Scalar'] = Scalar; -Scalar.prototype['__destroy__'] = Scalar.prototype.__destroy__ = /** @this{Object} */ -function() -{ _Scalar__destroy__0(this.ptr); this.ptr = 0; };; - -Scalar.prototype['hash_to'] = Scalar.prototype.hash_to = /** @this{Object} */ -function(msg, DST) -{ ensureCache.prepare(); - const [ _msg, msg_len] = ensureAny(msg); +Scalar.prototype['__destroy__'] = Scalar.prototype.__destroy__ = + /** @this{Object} */ + function () { + _Scalar__destroy__0(this.ptr); + this.ptr = 0; + }; + +Scalar.prototype['hash_to'] = Scalar.prototype.hash_to = + /** @this{Object} */ + function (msg, DST) { + ensureCache.prepare(); + const [_msg, msg_len] = ensureAny(msg); DST = ensureString(DST); _Scalar_hash_to_3(this.ptr, _msg, msg_len, DST); return this; -};; + }; -Scalar.prototype['dup'] = Scalar.prototype.dup = /** @this{Object} */ -function() -{ return wrapPointer(_Scalar_dup_0(this.ptr), Scalar); };; +Scalar.prototype['dup'] = Scalar.prototype.dup = + /** @this{Object} */ + function () { + return wrapPointer(_Scalar_dup_0(this.ptr), Scalar); + }; -Scalar.prototype['from_bendian'] = Scalar.prototype.from_bendian = /** @this{Object} */ -function(msg) -{ ensureCache.prepare(); - const [ _msg, msg_len] = ensureAny(msg); +Scalar.prototype['from_bendian'] = Scalar.prototype.from_bendian = + /** @this{Object} */ + function (msg) { + ensureCache.prepare(); + const [_msg, msg_len] = ensureAny(msg); _Scalar_from_bendian_2(this.ptr, _msg, msg_len); return this; -};; + }; -Scalar.prototype['from_lendian'] = Scalar.prototype.from_lendian = /** @this{Object} */ -function(msg) -{ ensureCache.prepare(); - const [ _msg, msg_len] = ensureAny(msg); +Scalar.prototype['from_lendian'] = Scalar.prototype.from_lendian = + /** @this{Object} */ + function (msg) { + ensureCache.prepare(); + const [_msg, msg_len] = ensureAny(msg); _Scalar_from_lendian_2(this.ptr, _msg, msg_len); return this; -};; + }; -Scalar.prototype['to_bendian'] = Scalar.prototype.to_bendian = /** @this{Object} */ -function() -{ var out = _Scalar_to_bendian_0(this.ptr); +Scalar.prototype['to_bendian'] = Scalar.prototype.to_bendian = + /** @this{Object} */ + function () { + var out = _Scalar_to_bendian_0(this.ptr); return new Uint8Array(HEAPU8.subarray(out, out + 32)); -};; + }; -Scalar.prototype['to_lendian'] = Scalar.prototype.to_lendian = /** @this{Object} */ -function() -{ var out = _Scalar_to_lendian_0(this.ptr); +Scalar.prototype['to_lendian'] = Scalar.prototype.to_lendian = + /** @this{Object} */ + function () { + var out = _Scalar_to_lendian_0(this.ptr); return new Uint8Array(HEAPU8.subarray(out, out + 32)); -};; + }; -Scalar.prototype['add'] = Scalar.prototype.add = /** @this{Object} */ -function(a) -{ if (!(a instanceof Scalar || a instanceof SecretKey)) - throw new Error(unsupported(a)); +Scalar.prototype['add'] = Scalar.prototype.add = + /** @this{Object} */ + function (a) { + if (!(a instanceof Scalar || a instanceof SecretKey)) throw new Error(unsupported(a)); _Scalar_add_1(this.ptr, a.ptr); return this; -};; + }; -Scalar.prototype['sub'] = Scalar.prototype.sub = /** @this{Object} */ -function(a) -{ if (!(a instanceof Scalar)) - throw new Error(unsupported(a)); +Scalar.prototype['sub'] = Scalar.prototype.sub = + /** @this{Object} */ + function (a) { + if (!(a instanceof Scalar)) throw new Error(unsupported(a)); _Scalar_sub_1(this.ptr, a.ptr); return this; -};; + }; -Scalar.prototype['mul'] = Scalar.prototype.mul = /** @this{Object} */ -function(a) -{ if (!(a instanceof Scalar)) - throw new Error(unsupported(a)); +Scalar.prototype['mul'] = Scalar.prototype.mul = + /** @this{Object} */ + function (a) { + if (!(a instanceof Scalar)) throw new Error(unsupported(a)); _Scalar_mul_1(this.ptr, a.ptr); return this; -};; + }; -Scalar.prototype['inverse'] = Scalar.prototype.inverse = /** @this{Object} */ -function() -{ _Scalar_inverse_0(this.ptr); return this; };; +Scalar.prototype['inverse'] = Scalar.prototype.inverse = + /** @this{Object} */ + function () { + _Scalar_inverse_0(this.ptr); + return this; + }; /** @this{Object} */ -function PT(p, q) -{ if (typeof q === 'undefined' || q === null) { - if (p instanceof P1_Affine) - this.ptr = _PT_p_affine_1(p.ptr); - else if (p instanceof P2_Affine) - this.ptr = _PT_q_affine_1(p.ptr); - else - throw new Error(unsupported(p)); - } else if (p instanceof P1_Affine && q instanceof P2_Affine) { - this.ptr = _PT_pq_affine_2(p.ptr, q.ptr); - } else if (p instanceof P2_Affine && q instanceof P1_Affine) { - this.ptr = _PT_pq_affine_2(q.ptr, p.ptr); - } else if (p instanceof P1 && q instanceof P2) { - this.ptr = _PT_pq_2(p.ptr, q.ptr); - } else if (p instanceof P2 && q instanceof P1) { - this.ptr = _PT_pq_2(q.ptr, p.ptr); - } else { - throw new Error(unsupported(p, q)); - } - getCache(PT)[this.ptr] = this; +function PT(p, q) { + if (typeof q === 'undefined' || q === null) { + if (p instanceof P1_Affine) this.ptr = _PT_p_affine_1(p.ptr); + else if (p instanceof P2_Affine) this.ptr = _PT_q_affine_1(p.ptr); + else throw new Error(unsupported(p)); + } else if (p instanceof P1_Affine && q instanceof P2_Affine) { + this.ptr = _PT_pq_affine_2(p.ptr, q.ptr); + } else if (p instanceof P2_Affine && q instanceof P1_Affine) { + this.ptr = _PT_pq_affine_2(q.ptr, p.ptr); + } else if (p instanceof P1 && q instanceof P2) { + this.ptr = _PT_pq_2(p.ptr, q.ptr); + } else if (p instanceof P2 && q instanceof P1) { + this.ptr = _PT_pq_2(q.ptr, p.ptr); + } else { + throw new Error(unsupported(p, q)); + } + getCache(PT)[this.ptr] = this; } PT.prototype = Object.create(WrapperObject.prototype); PT.prototype.constructor = PT; PT.prototype.__class__ = PT; PT.__cache__ = {}; blst['PT'] = PT; -PT.prototype['__destroy__'] = PT.prototype.__destroy__ = /** @this{Object} */ -function() -{ _PT__destroy__0(this.ptr); this.ptr = 0; };; - -PT.prototype['dup'] = PT.prototype.dup = /** @this{Object} */ -function() -{ return wrapPointer(_PT_dup_0(this.ptr), PT); };; - -PT.prototype['is_one'] = PT.prototype.is_one = /** @this{Object} */ -function() -{ return !!(_PT_is_one_0(this.ptr)); };; - -PT.prototype['is_equal'] = PT.prototype.is_equal = /** @this{Object} */ -function(p) -{ if (p instanceof PT) - return !!(_PT_is_equal_1(this.ptr, p.ptr)); +PT.prototype['__destroy__'] = PT.prototype.__destroy__ = + /** @this{Object} */ + function () { + _PT__destroy__0(this.ptr); + this.ptr = 0; + }; + +PT.prototype['dup'] = PT.prototype.dup = + /** @this{Object} */ + function () { + return wrapPointer(_PT_dup_0(this.ptr), PT); + }; + +PT.prototype['is_one'] = PT.prototype.is_one = + /** @this{Object} */ + function () { + return !!_PT_is_one_0(this.ptr); + }; + +PT.prototype['is_equal'] = PT.prototype.is_equal = + /** @this{Object} */ + function (p) { + if (p instanceof PT) return !!_PT_is_equal_1(this.ptr, p.ptr); throw new Error(unsupported(p)); -};; - -PT.prototype['sqr'] = PT.prototype.sqr = /** @this{Object} */ -function() -{ _PT_sqr_0(this.ptr); return this; };; - -PT.prototype['mul'] = PT.prototype.mul = /** @this{Object} */ -function(p) -{ if (p instanceof PT) - _PT_mul_1(this.ptr, p.ptr); - else - throw new Error(unsupported(p)); + }; + +PT.prototype['sqr'] = PT.prototype.sqr = + /** @this{Object} */ + function () { + _PT_sqr_0(this.ptr); + return this; + }; + +PT.prototype['mul'] = PT.prototype.mul = + /** @this{Object} */ + function (p) { + if (p instanceof PT) _PT_mul_1(this.ptr, p.ptr); + else throw new Error(unsupported(p)); return this; -};; + }; -PT.prototype['final_exp'] = PT.prototype.final_exp = /** @this{Object} */ -function() -{ _PT_final_exp_0(this.ptr); return this; };; +PT.prototype['final_exp'] = PT.prototype.final_exp = + /** @this{Object} */ + function () { + _PT_final_exp_0(this.ptr); + return this; + }; -PT.prototype['in_group'] = PT.prototype.in_group = /** @this{Object} */ -function() -{ return !!(_PT_in_group_0(this.ptr)); };; +PT.prototype['in_group'] = PT.prototype.in_group = + /** @this{Object} */ + function () { + return !!_PT_in_group_0(this.ptr); + }; -PT.prototype['to_bendian'] = PT.prototype.to_bendian = /** @this{Object} */ -function() -{ var out = _PT_to_bendian_0(this.ptr); - return new Uint8Array(HEAPU8.subarray(out, out + 48*12)); -};; +PT.prototype['to_bendian'] = PT.prototype.to_bendian = + /** @this{Object} */ + function () { + var out = _PT_to_bendian_0(this.ptr); + return new Uint8Array(HEAPU8.subarray(out, out + 48 * 12)); + }; -PT['finalverify'] = PT.finalverify = -function(gt1, gt2) -{ if (gt1 instanceof PT && gt2 instanceof PT) - return !!(_PT_finalverify_2(gt1.ptr, gt2.ptr)); - throw new Error(unsupported(gt1, gt2)); -};; +PT['finalverify'] = PT.finalverify = function (gt1, gt2) { + if (gt1 instanceof PT && gt2 instanceof PT) return !!_PT_finalverify_2(gt1.ptr, gt2.ptr); + throw new Error(unsupported(gt1, gt2)); +}; -PT['one'] = PT.one = -function() -{ return wrapPointer(_PT_one_0(), PT); };; +PT['one'] = PT.one = function () { + return wrapPointer(_PT_one_0(), PT); +}; /** @this{Object} */ -function Pairing(hash_or_encode, DST) -{ ensureCache.prepare(); - DST = ensureString(DST); - this.ptr = _Pairing_2(!!hash_or_encode, DST); - getCache(SecretKey)[this.ptr] = this; +function Pairing(hash_or_encode, DST) { + ensureCache.prepare(); + DST = ensureString(DST); + this.ptr = _Pairing_2(!!hash_or_encode, DST); + getCache(SecretKey)[this.ptr] = this; } Pairing.prototype = Object.create(WrapperObject.prototype); Pairing.prototype.constructor = Pairing; Pairing.prototype.__class__ = Pairing; Pairing.__cache__ = {}; blst['Pairing'] = Pairing; -Pairing.prototype['__destroy__'] = Pairing.prototype.__destroy__ = /** @this{Object} */ -function() -{ _Pairing__destroy__0(this.ptr); this.ptr = 0; };; +Pairing.prototype['__destroy__'] = Pairing.prototype.__destroy__ = + /** @this{Object} */ + function () { + _Pairing__destroy__0(this.ptr); + this.ptr = 0; + }; -Pairing.prototype['aggregate'] = Pairing.prototype.aggregate = /** @this{Object} */ -function(pk, sig, msg, aug) -{ ensureCache.prepare(); +Pairing.prototype['aggregate'] = Pairing.prototype.aggregate = + /** @this{Object} */ + function (pk, sig, msg, aug) { + ensureCache.prepare(); const [_msg, msg_len] = ensureAny(msg); const [_aug, aug_len] = ensureAny(aug); if (pk instanceof P1_Affine && sig instanceof P2_Affine) - return _Pairing_aggregate_pk_in_g1_6(this.ptr, pk.ptr, sig.ptr, _msg, msg_len, _aug, aug_len); + return _Pairing_aggregate_pk_in_g1_6(this.ptr, pk.ptr, sig.ptr, _msg, msg_len, _aug, aug_len); else if (pk instanceof P2_Affine && sig instanceof P1_Affine) - return _Pairing_aggregate_pk_in_g2_6(this.ptr, pk.ptr, sig.ptr, _msg, msg_len, _aug, aug_len); - else - throw new Error(unsupported(pk, sig)); + return _Pairing_aggregate_pk_in_g2_6(this.ptr, pk.ptr, sig.ptr, _msg, msg_len, _aug, aug_len); + else throw new Error(unsupported(pk, sig)); return -1; -};; + }; -Pairing.prototype['mul_n_aggregate'] = Pairing.prototype.mul_n_aggregate = /** @this{Object} */ -function(pk, sig, scalar, msg, aug) -{ if (typeof scalar === 'undefined' || scalar === null) - throw new Error("missing |scalar| argument"); +Pairing.prototype['mul_n_aggregate'] = Pairing.prototype.mul_n_aggregate = + /** @this{Object} */ + function (pk, sig, scalar, msg, aug) { + if (typeof scalar === 'undefined' || scalar === null) + throw new Error('missing |scalar| argument'); ensureCache.prepare(); const [_scalar, len] = ensureAny(scalar); const [_msg, msg_len] = ensureAny(msg); const [_aug, aug_len] = ensureAny(aug); if (pk instanceof P1_Affine && sig instanceof P2_Affine) - return _Pairing_mul_n_aggregate_pk_in_g1_8(this.ptr, pk.ptr, sig.ptr, _scalar, len*8, _msg, msg_len, _aug, aug_len); + return _Pairing_mul_n_aggregate_pk_in_g1_8( + this.ptr, + pk.ptr, + sig.ptr, + _scalar, + len * 8, + _msg, + msg_len, + _aug, + aug_len, + ); else if (pk instanceof P2_Affine && sig instanceof P1_Affine) - return _Pairing_mul_n_aggregate_pk_in_g2_8(this.ptr, pk.ptr, sig.ptr, _scalar, len*8, _msg, msg_len, _aug, aug_len); - else - throw new Error(unsupported(pk, sig)); + return _Pairing_mul_n_aggregate_pk_in_g2_8( + this.ptr, + pk.ptr, + sig.ptr, + _scalar, + len * 8, + _msg, + msg_len, + _aug, + aug_len, + ); + else throw new Error(unsupported(pk, sig)); return -1; -};; + }; -Pairing.prototype['commit'] = Pairing.prototype.commit = /** @this{Object} */ -function() -{ _Pairing_commit_0(this.ptr); };; +Pairing.prototype['commit'] = Pairing.prototype.commit = + /** @this{Object} */ + function () { + _Pairing_commit_0(this.ptr); + }; -Pairing.prototype['asArrayBuffer'] = Pairing.prototype.asArrayBuffer = /** @this{Object} */ -function() -{ return HEAP8.buffer.slice(this.ptr, this.ptr + _Pairing_sizeof_0()); };; +Pairing.prototype['asArrayBuffer'] = Pairing.prototype.asArrayBuffer = + /** @this{Object} */ + function () { + return HEAP8.buffer.slice(this.ptr, this.ptr + _Pairing_sizeof_0()); + }; -Pairing.prototype['merge'] = Pairing.prototype.merge = /** @this{Object} */ -function(ctx) -{ if (ctx instanceof Pairing) - return _Pairing_merge_1(this.ptr, ctx.ptr); +Pairing.prototype['merge'] = Pairing.prototype.merge = + /** @this{Object} */ + function (ctx) { + if (ctx instanceof Pairing) return _Pairing_merge_1(this.ptr, ctx.ptr); else if (ctx instanceof ArrayBuffer && ctx.byteLength == _Pairing_sizeof_0()) - return _Pairing_merge_1(this.ptr, ensureAny(ctx)[0]); + return _Pairing_merge_1(this.ptr, ensureAny(ctx)[0]); throw new Error(unsupported(ctx)); -};; - -Pairing.prototype['finalverify'] = Pairing.prototype.finalverify = /** @this{Object} */ -function(sig) -{ if (typeof sig === 'undefined' || sig === null) - return !!(_Pairing_finalverify_1(this.ptr, 0)); - else if (sig instanceof PT) - return !!(_Pairing_finalverify_1(this.ptr, sig.ptr)); - else - throw new Error(unsupported(sig)); -};; - -Pairing.prototype['raw_aggregate'] = Pairing.prototype.raw_aggregate = /** @this{Object} */ -function(q, p) -{ if (q instanceof P2_Affine && p instanceof P1_Affine) - _Pairing_raw_aggregate_2(this.ptr, q.ptr, p.ptr); - else - throw new Error(unsupported(q, p)); -};; - -Pairing.prototype['as_fp12'] = Pairing.prototype.as_fp12 = /** @this{Object} */ -function() -{ return wrapPointer(_Pairing_as_fp12_0(this.ptr), PT); };; + }; + +Pairing.prototype['finalverify'] = Pairing.prototype.finalverify = + /** @this{Object} */ + function (sig) { + if (typeof sig === 'undefined' || sig === null) return !!_Pairing_finalverify_1(this.ptr, 0); + else if (sig instanceof PT) return !!_Pairing_finalverify_1(this.ptr, sig.ptr); + else throw new Error(unsupported(sig)); + }; +Pairing.prototype['raw_aggregate'] = Pairing.prototype.raw_aggregate = + /** @this{Object} */ + function (q, p) { + if (q instanceof P2_Affine && p instanceof P1_Affine) + _Pairing_raw_aggregate_2(this.ptr, q.ptr, p.ptr); + else throw new Error(unsupported(q, p)); + }; + +Pairing.prototype['as_fp12'] = Pairing.prototype.as_fp12 = + /** @this{Object} */ + function () { + return wrapPointer(_Pairing_as_fp12_0(this.ptr), PT); + }; /** @this{Object} */ -function P1_Affine(input) -{ ensureCache.prepare(); - if (typeof input === 'undefined' || input === null) - this.ptr = _P1_Affine_0(); - else if (input instanceof Uint8Array) - this.ptr = _P1_Affine_2(ensureInt8(input), input.length); - else if (input instanceof P1) - this.ptr = _P1_Affine_1(input.ptr); - else - throw new Error(unsupported(input)); - getCache(P1_Affine)[this.ptr] = this; +function P1_Affine(input) { + ensureCache.prepare(); + if (typeof input === 'undefined' || input === null) this.ptr = _P1_Affine_0(); + else if (input instanceof Uint8Array) this.ptr = _P1_Affine_2(ensureInt8(input), input.length); + else if (input instanceof P1) this.ptr = _P1_Affine_1(input.ptr); + else throw new Error(unsupported(input)); + getCache(P1_Affine)[this.ptr] = this; } P1_Affine.prototype = Object.create(WrapperObject.prototype); P1_Affine.prototype.constructor = P1_Affine; P1_Affine.prototype.__class__ = P1_Affine; P1_Affine.__cache__ = {}; blst['P1_Affine'] = P1_Affine; -P1_Affine.prototype['__destroy__'] = P1_Affine.prototype.__destroy__ = /** @this{Object} */ -function() -{ _P1_Affine__destroy__0(this.ptr); this.ptr = 0; };; - -P1_Affine.prototype['dup'] = P1_Affine.prototype.dup = /** @this{Object} */ -function() -{ return wrapPointer(_P1_Affine_dup_0(this.ptr), P1_Affine); };; - -P1_Affine.prototype['to_jacobian'] = P1_Affine.prototype.to_jacobian = /** @this{Object} */ -function() -{ return wrapPointer(_P1_Affine_to_jacobian_0(this.ptr), P1); };; - -P1_Affine.prototype['serialize'] = P1_Affine.prototype.serialize = /** @this{Object} */ -function() -{ var out = _P1_Affine_serialize_0(this.ptr); - return new Uint8Array(HEAPU8.subarray(out, out + 96*1)); -};; - -P1_Affine.prototype['compress'] = P1_Affine.prototype.compress = /** @this{Object} */ -function() -{ var out = _P1_Affine_compress_0(this.ptr); - return new Uint8Array(HEAPU8.subarray(out, out + 48*1)); -};; - -P1_Affine.prototype['on_curve'] = P1_Affine.prototype.on_curve = /** @this{Object} */ -function() -{ return !!(_P1_Affine_on_curve_0(this.ptr)); };; - -P1_Affine.prototype['in_group'] = P1_Affine.prototype.in_group = /** @this{Object} */ -function() -{ return !!(_P1_Affine_in_group_0(this.ptr)); };; - -P1_Affine.prototype['is_inf'] = P1_Affine.prototype.is_inf = /** @this{Object} */ -function() -{ return !!(_P1_Affine_is_inf_0(this.ptr)); };; - -P1_Affine.prototype['is_equal'] = P1_Affine.prototype.is_equal = /** @this{Object} */ -function(p) -{ if (p instanceof P1_Affine) - return !!(_P1_Affine_is_equal_1(this.ptr, p.ptr)); +P1_Affine.prototype['__destroy__'] = P1_Affine.prototype.__destroy__ = + /** @this{Object} */ + function () { + _P1_Affine__destroy__0(this.ptr); + this.ptr = 0; + }; + +P1_Affine.prototype['dup'] = P1_Affine.prototype.dup = + /** @this{Object} */ + function () { + return wrapPointer(_P1_Affine_dup_0(this.ptr), P1_Affine); + }; + +P1_Affine.prototype['to_jacobian'] = P1_Affine.prototype.to_jacobian = + /** @this{Object} */ + function () { + return wrapPointer(_P1_Affine_to_jacobian_0(this.ptr), P1); + }; + +P1_Affine.prototype['serialize'] = P1_Affine.prototype.serialize = + /** @this{Object} */ + function () { + var out = _P1_Affine_serialize_0(this.ptr); + return new Uint8Array(HEAPU8.subarray(out, out + 96 * 1)); + }; + +P1_Affine.prototype['compress'] = P1_Affine.prototype.compress = + /** @this{Object} */ + function () { + var out = _P1_Affine_compress_0(this.ptr); + return new Uint8Array(HEAPU8.subarray(out, out + 48 * 1)); + }; + +P1_Affine.prototype['on_curve'] = P1_Affine.prototype.on_curve = + /** @this{Object} */ + function () { + return !!_P1_Affine_on_curve_0(this.ptr); + }; + +P1_Affine.prototype['in_group'] = P1_Affine.prototype.in_group = + /** @this{Object} */ + function () { + return !!_P1_Affine_in_group_0(this.ptr); + }; + +P1_Affine.prototype['is_inf'] = P1_Affine.prototype.is_inf = + /** @this{Object} */ + function () { + return !!_P1_Affine_is_inf_0(this.ptr); + }; + +P1_Affine.prototype['is_equal'] = P1_Affine.prototype.is_equal = + /** @this{Object} */ + function (p) { + if (p instanceof P1_Affine) return !!_P1_Affine_is_equal_1(this.ptr, p.ptr); throw new Error(unsupported(p)); -};; + }; -P1_Affine.prototype['core_verify'] = P1_Affine.prototype.core_verify = /** @this{Object} */ -function(pk, hash_or_encode, msg, DST, aug) -{ if (!(pk instanceof P2_Affine)) - throw new Error(unsupported(pk)); +P1_Affine.prototype['core_verify'] = P1_Affine.prototype.core_verify = + /** @this{Object} */ + function (pk, hash_or_encode, msg, DST, aug) { + if (!(pk instanceof P2_Affine)) throw new Error(unsupported(pk)); ensureCache.prepare(); const [_msg, msg_len] = ensureAny(msg); DST = ensureString(DST); const [_aug, aug_len] = ensureAny(aug); - return _P1_Affine_core_verify_7(this.ptr, pk.ptr, !!hash_or_encode, _msg, msg_len, DST, _aug, aug_len); -};; + return _P1_Affine_core_verify_7( + this.ptr, + pk.ptr, + !!hash_or_encode, + _msg, + msg_len, + DST, + _aug, + aug_len, + ); + }; -P1_Affine['generator'] = P1_Affine.generator = -function() -{ return wrapPointer(_P1_Affine_generator_0(), P1_Affine); };; +P1_Affine['generator'] = P1_Affine.generator = function () { + return wrapPointer(_P1_Affine_generator_0(), P1_Affine); +}; /** @this{Object} */ -function P1(input) -{ ensureCache.prepare(); - if (typeof input === 'undefined' || input === null) - this.ptr = _P1_0(); - else if (input instanceof Uint8Array) - this.ptr = _P1_2(ensureInt8(input), input.length); - else if (input instanceof P1_Affine) - this.ptr = _P1_affine_1(input.ptr); - else if (input instanceof SecretKey) - this.ptr = _P1_secretkey_1(input.ptr); - else - throw new Error(unsupported(input)); - getCache(P1)[this.ptr] = this; +function P1(input) { + ensureCache.prepare(); + if (typeof input === 'undefined' || input === null) this.ptr = _P1_0(); + else if (input instanceof Uint8Array) this.ptr = _P1_2(ensureInt8(input), input.length); + else if (input instanceof P1_Affine) this.ptr = _P1_affine_1(input.ptr); + else if (input instanceof SecretKey) this.ptr = _P1_secretkey_1(input.ptr); + else throw new Error(unsupported(input)); + getCache(P1)[this.ptr] = this; } P1.prototype = Object.create(WrapperObject.prototype); P1.prototype.constructor = P1; P1.prototype.__class__ = P1; P1.__cache__ = {}; blst['P1'] = P1; -P1.prototype['__destroy__'] = P1.prototype.__destroy__ = /** @this{Object} */ -function() -{ _P1__destroy__0(this.ptr); this.ptr = 0; };; - -P1.prototype['dup'] = P1.prototype.dup = /** @this{Object} */ -function() -{ return wrapPointer(_P1_dup_0(this.ptr), P1); };; - -P1.prototype['to_affine'] = P1.prototype.to_affine = /** @this{Object} */ -function() -{ return wrapPointer(_P1_to_affine_0(this.ptr), P1_Affine); };; - -P1.prototype['serialize'] = P1.prototype.serialize = /** @this{Object} */ -function() -{ var out = _P1_serialize_0(this.ptr); - return new Uint8Array(HEAPU8.subarray(out, out + 96*1)); -};; - -P1.prototype['compress'] = P1.prototype.compress = /** @this{Object} */ -function() -{ var out = _P1_compress_0(this.ptr); - return new Uint8Array(HEAPU8.subarray(out, out + 48*1)); -};; - -P1.prototype['on_curve'] = P1.prototype.on_curve = /** @this{Object} */ -function() -{ return !!(_P1_on_curve_0(this.ptr)); };; - -P1.prototype['in_group'] = P1.prototype.in_group = /** @this{Object} */ -function() -{ return !!(_P1_in_group_0(this.ptr)); };; - -P1.prototype['is_inf'] = P1.prototype.is_inf = /** @this{Object} */ -function() -{ return !!(_P1_is_inf_0(this.ptr)); };; - -P1.prototype['is_equal'] = P1.prototype.is_equal = /** @this{Object} */ -function(p) -{ if (p instanceof P1) - return !!(_P1_is_equal_1(this.ptr, p.ptr)); +P1.prototype['__destroy__'] = P1.prototype.__destroy__ = + /** @this{Object} */ + function () { + _P1__destroy__0(this.ptr); + this.ptr = 0; + }; + +P1.prototype['dup'] = P1.prototype.dup = + /** @this{Object} */ + function () { + return wrapPointer(_P1_dup_0(this.ptr), P1); + }; + +P1.prototype['to_affine'] = P1.prototype.to_affine = + /** @this{Object} */ + function () { + return wrapPointer(_P1_to_affine_0(this.ptr), P1_Affine); + }; + +P1.prototype['serialize'] = P1.prototype.serialize = + /** @this{Object} */ + function () { + var out = _P1_serialize_0(this.ptr); + return new Uint8Array(HEAPU8.subarray(out, out + 96 * 1)); + }; + +P1.prototype['compress'] = P1.prototype.compress = + /** @this{Object} */ + function () { + var out = _P1_compress_0(this.ptr); + return new Uint8Array(HEAPU8.subarray(out, out + 48 * 1)); + }; + +P1.prototype['on_curve'] = P1.prototype.on_curve = + /** @this{Object} */ + function () { + return !!_P1_on_curve_0(this.ptr); + }; + +P1.prototype['in_group'] = P1.prototype.in_group = + /** @this{Object} */ + function () { + return !!_P1_in_group_0(this.ptr); + }; + +P1.prototype['is_inf'] = P1.prototype.is_inf = + /** @this{Object} */ + function () { + return !!_P1_is_inf_0(this.ptr); + }; + +P1.prototype['is_equal'] = P1.prototype.is_equal = + /** @this{Object} */ + function (p) { + if (p instanceof P1) return !!_P1_is_equal_1(this.ptr, p.ptr); throw new Error(unsupported(p)); -};; - -P1.prototype['aggregate'] = P1.prototype.aggregate = /** @this{Object} */ -function(p) -{ if (p instanceof P1_Affine) - _P1_aggregate_1(this.ptr, p.ptr); - else - throw new Error(unsupported(p)); -};; - -P1.prototype['sign_with'] = P1.prototype.sign_with = /** @this{Object} */ -function(sk) -{ if (sk instanceof SecretKey) - _P1_sign_with_1(this.ptr, sk.ptr); - else - throw new Error(unsupported(sk)); + }; + +P1.prototype['aggregate'] = P1.prototype.aggregate = + /** @this{Object} */ + function (p) { + if (p instanceof P1_Affine) _P1_aggregate_1(this.ptr, p.ptr); + else throw new Error(unsupported(p)); + }; + +P1.prototype['sign_with'] = P1.prototype.sign_with = + /** @this{Object} */ + function (sk) { + if (sk instanceof SecretKey) _P1_sign_with_1(this.ptr, sk.ptr); + else throw new Error(unsupported(sk)); return this; -};; + }; -P1.prototype['hash_to'] = P1.prototype.hash_to = /** @this{Object} */ -function(msg, DST, aug) -{ ensureCache.prepare(); +P1.prototype['hash_to'] = P1.prototype.hash_to = + /** @this{Object} */ + function (msg, DST, aug) { + ensureCache.prepare(); const [_msg, msg_len] = ensureAny(msg); DST = ensureString(DST); const [_aug, aug_len] = ensureAny(aug); _P1_hash_to_5(this.ptr, _msg, msg_len, DST, _aug, aug_len); return this; -};; + }; -P1.prototype['encode_to'] = P1.prototype.encode_to = /** @this{Object} */ -function(msg, DST, aug) -{ ensureCache.prepare(); +P1.prototype['encode_to'] = P1.prototype.encode_to = + /** @this{Object} */ + function (msg, DST, aug) { + ensureCache.prepare(); const [_msg, msg_len] = ensureAny(msg); DST = ensureString(DST); const [_aug, aug_len] = ensureAny(aug); _P1_encode_to_5(this.ptr, _msg, msg_len, DST, _aug, aug_len); return this; -};; + }; -P1.prototype['mult'] = P1.prototype.mult = /** @this{Object} */ -function(scalar) -{ if (scalar instanceof Scalar) { - _P1_mult_1(this.ptr, scalar.ptr); +P1.prototype['mult'] = P1.prototype.mult = + /** @this{Object} */ + function (scalar) { + if (scalar instanceof Scalar) { + _P1_mult_1(this.ptr, scalar.ptr); } else if (typeof scalar !== 'string') { - ensureCache.prepare(); - const [_scalar, len] = ensureAny(scalar); - _P1_mult_2(this.ptr, _scalar, len*8); + ensureCache.prepare(); + const [_scalar, len] = ensureAny(scalar); + _P1_mult_2(this.ptr, _scalar, len * 8); } else { - throw new Error(unsupported(scalar)); + throw new Error(unsupported(scalar)); } return this; -};; - -P1.prototype['cneg'] = P1.prototype.cneg = /** @this{Object} */ -function(flag) -{ _P1_cneg_1(this.ptr, !!flag); return this; };; -P1.prototype['neg'] = P1.prototype.neg = /** @this{Object} */ -function() -{ _P1_cneg_1(this.ptr, true); return this; };; - -P1.prototype['add'] = P1.prototype.add = /** @this{Object} */ -function(p) -{ if (p instanceof P1) - _P1_add_1(this.ptr, p.ptr); - else if (p instanceof P1_Affine) - _P1_add_affine_1(this.ptr, p.ptr); - else - throw new Error(unsupported(p)); + }; + +P1.prototype['cneg'] = P1.prototype.cneg = + /** @this{Object} */ + function (flag) { + _P1_cneg_1(this.ptr, !!flag); return this; -};; + }; +P1.prototype['neg'] = P1.prototype.neg = + /** @this{Object} */ + function () { + _P1_cneg_1(this.ptr, true); + return this; + }; -P1.prototype['dbl'] = P1.prototype.dbl = /** @this{Object} */ -function() -{ _P1_dbl_0(this.ptr); return this; };; +P1.prototype['add'] = P1.prototype.add = + /** @this{Object} */ + function (p) { + if (p instanceof P1) _P1_add_1(this.ptr, p.ptr); + else if (p instanceof P1_Affine) _P1_add_affine_1(this.ptr, p.ptr); + else throw new Error(unsupported(p)); + return this; + }; -blst['G1'] = P1['generator'] = P1.generator = -function() -{ return wrapPointer(_P1_generator_0(), P1); };; +P1.prototype['dbl'] = P1.prototype.dbl = + /** @this{Object} */ + function () { + _P1_dbl_0(this.ptr); + return this; + }; +blst['G1'] = + P1['generator'] = + P1.generator = + function () { + return wrapPointer(_P1_generator_0(), P1); + }; /** @this{Object} */ -function P2_Affine(input) -{ ensureCache.prepare(); - if (typeof input === 'undefined' || input === null) - this.ptr = _P2_Affine_0(); - else if (input instanceof Uint8Array) - this.ptr = _P2_Affine_2(ensureInt8(input), input.length); - else if (input instanceof P2) - this.ptr = _P2_Affine_1(input.ptr); - else - throw new Error(unsupported(input)); - getCache(P2_Affine)[this.ptr] = this; +function P2_Affine(input) { + ensureCache.prepare(); + if (typeof input === 'undefined' || input === null) this.ptr = _P2_Affine_0(); + else if (input instanceof Uint8Array) this.ptr = _P2_Affine_2(ensureInt8(input), input.length); + else if (input instanceof P2) this.ptr = _P2_Affine_1(input.ptr); + else throw new Error(unsupported(input)); + getCache(P2_Affine)[this.ptr] = this; } P2_Affine.prototype = Object.create(WrapperObject.prototype); P2_Affine.prototype.constructor = P2_Affine; P2_Affine.prototype.__class__ = P2_Affine; P2_Affine.__cache__ = {}; blst['P2_Affine'] = P2_Affine; -P2_Affine.prototype['__destroy__'] = P2_Affine.prototype.__destroy__ = /** @this{Object} */ -function() -{ _P2_Affine__destroy__0(this.ptr); this.ptr = 0; };; - -P2_Affine.prototype['dup'] = P2_Affine.prototype.dup = /** @this{Object} */ -function() -{ return wrapPointer(_P2_Affine_dup_0(this.ptr), P2_Affine); };; - -P2_Affine.prototype['to_jacobian'] = P2_Affine.prototype.to_jacobian = /** @this{Object} */ -function() -{ return wrapPointer(_P2_Affine_to_jacobian_0(this.ptr), P2); };; - -P2_Affine.prototype['serialize'] = P2_Affine.prototype.serialize = /** @this{Object} */ -function() -{ var out = _P2_Affine_serialize_0(this.ptr); - return new Uint8Array(HEAPU8.subarray(out, out + 96*2)); -};; - -P2_Affine.prototype['compress'] = P2_Affine.prototype.compress = /** @this{Object} */ -function() -{ var out = _P2_Affine_compress_0(this.ptr); - return new Uint8Array(HEAPU8.subarray(out, out + 48*2)); -};; - -P2_Affine.prototype['on_curve'] = P2_Affine.prototype.on_curve = /** @this{Object} */ -function() -{ return !!(_P2_Affine_on_curve_0(this.ptr)); };; - -P2_Affine.prototype['in_group'] = P2_Affine.prototype.in_group = /** @this{Object} */ -function() -{ return !!(_P2_Affine_in_group_0(this.ptr)); };; - -P2_Affine.prototype['is_inf'] = P2_Affine.prototype.is_inf = /** @this{Object} */ -function() -{ return !!(_P2_Affine_is_inf_0(this.ptr)); };; - -P2_Affine.prototype['is_equal'] = P2_Affine.prototype.is_equal = /** @this{Object} */ -function(p) -{ if (p instanceof P2_Affine) - return !!(_P2_Affine_is_equal_1(this.ptr, p.ptr)); +P2_Affine.prototype['__destroy__'] = P2_Affine.prototype.__destroy__ = + /** @this{Object} */ + function () { + _P2_Affine__destroy__0(this.ptr); + this.ptr = 0; + }; + +P2_Affine.prototype['dup'] = P2_Affine.prototype.dup = + /** @this{Object} */ + function () { + return wrapPointer(_P2_Affine_dup_0(this.ptr), P2_Affine); + }; + +P2_Affine.prototype['to_jacobian'] = P2_Affine.prototype.to_jacobian = + /** @this{Object} */ + function () { + return wrapPointer(_P2_Affine_to_jacobian_0(this.ptr), P2); + }; + +P2_Affine.prototype['serialize'] = P2_Affine.prototype.serialize = + /** @this{Object} */ + function () { + var out = _P2_Affine_serialize_0(this.ptr); + return new Uint8Array(HEAPU8.subarray(out, out + 96 * 2)); + }; + +P2_Affine.prototype['compress'] = P2_Affine.prototype.compress = + /** @this{Object} */ + function () { + var out = _P2_Affine_compress_0(this.ptr); + return new Uint8Array(HEAPU8.subarray(out, out + 48 * 2)); + }; + +P2_Affine.prototype['on_curve'] = P2_Affine.prototype.on_curve = + /** @this{Object} */ + function () { + return !!_P2_Affine_on_curve_0(this.ptr); + }; + +P2_Affine.prototype['in_group'] = P2_Affine.prototype.in_group = + /** @this{Object} */ + function () { + return !!_P2_Affine_in_group_0(this.ptr); + }; + +P2_Affine.prototype['is_inf'] = P2_Affine.prototype.is_inf = + /** @this{Object} */ + function () { + return !!_P2_Affine_is_inf_0(this.ptr); + }; + +P2_Affine.prototype['is_equal'] = P2_Affine.prototype.is_equal = + /** @this{Object} */ + function (p) { + if (p instanceof P2_Affine) return !!_P2_Affine_is_equal_1(this.ptr, p.ptr); throw new Error(unsupported(p)); -};; + }; -P2_Affine.prototype['core_verify'] = P2_Affine.prototype.core_verify = /** @this{Object} */ -function(pk, hash_or_encode, msg, DST, aug) -{ if (!(pk instanceof P1_Affine)) - throw new Error(unsupported(pk)); +P2_Affine.prototype['core_verify'] = P2_Affine.prototype.core_verify = + /** @this{Object} */ + function (pk, hash_or_encode, msg, DST, aug) { + if (!(pk instanceof P1_Affine)) throw new Error(unsupported(pk)); ensureCache.prepare(); const [_msg, msg_len] = ensureAny(msg); DST = ensureString(DST); const [_aug, aug_len] = ensureAny(aug); - return _P2_Affine_core_verify_7(this.ptr, pk.ptr, !!hash_or_encode, _msg, msg_len, DST, _aug, aug_len); -};; + return _P2_Affine_core_verify_7( + this.ptr, + pk.ptr, + !!hash_or_encode, + _msg, + msg_len, + DST, + _aug, + aug_len, + ); + }; -P2_Affine['generator'] = P2_Affine.generator = -function() -{ return wrapPointer(_P2_Affine_generator_0(), P2_Affine); };; +P2_Affine['generator'] = P2_Affine.generator = function () { + return wrapPointer(_P2_Affine_generator_0(), P2_Affine); +}; /** @this{Object} */ -function P2(input) -{ ensureCache.prepare(); - if (typeof input === 'undefined' || input === null) - this.ptr = _P2_0(); - else if (input instanceof Uint8Array) - this.ptr = _P2_2(ensureInt8(input), input.length); - else if (input instanceof P2_Affine) - this.ptr = _P2_affine_1(input.ptr); - else if (input instanceof SecretKey) - this.ptr = _P2_secretkey_1(input.ptr); - else - throw new Error(unsupported(input)); - getCache(P2)[this.ptr] = this; +function P2(input) { + ensureCache.prepare(); + if (typeof input === 'undefined' || input === null) this.ptr = _P2_0(); + else if (input instanceof Uint8Array) this.ptr = _P2_2(ensureInt8(input), input.length); + else if (input instanceof P2_Affine) this.ptr = _P2_affine_1(input.ptr); + else if (input instanceof SecretKey) this.ptr = _P2_secretkey_1(input.ptr); + else throw new Error(unsupported(input)); + getCache(P2)[this.ptr] = this; } P2.prototype = Object.create(WrapperObject.prototype); P2.prototype.constructor = P2; P2.prototype.__class__ = P2; P2.__cache__ = {}; blst['P2'] = P2; -P2.prototype['__destroy__'] = P2.prototype.__destroy__ = /** @this{Object} */ -function() -{ _P2__destroy__0(this.ptr); this.ptr = 0; };; - -P2.prototype['dup'] = P2.prototype.dup = /** @this{Object} */ -function() -{ return wrapPointer(_P2_dup_0(this.ptr), P2); };; - -P2.prototype['to_affine'] = P2.prototype.to_affine = /** @this{Object} */ -function() -{ return wrapPointer(_P2_to_affine_0(this.ptr), P2_Affine); };; - -P2.prototype['serialize'] = P2.prototype.serialize = /** @this{Object} */ -function() -{ var out = _P2_serialize_0(this.ptr); - return new Uint8Array(HEAPU8.subarray(out, out + 96*2)); -};; - -P2.prototype['compress'] = P2.prototype.compress = /** @this{Object} */ -function() -{ var out = _P2_compress_0(this.ptr); - return new Uint8Array(HEAPU8.subarray(out, out + 48*2)); -};; - -P2.prototype['on_curve'] = P2.prototype.on_curve = /** @this{Object} */ -function() -{ return !!(_P2_on_curve_0(this.ptr)); };; - -P2.prototype['in_group'] = P2.prototype.in_group = /** @this{Object} */ -function() -{ return !!(_P2_in_group_0(this.ptr)); };; - -P2.prototype['is_inf'] = P2.prototype.is_inf = /** @this{Object} */ -function() -{ return !!(_P2_is_inf_0(this.ptr)); };; - -P2.prototype['is_equal'] = P2.prototype.is_equal = /** @this{Object} */ -function(p) -{ if (p instanceof P2) - return !!(_P2_is_equal_1(this.ptr, p.ptr)); +P2.prototype['__destroy__'] = P2.prototype.__destroy__ = + /** @this{Object} */ + function () { + _P2__destroy__0(this.ptr); + this.ptr = 0; + }; + +P2.prototype['dup'] = P2.prototype.dup = + /** @this{Object} */ + function () { + return wrapPointer(_P2_dup_0(this.ptr), P2); + }; + +P2.prototype['to_affine'] = P2.prototype.to_affine = + /** @this{Object} */ + function () { + return wrapPointer(_P2_to_affine_0(this.ptr), P2_Affine); + }; + +P2.prototype['serialize'] = P2.prototype.serialize = + /** @this{Object} */ + function () { + var out = _P2_serialize_0(this.ptr); + return new Uint8Array(HEAPU8.subarray(out, out + 96 * 2)); + }; + +P2.prototype['compress'] = P2.prototype.compress = + /** @this{Object} */ + function () { + var out = _P2_compress_0(this.ptr); + return new Uint8Array(HEAPU8.subarray(out, out + 48 * 2)); + }; + +P2.prototype['on_curve'] = P2.prototype.on_curve = + /** @this{Object} */ + function () { + return !!_P2_on_curve_0(this.ptr); + }; + +P2.prototype['in_group'] = P2.prototype.in_group = + /** @this{Object} */ + function () { + return !!_P2_in_group_0(this.ptr); + }; + +P2.prototype['is_inf'] = P2.prototype.is_inf = + /** @this{Object} */ + function () { + return !!_P2_is_inf_0(this.ptr); + }; + +P2.prototype['is_equal'] = P2.prototype.is_equal = + /** @this{Object} */ + function (p) { + if (p instanceof P2) return !!_P2_is_equal_1(this.ptr, p.ptr); throw new Error(unsupported(p)); -};; - -P2.prototype['aggregate'] = P2.prototype.aggregate = /** @this{Object} */ -function(p) -{ if (p instanceof P2_Affine) - _P2_aggregate_1(this.ptr, p.ptr); - else - throw new Error(unsupported(p)); -};; - -P2.prototype['sign_with'] = P2.prototype.sign_with = /** @this{Object} */ -function(sk) -{ if (sk instanceof SecretKey) - _P2_sign_with_1(this.ptr, sk.ptr); - else - throw new Error(unsupported(sk)); + }; + +P2.prototype['aggregate'] = P2.prototype.aggregate = + /** @this{Object} */ + function (p) { + if (p instanceof P2_Affine) _P2_aggregate_1(this.ptr, p.ptr); + else throw new Error(unsupported(p)); + }; + +P2.prototype['sign_with'] = P2.prototype.sign_with = + /** @this{Object} */ + function (sk) { + if (sk instanceof SecretKey) _P2_sign_with_1(this.ptr, sk.ptr); + else throw new Error(unsupported(sk)); return this; -};; + }; -P2.prototype['hash_to'] = P2.prototype.hash_to = /** @this{Object} */ -function(msg, DST, aug) -{ ensureCache.prepare(); +P2.prototype['hash_to'] = P2.prototype.hash_to = + /** @this{Object} */ + function (msg, DST, aug) { + ensureCache.prepare(); const [_msg, msg_len] = ensureAny(msg); DST = ensureString(DST); const [_aug, aug_len] = ensureAny(aug); _P2_hash_to_5(this.ptr, _msg, msg_len, DST, _aug, aug_len); return this; -};; + }; -P2.prototype['encode_to'] = P2.prototype.encode_to = /** @this{Object} */ -function(msg, DST, aug) -{ ensureCache.prepare(); +P2.prototype['encode_to'] = P2.prototype.encode_to = + /** @this{Object} */ + function (msg, DST, aug) { + ensureCache.prepare(); const [_msg, msg_len] = ensureAny(msg); DST = ensureString(DST); const [_aug, aug_len] = ensureAny(aug); _P2_encode_to_5(this.ptr, _msg, msg_len, DST, _aug, aug_len); return this; -};; + }; -P2.prototype['mult'] = P2.prototype.mult = /** @this{Object} */ -function(scalar) -{ if (scalar instanceof Scalar) { - _P2_mult_1(this.ptr, scalar.ptr); +P2.prototype['mult'] = P2.prototype.mult = + /** @this{Object} */ + function (scalar) { + if (scalar instanceof Scalar) { + _P2_mult_1(this.ptr, scalar.ptr); } else if (typeof scalar !== 'string') { - ensureCache.prepare(); - const [_scalar, len] = ensureAny(scalar); - _P2_mult_2(this.ptr, _scalar, len*8); + ensureCache.prepare(); + const [_scalar, len] = ensureAny(scalar); + _P2_mult_2(this.ptr, _scalar, len * 8); } else { - throw new Error(unsupported(scalar)); + throw new Error(unsupported(scalar)); } return this; -};; - -P2.prototype['cneg'] = P2.prototype.cneg = /** @this{Object} */ -function(flag) -{ _P2_cneg_1(this.ptr, !!flag); return this; };; -P2.prototype['neg'] = P2.prototype.neg = /** @this{Object} */ -function() -{ _P2_cneg_1(this.ptr, true); return this; };; - -P2.prototype['add'] = P2.prototype.add = /** @this{Object} */ -function(p) -{ if (p instanceof P2) - _P2_add_1(this.ptr, p.ptr); - else if (p instanceof P2_Affine) - _P2_add_affine_1(this.ptr, p.ptr); - else - throw new Error(unsupported(p)); + }; + +P2.prototype['cneg'] = P2.prototype.cneg = + /** @this{Object} */ + function (flag) { + _P2_cneg_1(this.ptr, !!flag); return this; -};; + }; +P2.prototype['neg'] = P2.prototype.neg = + /** @this{Object} */ + function () { + _P2_cneg_1(this.ptr, true); + return this; + }; -P2.prototype['dbl'] = P2.prototype.dbl = /** @this{Object} */ -function() -{ _P2_dbl_0(this.ptr); return this; };; +P2.prototype['add'] = P2.prototype.add = + /** @this{Object} */ + function (p) { + if (p instanceof P2) _P2_add_1(this.ptr, p.ptr); + else if (p instanceof P2_Affine) _P2_add_affine_1(this.ptr, p.ptr); + else throw new Error(unsupported(p)); + return this; + }; + +P2.prototype['dbl'] = P2.prototype.dbl = + /** @this{Object} */ + function () { + _P2_dbl_0(this.ptr); + return this; + }; -blst['G2'] = P2['generator'] = P2.generator = -function() -{ return wrapPointer(_P2_generator_0(), P2); };; +blst['G2'] = + P2['generator'] = + P2.generator = + function () { + return wrapPointer(_P2_generator_0(), P2); + }; // end include: /Users/tatiana/Documents/_dev/GNOSIS/shutter-encryption/blst/bindings/emscripten/blst_bind.js - diff --git a/public/blst/blst_bind.js b/public/blst/blst_bind.js index bc8d193..dd073fa 100644 --- a/public/blst/blst_bind.js +++ b/public/blst/blst_bind.js @@ -4,841 +4,974 @@ //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! const BLST_ERROR_str = [ - "BLST_ERROR: success", - "BLST_ERROR: bad point encoding", - "BLST_ERROR: point is not on curve", - "BLST_ERROR: point is not in group", - "BLST_ERROR: context type mismatch", - "BLST_ERROR: verify failed", - "BLST_ERROR: public key is infinite", - "BLST_ERROR: bad scalar", + 'BLST_ERROR: success', + 'BLST_ERROR: bad point encoding', + 'BLST_ERROR: point is not on curve', + 'BLST_ERROR: point is not in group', + 'BLST_ERROR: context type mismatch', + 'BLST_ERROR: verify failed', + 'BLST_ERROR: public key is infinite', + 'BLST_ERROR: bad scalar', ]; -function unsupported(type, extra) -{ if (typeof extra === 'undefined') - return `${type ? type.constructor.name : 'none'}: unsupported type`; - else - return `${type ? type.constructor.name : 'none'}/${extra ? extra.constructor.name : 'none'}: unsupported types or combination thereof`; +function unsupported(type, extra) { + if (typeof extra === 'undefined') + return `${type ? type.constructor.name : 'none'}: unsupported type`; + else + return `${type ? type.constructor.name : 'none'}/${extra ? extra.constructor.name : 'none'}: unsupported types or combination thereof`; } -function ensureAny(value) -{ if (value === null) - return [0, 0]; - - switch (value.constructor) { - case String: - return [ensureString(value), lengthBytesUTF8(value)]; - case ArrayBuffer: - return [ensureInt8(new Uint8Array(value)), value.byteLength]; - case BigInt: - if (value < 0) - throw new Error("expecting unsigned BigInt value"); - var temp = []; - while (value != 0) { - temp.push(Number(value & 255n)); - value >>= 8n; - } - return [ensureInt8(temp), temp.length]; - case Uint8Array: case Buffer: - return [ensureInt8(value), value.length]; - default: - throw new Error(unsupported(value)); - } +function ensureAny(value) { + if (value === null) return [0, 0]; + + switch (value.constructor) { + case String: + return [ensureString(value), lengthBytesUTF8(value)]; + case ArrayBuffer: + return [ensureInt8(new Uint8Array(value)), value.byteLength]; + case BigInt: + if (value < 0) throw new Error('expecting unsigned BigInt value'); + var temp = []; + while (value != 0) { + temp.push(Number(value & 255n)); + value >>= 8n; + } + return [ensureInt8(temp), temp.length]; + case Uint8Array: + case Buffer: + return [ensureInt8(value), value.length]; + default: + throw new Error(unsupported(value)); + } } -(function() { - function setupConsts() { - var i = 0; - Module['BLST_SUCCESS'] = i++; - Module['BLST_BAD_ENCODING'] = i++; - Module['BLST_POINT_NOT_ON_CURVE'] = i++; - Module['BLST_POINT_NOT_IN_GROUP'] = i++; - Module['BLST_AGGR_TYPE_MISMATCH'] = i++; - Module['BLST_VERIFY_FAIL'] = i++; - Module['BLST_PK_IS_INFINITY'] = i++; - Module['BLST_BAD_SCALAR'] = i++; - Module['BLS12_381_G1'] = wrapPointer(_const_G1(), P1_Affine); - Module['BLS12_381_G2'] = wrapPointer(_const_G2(), P2_Affine); - Module['BLS12_381_NEG_G1'] = wrapPointer(_const_NEG_G1(), P1_Affine); - Module['BLS12_381_NEG_G2'] = wrapPointer(_const_NEG_G2(), P2_Affine); - } - if (runtimeInitialized) setupConsts(); - else addOnInit(setupConsts); +(function () { + function setupConsts() { + var i = 0; + Module['BLST_SUCCESS'] = i++; + Module['BLST_BAD_ENCODING'] = i++; + Module['BLST_POINT_NOT_ON_CURVE'] = i++; + Module['BLST_POINT_NOT_IN_GROUP'] = i++; + Module['BLST_AGGR_TYPE_MISMATCH'] = i++; + Module['BLST_VERIFY_FAIL'] = i++; + Module['BLST_PK_IS_INFINITY'] = i++; + Module['BLST_BAD_SCALAR'] = i++; + Module['BLS12_381_G1'] = wrapPointer(_const_G1(), P1_Affine); + Module['BLS12_381_G2'] = wrapPointer(_const_G2(), P2_Affine); + Module['BLS12_381_NEG_G1'] = wrapPointer(_const_NEG_G1(), P1_Affine); + Module['BLS12_381_NEG_G2'] = wrapPointer(_const_NEG_G2(), P2_Affine); + } + if (runtimeInitialized) setupConsts(); + else addOnInit(setupConsts); })(); /** @this{Object} */ -function SecretKey() -{ this.ptr = _SecretKey_0(); - getCache(SecretKey)[this.ptr] = this; +function SecretKey() { + this.ptr = _SecretKey_0(); + getCache(SecretKey)[this.ptr] = this; } SecretKey.prototype = Object.create(WrapperObject.prototype); SecretKey.prototype.constructor = SecretKey; SecretKey.prototype.__class__ = SecretKey; SecretKey.__cache__ = {}; Module['SecretKey'] = SecretKey; -SecretKey.prototype['__destroy__'] = SecretKey.prototype.__destroy__ = /** @this{Object} */ -function() -{ _SecretKey__destroy__0(this.ptr); this.ptr = 0; };; - -SecretKey.prototype['keygen'] = SecretKey.prototype.keygen = /** @this{Object} */ -function(IKM, info) -{ ensureCache.prepare(); +SecretKey.prototype['__destroy__'] = SecretKey.prototype.__destroy__ = + /** @this{Object} */ + function () { + _SecretKey__destroy__0(this.ptr); + this.ptr = 0; + }; + +SecretKey.prototype['keygen'] = SecretKey.prototype.keygen = + /** @this{Object} */ + function (IKM, info) { + ensureCache.prepare(); const [_IKM, IKM_len] = ensureAny(IKM); - if (IKM_len < 32) - throw new Error("BLST_ERROR: bad scalar"); + if (IKM_len < 32) throw new Error('BLST_ERROR: bad scalar'); info = ensureString(info); _SecretKey_keygen_3(this.ptr, _IKM, IKM_len, info); HEAP8.fill(0, _IKM, _IKM + IKM_len); -};; + }; -SecretKey.prototype['derive_master_eip2333'] = SecretKey.prototype.derive_master_eip2333 = /** @this{Object} */ -function(IKM) -{ ensureCache.prepare(); +SecretKey.prototype['derive_master_eip2333'] = SecretKey.prototype.derive_master_eip2333 = + /** @this{Object} */ + function (IKM) { + ensureCache.prepare(); const [_IKM, IKM_len] = ensureAny(IKM); - if (IKM_len < 32) - throw new Error("BLST_ERROR: bad scalar"); + if (IKM_len < 32) throw new Error('BLST_ERROR: bad scalar'); _SecretKey_derive_master_eip2333_2(this.ptr, _IKM, IKM_len); HEAP8.fill(0, _IKM, _IKM + IKM_len); -};; + }; -SecretKey.prototype['derive_child_eip2333'] = SecretKey.prototype.derive_child_eip2333 = /** @this{Object} */ -function(sk, child_index) -{ if (!(sk instanceof SecretKey)) - throw new Error(unsupported(sk)); +SecretKey.prototype['derive_child_eip2333'] = SecretKey.prototype.derive_child_eip2333 = + /** @this{Object} */ + function (sk, child_index) { + if (!(sk instanceof SecretKey)) throw new Error(unsupported(sk)); _SecretKey_derive_child_eip2333_2(this.ptr, sk.ptr, child_index); -};; + }; -SecretKey.prototype['from_bendian'] = SecretKey.prototype.from_bendian = /** @this{Object} */ -function(sk) -{ if (!(sk instanceof Uint8Array) || sk.length != 32) - throw new Error(unsupported(sk)); +SecretKey.prototype['from_bendian'] = SecretKey.prototype.from_bendian = + /** @this{Object} */ + function (sk) { + if (!(sk instanceof Uint8Array) || sk.length != 32) throw new Error(unsupported(sk)); ensureCache.prepare(); sk = ensureInt8(sk); _SecretKey_from_bendian_1(this.ptr, sk); HEAP8.fill(0, sk, sk + 32); -};; + }; -SecretKey.prototype['from_lendian'] = SecretKey.prototype.from_lendian = /** @this{Object} */ -function(sk) -{ if (!(sk instanceof Uint8Array) || sk.length != 32) - throw new Error(unsupported(sk)); +SecretKey.prototype['from_lendian'] = SecretKey.prototype.from_lendian = + /** @this{Object} */ + function (sk) { + if (!(sk instanceof Uint8Array) || sk.length != 32) throw new Error(unsupported(sk)); ensureCache.prepare(); sk = ensureInt8(sk); _SecretKey_from_lendian_1(this.ptr, sk); HEAP8.fill(0, sk, sk + 32); -};; + }; -SecretKey.prototype['to_bendian'] = SecretKey.prototype.to_bendian = /** @this{Object} */ -function() -{ var out = _SecretKey_to_bendian_0(this.ptr); +SecretKey.prototype['to_bendian'] = SecretKey.prototype.to_bendian = + /** @this{Object} */ + function () { + var out = _SecretKey_to_bendian_0(this.ptr); var ret = new Uint8Array(HEAPU8.subarray(out, out + 32)); HEAP8.fill(0, out, out + 32); return ret; -};; + }; -SecretKey.prototype['to_lendian'] = SecretKey.prototype.to_lendian = /** @this{Object} */ -function() -{ var out = _SecretKey_to_lendian_0(this.ptr); +SecretKey.prototype['to_lendian'] = SecretKey.prototype.to_lendian = + /** @this{Object} */ + function () { + var out = _SecretKey_to_lendian_0(this.ptr); var ret = new Uint8Array(HEAPU8.subarray(out, out + 32)); HEAP8.fill(0, out, out + 32); return ret; -};; + }; /** @this{Object} */ -function Scalar(scalar, DST) -{ if (typeof scalar === 'undefined' || scalar === null) { - this.ptr = _Scalar_0(); +function Scalar(scalar, DST) { + if (typeof scalar === 'undefined' || scalar === null) { + this.ptr = _Scalar_0(); + } else { + ensureCache.prepare(); + const [_scalar, len] = ensureAny(scalar); + if (typeof DST === 'string' || DST === null) { + DST = ensureString(DST); + this.ptr = _Scalar_3(_scalar, len, DST); } else { - ensureCache.prepare(); - const [ _scalar, len] = ensureAny(scalar); - if (typeof DST === 'string' || DST === null) { - DST = ensureString(DST); - this.ptr = _Scalar_3(_scalar, len, DST); - } else { - this.ptr = _Scalar_2(_scalar, len*8); - } + this.ptr = _Scalar_2(_scalar, len * 8); } - getCache(Scalar)[this.ptr] = this; + } + getCache(Scalar)[this.ptr] = this; } Scalar.prototype = Object.create(WrapperObject.prototype); Scalar.prototype.constructor = Scalar; Scalar.prototype.__class__ = Scalar; Scalar.__cache__ = {}; Module['Scalar'] = Scalar; -Scalar.prototype['__destroy__'] = Scalar.prototype.__destroy__ = /** @this{Object} */ -function() -{ _Scalar__destroy__0(this.ptr); this.ptr = 0; };; - -Scalar.prototype['hash_to'] = Scalar.prototype.hash_to = /** @this{Object} */ -function(msg, DST) -{ ensureCache.prepare(); - const [ _msg, msg_len] = ensureAny(msg); +Scalar.prototype['__destroy__'] = Scalar.prototype.__destroy__ = + /** @this{Object} */ + function () { + _Scalar__destroy__0(this.ptr); + this.ptr = 0; + }; + +Scalar.prototype['hash_to'] = Scalar.prototype.hash_to = + /** @this{Object} */ + function (msg, DST) { + ensureCache.prepare(); + const [_msg, msg_len] = ensureAny(msg); DST = ensureString(DST); _Scalar_hash_to_3(this.ptr, _msg, msg_len, DST); return this; -};; + }; -Scalar.prototype['dup'] = Scalar.prototype.dup = /** @this{Object} */ -function() -{ return wrapPointer(_Scalar_dup_0(this.ptr), Scalar); };; +Scalar.prototype['dup'] = Scalar.prototype.dup = + /** @this{Object} */ + function () { + return wrapPointer(_Scalar_dup_0(this.ptr), Scalar); + }; -Scalar.prototype['from_bendian'] = Scalar.prototype.from_bendian = /** @this{Object} */ -function(msg) -{ ensureCache.prepare(); - const [ _msg, msg_len] = ensureAny(msg); +Scalar.prototype['from_bendian'] = Scalar.prototype.from_bendian = + /** @this{Object} */ + function (msg) { + ensureCache.prepare(); + const [_msg, msg_len] = ensureAny(msg); _Scalar_from_bendian_2(this.ptr, _msg, msg_len); return this; -};; + }; -Scalar.prototype['from_lendian'] = Scalar.prototype.from_lendian = /** @this{Object} */ -function(msg) -{ ensureCache.prepare(); - const [ _msg, msg_len] = ensureAny(msg); +Scalar.prototype['from_lendian'] = Scalar.prototype.from_lendian = + /** @this{Object} */ + function (msg) { + ensureCache.prepare(); + const [_msg, msg_len] = ensureAny(msg); _Scalar_from_lendian_2(this.ptr, _msg, msg_len); return this; -};; + }; -Scalar.prototype['to_bendian'] = Scalar.prototype.to_bendian = /** @this{Object} */ -function() -{ var out = _Scalar_to_bendian_0(this.ptr); +Scalar.prototype['to_bendian'] = Scalar.prototype.to_bendian = + /** @this{Object} */ + function () { + var out = _Scalar_to_bendian_0(this.ptr); return new Uint8Array(HEAPU8.subarray(out, out + 32)); -};; + }; -Scalar.prototype['to_lendian'] = Scalar.prototype.to_lendian = /** @this{Object} */ -function() -{ var out = _Scalar_to_lendian_0(this.ptr); +Scalar.prototype['to_lendian'] = Scalar.prototype.to_lendian = + /** @this{Object} */ + function () { + var out = _Scalar_to_lendian_0(this.ptr); return new Uint8Array(HEAPU8.subarray(out, out + 32)); -};; + }; -Scalar.prototype['add'] = Scalar.prototype.add = /** @this{Object} */ -function(a) -{ if (!(a instanceof Scalar || a instanceof SecretKey)) - throw new Error(unsupported(a)); +Scalar.prototype['add'] = Scalar.prototype.add = + /** @this{Object} */ + function (a) { + if (!(a instanceof Scalar || a instanceof SecretKey)) throw new Error(unsupported(a)); _Scalar_add_1(this.ptr, a.ptr); return this; -};; + }; -Scalar.prototype['sub'] = Scalar.prototype.sub = /** @this{Object} */ -function(a) -{ if (!(a instanceof Scalar)) - throw new Error(unsupported(a)); +Scalar.prototype['sub'] = Scalar.prototype.sub = + /** @this{Object} */ + function (a) { + if (!(a instanceof Scalar)) throw new Error(unsupported(a)); _Scalar_sub_1(this.ptr, a.ptr); return this; -};; + }; -Scalar.prototype['mul'] = Scalar.prototype.mul = /** @this{Object} */ -function(a) -{ if (!(a instanceof Scalar)) - throw new Error(unsupported(a)); +Scalar.prototype['mul'] = Scalar.prototype.mul = + /** @this{Object} */ + function (a) { + if (!(a instanceof Scalar)) throw new Error(unsupported(a)); _Scalar_mul_1(this.ptr, a.ptr); return this; -};; + }; -Scalar.prototype['inverse'] = Scalar.prototype.inverse = /** @this{Object} */ -function() -{ _Scalar_inverse_0(this.ptr); return this; };; +Scalar.prototype['inverse'] = Scalar.prototype.inverse = + /** @this{Object} */ + function () { + _Scalar_inverse_0(this.ptr); + return this; + }; /** @this{Object} */ -function PT(p, q) -{ if (typeof q === 'undefined' || q === null) { - if (p instanceof P1_Affine) - this.ptr = _PT_p_affine_1(p.ptr); - else if (p instanceof P2_Affine) - this.ptr = _PT_q_affine_1(p.ptr); - else - throw new Error(unsupported(p)); - } else if (p instanceof P1_Affine && q instanceof P2_Affine) { - this.ptr = _PT_pq_affine_2(p.ptr, q.ptr); - } else if (p instanceof P2_Affine && q instanceof P1_Affine) { - this.ptr = _PT_pq_affine_2(q.ptr, p.ptr); - } else if (p instanceof P1 && q instanceof P2) { - this.ptr = _PT_pq_2(p.ptr, q.ptr); - } else if (p instanceof P2 && q instanceof P1) { - this.ptr = _PT_pq_2(q.ptr, p.ptr); - } else { - throw new Error(unsupported(p, q)); - } - getCache(PT)[this.ptr] = this; +function PT(p, q) { + if (typeof q === 'undefined' || q === null) { + if (p instanceof P1_Affine) this.ptr = _PT_p_affine_1(p.ptr); + else if (p instanceof P2_Affine) this.ptr = _PT_q_affine_1(p.ptr); + else throw new Error(unsupported(p)); + } else if (p instanceof P1_Affine && q instanceof P2_Affine) { + this.ptr = _PT_pq_affine_2(p.ptr, q.ptr); + } else if (p instanceof P2_Affine && q instanceof P1_Affine) { + this.ptr = _PT_pq_affine_2(q.ptr, p.ptr); + } else if (p instanceof P1 && q instanceof P2) { + this.ptr = _PT_pq_2(p.ptr, q.ptr); + } else if (p instanceof P2 && q instanceof P1) { + this.ptr = _PT_pq_2(q.ptr, p.ptr); + } else { + throw new Error(unsupported(p, q)); + } + getCache(PT)[this.ptr] = this; } PT.prototype = Object.create(WrapperObject.prototype); PT.prototype.constructor = PT; PT.prototype.__class__ = PT; PT.__cache__ = {}; Module['PT'] = PT; -PT.prototype['__destroy__'] = PT.prototype.__destroy__ = /** @this{Object} */ -function() -{ _PT__destroy__0(this.ptr); this.ptr = 0; };; - -PT.prototype['dup'] = PT.prototype.dup = /** @this{Object} */ -function() -{ return wrapPointer(_PT_dup_0(this.ptr), PT); };; - -PT.prototype['is_one'] = PT.prototype.is_one = /** @this{Object} */ -function() -{ return !!(_PT_is_one_0(this.ptr)); };; - -PT.prototype['is_equal'] = PT.prototype.is_equal = /** @this{Object} */ -function(p) -{ if (p instanceof PT) - return !!(_PT_is_equal_1(this.ptr, p.ptr)); +PT.prototype['__destroy__'] = PT.prototype.__destroy__ = + /** @this{Object} */ + function () { + _PT__destroy__0(this.ptr); + this.ptr = 0; + }; + +PT.prototype['dup'] = PT.prototype.dup = + /** @this{Object} */ + function () { + return wrapPointer(_PT_dup_0(this.ptr), PT); + }; + +PT.prototype['is_one'] = PT.prototype.is_one = + /** @this{Object} */ + function () { + return !!_PT_is_one_0(this.ptr); + }; + +PT.prototype['is_equal'] = PT.prototype.is_equal = + /** @this{Object} */ + function (p) { + if (p instanceof PT) return !!_PT_is_equal_1(this.ptr, p.ptr); throw new Error(unsupported(p)); -};; - -PT.prototype['sqr'] = PT.prototype.sqr = /** @this{Object} */ -function() -{ _PT_sqr_0(this.ptr); return this; };; - -PT.prototype['mul'] = PT.prototype.mul = /** @this{Object} */ -function(p) -{ if (p instanceof PT) - _PT_mul_1(this.ptr, p.ptr); - else - throw new Error(unsupported(p)); - return this; -};; - -PT.prototype['final_exp'] = PT.prototype.final_exp = /** @this{Object} */ -function() -{ _PT_final_exp_0(this.ptr); return this; };; + }; -PT.prototype['in_group'] = PT.prototype.in_group = /** @this{Object} */ -function() -{ return !!(_PT_in_group_0(this.ptr)); };; - -PT.prototype['to_bendian'] = PT.prototype.to_bendian = /** @this{Object} */ -function() -{ var out = _PT_to_bendian_0(this.ptr); - return new Uint8Array(HEAPU8.subarray(out, out + 48*12)); -};; +PT.prototype['sqr'] = PT.prototype.sqr = + /** @this{Object} */ + function () { + _PT_sqr_0(this.ptr); + return this; + }; -PT['finalverify'] = PT.finalverify = -function(gt1, gt2) -{ if (gt1 instanceof PT && gt2 instanceof PT) - return !!(_PT_finalverify_2(gt1.ptr, gt2.ptr)); - throw new Error(unsupported(gt1, gt2)); -};; +PT.prototype['mul'] = PT.prototype.mul = + /** @this{Object} */ + function (p) { + if (p instanceof PT) _PT_mul_1(this.ptr, p.ptr); + else throw new Error(unsupported(p)); + return this; + }; -PT['one'] = PT.one = -function() -{ return wrapPointer(_PT_one_0(), PT); };; +PT.prototype['final_exp'] = PT.prototype.final_exp = + /** @this{Object} */ + function () { + _PT_final_exp_0(this.ptr); + return this; + }; + +PT.prototype['in_group'] = PT.prototype.in_group = + /** @this{Object} */ + function () { + return !!_PT_in_group_0(this.ptr); + }; + +PT.prototype['to_bendian'] = PT.prototype.to_bendian = + /** @this{Object} */ + function () { + var out = _PT_to_bendian_0(this.ptr); + return new Uint8Array(HEAPU8.subarray(out, out + 48 * 12)); + }; + +PT['finalverify'] = PT.finalverify = function (gt1, gt2) { + if (gt1 instanceof PT && gt2 instanceof PT) return !!_PT_finalverify_2(gt1.ptr, gt2.ptr); + throw new Error(unsupported(gt1, gt2)); +}; + +PT['one'] = PT.one = function () { + return wrapPointer(_PT_one_0(), PT); +}; /** @this{Object} */ -function Pairing(hash_or_encode, DST) -{ ensureCache.prepare(); - DST = ensureString(DST); - this.ptr = _Pairing_2(!!hash_or_encode, DST); - getCache(SecretKey)[this.ptr] = this; +function Pairing(hash_or_encode, DST) { + ensureCache.prepare(); + DST = ensureString(DST); + this.ptr = _Pairing_2(!!hash_or_encode, DST); + getCache(SecretKey)[this.ptr] = this; } Pairing.prototype = Object.create(WrapperObject.prototype); Pairing.prototype.constructor = Pairing; Pairing.prototype.__class__ = Pairing; Pairing.__cache__ = {}; Module['Pairing'] = Pairing; -Pairing.prototype['__destroy__'] = Pairing.prototype.__destroy__ = /** @this{Object} */ -function() -{ _Pairing__destroy__0(this.ptr); this.ptr = 0; };; - -Pairing.prototype['aggregate'] = Pairing.prototype.aggregate = /** @this{Object} */ -function(pk, sig, msg, aug) -{ ensureCache.prepare(); +Pairing.prototype['__destroy__'] = Pairing.prototype.__destroy__ = + /** @this{Object} */ + function () { + _Pairing__destroy__0(this.ptr); + this.ptr = 0; + }; + +Pairing.prototype['aggregate'] = Pairing.prototype.aggregate = + /** @this{Object} */ + function (pk, sig, msg, aug) { + ensureCache.prepare(); const [_msg, msg_len] = ensureAny(msg); const [_aug, aug_len] = ensureAny(aug); if (pk instanceof P1_Affine && sig instanceof P2_Affine) - return _Pairing_aggregate_pk_in_g1_6(this.ptr, pk.ptr, sig.ptr, _msg, msg_len, _aug, aug_len); + return _Pairing_aggregate_pk_in_g1_6(this.ptr, pk.ptr, sig.ptr, _msg, msg_len, _aug, aug_len); else if (pk instanceof P2_Affine && sig instanceof P1_Affine) - return _Pairing_aggregate_pk_in_g2_6(this.ptr, pk.ptr, sig.ptr, _msg, msg_len, _aug, aug_len); - else - throw new Error(unsupported(pk, sig)); + return _Pairing_aggregate_pk_in_g2_6(this.ptr, pk.ptr, sig.ptr, _msg, msg_len, _aug, aug_len); + else throw new Error(unsupported(pk, sig)); return -1; -};; + }; -Pairing.prototype['mul_n_aggregate'] = Pairing.prototype.mul_n_aggregate = /** @this{Object} */ -function(pk, sig, scalar, msg, aug) -{ if (typeof scalar === 'undefined' || scalar === null) - throw new Error("missing |scalar| argument"); +Pairing.prototype['mul_n_aggregate'] = Pairing.prototype.mul_n_aggregate = + /** @this{Object} */ + function (pk, sig, scalar, msg, aug) { + if (typeof scalar === 'undefined' || scalar === null) + throw new Error('missing |scalar| argument'); ensureCache.prepare(); const [_scalar, len] = ensureAny(scalar); const [_msg, msg_len] = ensureAny(msg); const [_aug, aug_len] = ensureAny(aug); if (pk instanceof P1_Affine && sig instanceof P2_Affine) - return _Pairing_mul_n_aggregate_pk_in_g1_8(this.ptr, pk.ptr, sig.ptr, _scalar, len*8, _msg, msg_len, _aug, aug_len); + return _Pairing_mul_n_aggregate_pk_in_g1_8( + this.ptr, + pk.ptr, + sig.ptr, + _scalar, + len * 8, + _msg, + msg_len, + _aug, + aug_len, + ); else if (pk instanceof P2_Affine && sig instanceof P1_Affine) - return _Pairing_mul_n_aggregate_pk_in_g2_8(this.ptr, pk.ptr, sig.ptr, _scalar, len*8, _msg, msg_len, _aug, aug_len); - else - throw new Error(unsupported(pk, sig)); + return _Pairing_mul_n_aggregate_pk_in_g2_8( + this.ptr, + pk.ptr, + sig.ptr, + _scalar, + len * 8, + _msg, + msg_len, + _aug, + aug_len, + ); + else throw new Error(unsupported(pk, sig)); return -1; -};; - -Pairing.prototype['commit'] = Pairing.prototype.commit = /** @this{Object} */ -function() -{ _Pairing_commit_0(this.ptr); };; - -Pairing.prototype['asArrayBuffer'] = Pairing.prototype.asArrayBuffer = /** @this{Object} */ -function() -{ return HEAP8.buffer.slice(this.ptr, this.ptr + _Pairing_sizeof_0()); };; - -Pairing.prototype['merge'] = Pairing.prototype.merge = /** @this{Object} */ -function(ctx) -{ if (ctx instanceof Pairing) - return _Pairing_merge_1(this.ptr, ctx.ptr); + }; + +Pairing.prototype['commit'] = Pairing.prototype.commit = + /** @this{Object} */ + function () { + _Pairing_commit_0(this.ptr); + }; + +Pairing.prototype['asArrayBuffer'] = Pairing.prototype.asArrayBuffer = + /** @this{Object} */ + function () { + return HEAP8.buffer.slice(this.ptr, this.ptr + _Pairing_sizeof_0()); + }; + +Pairing.prototype['merge'] = Pairing.prototype.merge = + /** @this{Object} */ + function (ctx) { + if (ctx instanceof Pairing) return _Pairing_merge_1(this.ptr, ctx.ptr); else if (ctx instanceof ArrayBuffer && ctx.byteLength == _Pairing_sizeof_0()) - return _Pairing_merge_1(this.ptr, ensureAny(ctx)[0]); + return _Pairing_merge_1(this.ptr, ensureAny(ctx)[0]); throw new Error(unsupported(ctx)); -};; - -Pairing.prototype['finalverify'] = Pairing.prototype.finalverify = /** @this{Object} */ -function(sig) -{ if (typeof sig === 'undefined' || sig === null) - return !!(_Pairing_finalverify_1(this.ptr, 0)); - else if (sig instanceof PT) - return !!(_Pairing_finalverify_1(this.ptr, sig.ptr)); - else - throw new Error(unsupported(sig)); -};; - -Pairing.prototype['raw_aggregate'] = Pairing.prototype.raw_aggregate = /** @this{Object} */ -function(q, p) -{ if (q instanceof P2_Affine && p instanceof P1_Affine) - _Pairing_raw_aggregate_2(this.ptr, q.ptr, p.ptr); - else - throw new Error(unsupported(q, p)); -};; - -Pairing.prototype['as_fp12'] = Pairing.prototype.as_fp12 = /** @this{Object} */ -function() -{ return wrapPointer(_Pairing_as_fp12_0(this.ptr), PT); };; - + }; + +Pairing.prototype['finalverify'] = Pairing.prototype.finalverify = + /** @this{Object} */ + function (sig) { + if (typeof sig === 'undefined' || sig === null) return !!_Pairing_finalverify_1(this.ptr, 0); + else if (sig instanceof PT) return !!_Pairing_finalverify_1(this.ptr, sig.ptr); + else throw new Error(unsupported(sig)); + }; + +Pairing.prototype['raw_aggregate'] = Pairing.prototype.raw_aggregate = + /** @this{Object} */ + function (q, p) { + if (q instanceof P2_Affine && p instanceof P1_Affine) + _Pairing_raw_aggregate_2(this.ptr, q.ptr, p.ptr); + else throw new Error(unsupported(q, p)); + }; + +Pairing.prototype['as_fp12'] = Pairing.prototype.as_fp12 = + /** @this{Object} */ + function () { + return wrapPointer(_Pairing_as_fp12_0(this.ptr), PT); + }; /** @this{Object} */ -function P1_Affine(input) -{ ensureCache.prepare(); - if (typeof input === 'undefined' || input === null) - this.ptr = _P1_Affine_0(); - else if (input instanceof Uint8Array) - this.ptr = _P1_Affine_2(ensureInt8(input), input.length); - else if (input instanceof P1) - this.ptr = _P1_Affine_1(input.ptr); - else - throw new Error(unsupported(input)); - getCache(P1_Affine)[this.ptr] = this; +function P1_Affine(input) { + ensureCache.prepare(); + if (typeof input === 'undefined' || input === null) this.ptr = _P1_Affine_0(); + else if (input instanceof Uint8Array) this.ptr = _P1_Affine_2(ensureInt8(input), input.length); + else if (input instanceof P1) this.ptr = _P1_Affine_1(input.ptr); + else throw new Error(unsupported(input)); + getCache(P1_Affine)[this.ptr] = this; } P1_Affine.prototype = Object.create(WrapperObject.prototype); P1_Affine.prototype.constructor = P1_Affine; P1_Affine.prototype.__class__ = P1_Affine; P1_Affine.__cache__ = {}; Module['P1_Affine'] = P1_Affine; -P1_Affine.prototype['__destroy__'] = P1_Affine.prototype.__destroy__ = /** @this{Object} */ -function() -{ _P1_Affine__destroy__0(this.ptr); this.ptr = 0; };; - -P1_Affine.prototype['dup'] = P1_Affine.prototype.dup = /** @this{Object} */ -function() -{ return wrapPointer(_P1_Affine_dup_0(this.ptr), P1_Affine); };; - -P1_Affine.prototype['to_jacobian'] = P1_Affine.prototype.to_jacobian = /** @this{Object} */ -function() -{ return wrapPointer(_P1_Affine_to_jacobian_0(this.ptr), P1); };; - -P1_Affine.prototype['serialize'] = P1_Affine.prototype.serialize = /** @this{Object} */ -function() -{ var out = _P1_Affine_serialize_0(this.ptr); - return new Uint8Array(HEAPU8.subarray(out, out + 96*1)); -};; - -P1_Affine.prototype['compress'] = P1_Affine.prototype.compress = /** @this{Object} */ -function() -{ var out = _P1_Affine_compress_0(this.ptr); - return new Uint8Array(HEAPU8.subarray(out, out + 48*1)); -};; - -P1_Affine.prototype['on_curve'] = P1_Affine.prototype.on_curve = /** @this{Object} */ -function() -{ return !!(_P1_Affine_on_curve_0(this.ptr)); };; - -P1_Affine.prototype['in_group'] = P1_Affine.prototype.in_group = /** @this{Object} */ -function() -{ return !!(_P1_Affine_in_group_0(this.ptr)); };; - -P1_Affine.prototype['is_inf'] = P1_Affine.prototype.is_inf = /** @this{Object} */ -function() -{ return !!(_P1_Affine_is_inf_0(this.ptr)); };; - -P1_Affine.prototype['is_equal'] = P1_Affine.prototype.is_equal = /** @this{Object} */ -function(p) -{ if (p instanceof P1_Affine) - return !!(_P1_Affine_is_equal_1(this.ptr, p.ptr)); +P1_Affine.prototype['__destroy__'] = P1_Affine.prototype.__destroy__ = + /** @this{Object} */ + function () { + _P1_Affine__destroy__0(this.ptr); + this.ptr = 0; + }; + +P1_Affine.prototype['dup'] = P1_Affine.prototype.dup = + /** @this{Object} */ + function () { + return wrapPointer(_P1_Affine_dup_0(this.ptr), P1_Affine); + }; + +P1_Affine.prototype['to_jacobian'] = P1_Affine.prototype.to_jacobian = + /** @this{Object} */ + function () { + return wrapPointer(_P1_Affine_to_jacobian_0(this.ptr), P1); + }; + +P1_Affine.prototype['serialize'] = P1_Affine.prototype.serialize = + /** @this{Object} */ + function () { + var out = _P1_Affine_serialize_0(this.ptr); + return new Uint8Array(HEAPU8.subarray(out, out + 96 * 1)); + }; + +P1_Affine.prototype['compress'] = P1_Affine.prototype.compress = + /** @this{Object} */ + function () { + var out = _P1_Affine_compress_0(this.ptr); + return new Uint8Array(HEAPU8.subarray(out, out + 48 * 1)); + }; + +P1_Affine.prototype['on_curve'] = P1_Affine.prototype.on_curve = + /** @this{Object} */ + function () { + return !!_P1_Affine_on_curve_0(this.ptr); + }; + +P1_Affine.prototype['in_group'] = P1_Affine.prototype.in_group = + /** @this{Object} */ + function () { + return !!_P1_Affine_in_group_0(this.ptr); + }; + +P1_Affine.prototype['is_inf'] = P1_Affine.prototype.is_inf = + /** @this{Object} */ + function () { + return !!_P1_Affine_is_inf_0(this.ptr); + }; + +P1_Affine.prototype['is_equal'] = P1_Affine.prototype.is_equal = + /** @this{Object} */ + function (p) { + if (p instanceof P1_Affine) return !!_P1_Affine_is_equal_1(this.ptr, p.ptr); throw new Error(unsupported(p)); -};; + }; -P1_Affine.prototype['core_verify'] = P1_Affine.prototype.core_verify = /** @this{Object} */ -function(pk, hash_or_encode, msg, DST, aug) -{ if (!(pk instanceof P2_Affine)) - throw new Error(unsupported(pk)); +P1_Affine.prototype['core_verify'] = P1_Affine.prototype.core_verify = + /** @this{Object} */ + function (pk, hash_or_encode, msg, DST, aug) { + if (!(pk instanceof P2_Affine)) throw new Error(unsupported(pk)); ensureCache.prepare(); const [_msg, msg_len] = ensureAny(msg); DST = ensureString(DST); const [_aug, aug_len] = ensureAny(aug); - return _P1_Affine_core_verify_7(this.ptr, pk.ptr, !!hash_or_encode, _msg, msg_len, DST, _aug, aug_len); -};; - -P1_Affine['generator'] = P1_Affine.generator = -function() -{ return wrapPointer(_P1_Affine_generator_0(), P1_Affine); };; + return _P1_Affine_core_verify_7( + this.ptr, + pk.ptr, + !!hash_or_encode, + _msg, + msg_len, + DST, + _aug, + aug_len, + ); + }; + +P1_Affine['generator'] = P1_Affine.generator = function () { + return wrapPointer(_P1_Affine_generator_0(), P1_Affine); +}; /** @this{Object} */ -function P1(input) -{ ensureCache.prepare(); - if (typeof input === 'undefined' || input === null) - this.ptr = _P1_0(); - else if (input instanceof Uint8Array) - this.ptr = _P1_2(ensureInt8(input), input.length); - else if (input instanceof P1_Affine) - this.ptr = _P1_affine_1(input.ptr); - else if (input instanceof SecretKey) - this.ptr = _P1_secretkey_1(input.ptr); - else - throw new Error(unsupported(input)); - getCache(P1)[this.ptr] = this; +function P1(input) { + ensureCache.prepare(); + if (typeof input === 'undefined' || input === null) this.ptr = _P1_0(); + else if (input instanceof Uint8Array) this.ptr = _P1_2(ensureInt8(input), input.length); + else if (input instanceof P1_Affine) this.ptr = _P1_affine_1(input.ptr); + else if (input instanceof SecretKey) this.ptr = _P1_secretkey_1(input.ptr); + else throw new Error(unsupported(input)); + getCache(P1)[this.ptr] = this; } P1.prototype = Object.create(WrapperObject.prototype); P1.prototype.constructor = P1; P1.prototype.__class__ = P1; P1.__cache__ = {}; Module['P1'] = P1; -P1.prototype['__destroy__'] = P1.prototype.__destroy__ = /** @this{Object} */ -function() -{ _P1__destroy__0(this.ptr); this.ptr = 0; };; - -P1.prototype['dup'] = P1.prototype.dup = /** @this{Object} */ -function() -{ return wrapPointer(_P1_dup_0(this.ptr), P1); };; - -P1.prototype['to_affine'] = P1.prototype.to_affine = /** @this{Object} */ -function() -{ return wrapPointer(_P1_to_affine_0(this.ptr), P1_Affine); };; - -P1.prototype['serialize'] = P1.prototype.serialize = /** @this{Object} */ -function() -{ var out = _P1_serialize_0(this.ptr); - return new Uint8Array(HEAPU8.subarray(out, out + 96*1)); -};; - -P1.prototype['compress'] = P1.prototype.compress = /** @this{Object} */ -function() -{ var out = _P1_compress_0(this.ptr); - return new Uint8Array(HEAPU8.subarray(out, out + 48*1)); -};; - -P1.prototype['on_curve'] = P1.prototype.on_curve = /** @this{Object} */ -function() -{ return !!(_P1_on_curve_0(this.ptr)); };; - -P1.prototype['in_group'] = P1.prototype.in_group = /** @this{Object} */ -function() -{ return !!(_P1_in_group_0(this.ptr)); };; - -P1.prototype['is_inf'] = P1.prototype.is_inf = /** @this{Object} */ -function() -{ return !!(_P1_is_inf_0(this.ptr)); };; - -P1.prototype['is_equal'] = P1.prototype.is_equal = /** @this{Object} */ -function(p) -{ if (p instanceof P1) - return !!(_P1_is_equal_1(this.ptr, p.ptr)); +P1.prototype['__destroy__'] = P1.prototype.__destroy__ = + /** @this{Object} */ + function () { + _P1__destroy__0(this.ptr); + this.ptr = 0; + }; + +P1.prototype['dup'] = P1.prototype.dup = + /** @this{Object} */ + function () { + return wrapPointer(_P1_dup_0(this.ptr), P1); + }; + +P1.prototype['to_affine'] = P1.prototype.to_affine = + /** @this{Object} */ + function () { + return wrapPointer(_P1_to_affine_0(this.ptr), P1_Affine); + }; + +P1.prototype['serialize'] = P1.prototype.serialize = + /** @this{Object} */ + function () { + var out = _P1_serialize_0(this.ptr); + return new Uint8Array(HEAPU8.subarray(out, out + 96 * 1)); + }; + +P1.prototype['compress'] = P1.prototype.compress = + /** @this{Object} */ + function () { + var out = _P1_compress_0(this.ptr); + return new Uint8Array(HEAPU8.subarray(out, out + 48 * 1)); + }; + +P1.prototype['on_curve'] = P1.prototype.on_curve = + /** @this{Object} */ + function () { + return !!_P1_on_curve_0(this.ptr); + }; + +P1.prototype['in_group'] = P1.prototype.in_group = + /** @this{Object} */ + function () { + return !!_P1_in_group_0(this.ptr); + }; + +P1.prototype['is_inf'] = P1.prototype.is_inf = + /** @this{Object} */ + function () { + return !!_P1_is_inf_0(this.ptr); + }; + +P1.prototype['is_equal'] = P1.prototype.is_equal = + /** @this{Object} */ + function (p) { + if (p instanceof P1) return !!_P1_is_equal_1(this.ptr, p.ptr); throw new Error(unsupported(p)); -};; - -P1.prototype['aggregate'] = P1.prototype.aggregate = /** @this{Object} */ -function(p) -{ if (p instanceof P1_Affine) - _P1_aggregate_1(this.ptr, p.ptr); - else - throw new Error(unsupported(p)); -};; - -P1.prototype['sign_with'] = P1.prototype.sign_with = /** @this{Object} */ -function(sk) -{ if (sk instanceof SecretKey) - _P1_sign_with_1(this.ptr, sk.ptr); - else - throw new Error(unsupported(sk)); + }; + +P1.prototype['aggregate'] = P1.prototype.aggregate = + /** @this{Object} */ + function (p) { + if (p instanceof P1_Affine) _P1_aggregate_1(this.ptr, p.ptr); + else throw new Error(unsupported(p)); + }; + +P1.prototype['sign_with'] = P1.prototype.sign_with = + /** @this{Object} */ + function (sk) { + if (sk instanceof SecretKey) _P1_sign_with_1(this.ptr, sk.ptr); + else throw new Error(unsupported(sk)); return this; -};; + }; -P1.prototype['hash_to'] = P1.prototype.hash_to = /** @this{Object} */ -function(msg, DST, aug) -{ ensureCache.prepare(); +P1.prototype['hash_to'] = P1.prototype.hash_to = + /** @this{Object} */ + function (msg, DST, aug) { + ensureCache.prepare(); const [_msg, msg_len] = ensureAny(msg); DST = ensureString(DST); const [_aug, aug_len] = ensureAny(aug); _P1_hash_to_5(this.ptr, _msg, msg_len, DST, _aug, aug_len); return this; -};; + }; -P1.prototype['encode_to'] = P1.prototype.encode_to = /** @this{Object} */ -function(msg, DST, aug) -{ ensureCache.prepare(); +P1.prototype['encode_to'] = P1.prototype.encode_to = + /** @this{Object} */ + function (msg, DST, aug) { + ensureCache.prepare(); const [_msg, msg_len] = ensureAny(msg); DST = ensureString(DST); const [_aug, aug_len] = ensureAny(aug); _P1_encode_to_5(this.ptr, _msg, msg_len, DST, _aug, aug_len); return this; -};; + }; -P1.prototype['mult'] = P1.prototype.mult = /** @this{Object} */ -function(scalar) -{ if (scalar instanceof Scalar) { - _P1_mult_1(this.ptr, scalar.ptr); +P1.prototype['mult'] = P1.prototype.mult = + /** @this{Object} */ + function (scalar) { + if (scalar instanceof Scalar) { + _P1_mult_1(this.ptr, scalar.ptr); } else if (typeof scalar !== 'string') { - ensureCache.prepare(); - const [_scalar, len] = ensureAny(scalar); - _P1_mult_2(this.ptr, _scalar, len*8); + ensureCache.prepare(); + const [_scalar, len] = ensureAny(scalar); + _P1_mult_2(this.ptr, _scalar, len * 8); } else { - throw new Error(unsupported(scalar)); + throw new Error(unsupported(scalar)); } return this; -};; - -P1.prototype['cneg'] = P1.prototype.cneg = /** @this{Object} */ -function(flag) -{ _P1_cneg_1(this.ptr, !!flag); return this; };; -P1.prototype['neg'] = P1.prototype.neg = /** @this{Object} */ -function() -{ _P1_cneg_1(this.ptr, true); return this; };; - -P1.prototype['add'] = P1.prototype.add = /** @this{Object} */ -function(p) -{ if (p instanceof P1) - _P1_add_1(this.ptr, p.ptr); - else if (p instanceof P1_Affine) - _P1_add_affine_1(this.ptr, p.ptr); - else - throw new Error(unsupported(p)); - return this; -};; + }; -P1.prototype['dbl'] = P1.prototype.dbl = /** @this{Object} */ -function() -{ _P1_dbl_0(this.ptr); return this; };; +P1.prototype['cneg'] = P1.prototype.cneg = + /** @this{Object} */ + function (flag) { + _P1_cneg_1(this.ptr, !!flag); + return this; + }; +P1.prototype['neg'] = P1.prototype.neg = + /** @this{Object} */ + function () { + _P1_cneg_1(this.ptr, true); + return this; + }; + +P1.prototype['add'] = P1.prototype.add = + /** @this{Object} */ + function (p) { + if (p instanceof P1) _P1_add_1(this.ptr, p.ptr); + else if (p instanceof P1_Affine) _P1_add_affine_1(this.ptr, p.ptr); + else throw new Error(unsupported(p)); + return this; + }; -Module['G1'] = P1['generator'] = P1.generator = -function() -{ return wrapPointer(_P1_generator_0(), P1); };; +P1.prototype['dbl'] = P1.prototype.dbl = + /** @this{Object} */ + function () { + _P1_dbl_0(this.ptr); + return this; + }; +Module['G1'] = + P1['generator'] = + P1.generator = + function () { + return wrapPointer(_P1_generator_0(), P1); + }; /** @this{Object} */ -function P2_Affine(input) -{ ensureCache.prepare(); - if (typeof input === 'undefined' || input === null) - this.ptr = _P2_Affine_0(); - else if (input instanceof Uint8Array) - this.ptr = _P2_Affine_2(ensureInt8(input), input.length); - else if (input instanceof P2) - this.ptr = _P2_Affine_1(input.ptr); - else - throw new Error(unsupported(input)); - getCache(P2_Affine)[this.ptr] = this; +function P2_Affine(input) { + ensureCache.prepare(); + if (typeof input === 'undefined' || input === null) this.ptr = _P2_Affine_0(); + else if (input instanceof Uint8Array) this.ptr = _P2_Affine_2(ensureInt8(input), input.length); + else if (input instanceof P2) this.ptr = _P2_Affine_1(input.ptr); + else throw new Error(unsupported(input)); + getCache(P2_Affine)[this.ptr] = this; } P2_Affine.prototype = Object.create(WrapperObject.prototype); P2_Affine.prototype.constructor = P2_Affine; P2_Affine.prototype.__class__ = P2_Affine; P2_Affine.__cache__ = {}; Module['P2_Affine'] = P2_Affine; -P2_Affine.prototype['__destroy__'] = P2_Affine.prototype.__destroy__ = /** @this{Object} */ -function() -{ _P2_Affine__destroy__0(this.ptr); this.ptr = 0; };; - -P2_Affine.prototype['dup'] = P2_Affine.prototype.dup = /** @this{Object} */ -function() -{ return wrapPointer(_P2_Affine_dup_0(this.ptr), P2_Affine); };; - -P2_Affine.prototype['to_jacobian'] = P2_Affine.prototype.to_jacobian = /** @this{Object} */ -function() -{ return wrapPointer(_P2_Affine_to_jacobian_0(this.ptr), P2); };; - -P2_Affine.prototype['serialize'] = P2_Affine.prototype.serialize = /** @this{Object} */ -function() -{ var out = _P2_Affine_serialize_0(this.ptr); - return new Uint8Array(HEAPU8.subarray(out, out + 96*2)); -};; - -P2_Affine.prototype['compress'] = P2_Affine.prototype.compress = /** @this{Object} */ -function() -{ var out = _P2_Affine_compress_0(this.ptr); - return new Uint8Array(HEAPU8.subarray(out, out + 48*2)); -};; - -P2_Affine.prototype['on_curve'] = P2_Affine.prototype.on_curve = /** @this{Object} */ -function() -{ return !!(_P2_Affine_on_curve_0(this.ptr)); };; - -P2_Affine.prototype['in_group'] = P2_Affine.prototype.in_group = /** @this{Object} */ -function() -{ return !!(_P2_Affine_in_group_0(this.ptr)); };; - -P2_Affine.prototype['is_inf'] = P2_Affine.prototype.is_inf = /** @this{Object} */ -function() -{ return !!(_P2_Affine_is_inf_0(this.ptr)); };; - -P2_Affine.prototype['is_equal'] = P2_Affine.prototype.is_equal = /** @this{Object} */ -function(p) -{ if (p instanceof P2_Affine) - return !!(_P2_Affine_is_equal_1(this.ptr, p.ptr)); +P2_Affine.prototype['__destroy__'] = P2_Affine.prototype.__destroy__ = + /** @this{Object} */ + function () { + _P2_Affine__destroy__0(this.ptr); + this.ptr = 0; + }; + +P2_Affine.prototype['dup'] = P2_Affine.prototype.dup = + /** @this{Object} */ + function () { + return wrapPointer(_P2_Affine_dup_0(this.ptr), P2_Affine); + }; + +P2_Affine.prototype['to_jacobian'] = P2_Affine.prototype.to_jacobian = + /** @this{Object} */ + function () { + return wrapPointer(_P2_Affine_to_jacobian_0(this.ptr), P2); + }; + +P2_Affine.prototype['serialize'] = P2_Affine.prototype.serialize = + /** @this{Object} */ + function () { + var out = _P2_Affine_serialize_0(this.ptr); + return new Uint8Array(HEAPU8.subarray(out, out + 96 * 2)); + }; + +P2_Affine.prototype['compress'] = P2_Affine.prototype.compress = + /** @this{Object} */ + function () { + var out = _P2_Affine_compress_0(this.ptr); + return new Uint8Array(HEAPU8.subarray(out, out + 48 * 2)); + }; + +P2_Affine.prototype['on_curve'] = P2_Affine.prototype.on_curve = + /** @this{Object} */ + function () { + return !!_P2_Affine_on_curve_0(this.ptr); + }; + +P2_Affine.prototype['in_group'] = P2_Affine.prototype.in_group = + /** @this{Object} */ + function () { + return !!_P2_Affine_in_group_0(this.ptr); + }; + +P2_Affine.prototype['is_inf'] = P2_Affine.prototype.is_inf = + /** @this{Object} */ + function () { + return !!_P2_Affine_is_inf_0(this.ptr); + }; + +P2_Affine.prototype['is_equal'] = P2_Affine.prototype.is_equal = + /** @this{Object} */ + function (p) { + if (p instanceof P2_Affine) return !!_P2_Affine_is_equal_1(this.ptr, p.ptr); throw new Error(unsupported(p)); -};; + }; -P2_Affine.prototype['core_verify'] = P2_Affine.prototype.core_verify = /** @this{Object} */ -function(pk, hash_or_encode, msg, DST, aug) -{ if (!(pk instanceof P1_Affine)) - throw new Error(unsupported(pk)); +P2_Affine.prototype['core_verify'] = P2_Affine.prototype.core_verify = + /** @this{Object} */ + function (pk, hash_or_encode, msg, DST, aug) { + if (!(pk instanceof P1_Affine)) throw new Error(unsupported(pk)); ensureCache.prepare(); const [_msg, msg_len] = ensureAny(msg); DST = ensureString(DST); const [_aug, aug_len] = ensureAny(aug); - return _P2_Affine_core_verify_7(this.ptr, pk.ptr, !!hash_or_encode, _msg, msg_len, DST, _aug, aug_len); -};; - -P2_Affine['generator'] = P2_Affine.generator = -function() -{ return wrapPointer(_P2_Affine_generator_0(), P2_Affine); };; + return _P2_Affine_core_verify_7( + this.ptr, + pk.ptr, + !!hash_or_encode, + _msg, + msg_len, + DST, + _aug, + aug_len, + ); + }; + +P2_Affine['generator'] = P2_Affine.generator = function () { + return wrapPointer(_P2_Affine_generator_0(), P2_Affine); +}; /** @this{Object} */ -function P2(input) -{ ensureCache.prepare(); - if (typeof input === 'undefined' || input === null) - this.ptr = _P2_0(); - else if (input instanceof Uint8Array) - this.ptr = _P2_2(ensureInt8(input), input.length); - else if (input instanceof P2_Affine) - this.ptr = _P2_affine_1(input.ptr); - else if (input instanceof SecretKey) - this.ptr = _P2_secretkey_1(input.ptr); - else - throw new Error(unsupported(input)); - getCache(P2)[this.ptr] = this; +function P2(input) { + ensureCache.prepare(); + if (typeof input === 'undefined' || input === null) this.ptr = _P2_0(); + else if (input instanceof Uint8Array) this.ptr = _P2_2(ensureInt8(input), input.length); + else if (input instanceof P2_Affine) this.ptr = _P2_affine_1(input.ptr); + else if (input instanceof SecretKey) this.ptr = _P2_secretkey_1(input.ptr); + else throw new Error(unsupported(input)); + getCache(P2)[this.ptr] = this; } P2.prototype = Object.create(WrapperObject.prototype); P2.prototype.constructor = P2; P2.prototype.__class__ = P2; P2.__cache__ = {}; Module['P2'] = P2; -P2.prototype['__destroy__'] = P2.prototype.__destroy__ = /** @this{Object} */ -function() -{ _P2__destroy__0(this.ptr); this.ptr = 0; };; - -P2.prototype['dup'] = P2.prototype.dup = /** @this{Object} */ -function() -{ return wrapPointer(_P2_dup_0(this.ptr), P2); };; - -P2.prototype['to_affine'] = P2.prototype.to_affine = /** @this{Object} */ -function() -{ return wrapPointer(_P2_to_affine_0(this.ptr), P2_Affine); };; - -P2.prototype['serialize'] = P2.prototype.serialize = /** @this{Object} */ -function() -{ var out = _P2_serialize_0(this.ptr); - return new Uint8Array(HEAPU8.subarray(out, out + 96*2)); -};; - -P2.prototype['compress'] = P2.prototype.compress = /** @this{Object} */ -function() -{ var out = _P2_compress_0(this.ptr); - return new Uint8Array(HEAPU8.subarray(out, out + 48*2)); -};; - -P2.prototype['on_curve'] = P2.prototype.on_curve = /** @this{Object} */ -function() -{ return !!(_P2_on_curve_0(this.ptr)); };; - -P2.prototype['in_group'] = P2.prototype.in_group = /** @this{Object} */ -function() -{ return !!(_P2_in_group_0(this.ptr)); };; - -P2.prototype['is_inf'] = P2.prototype.is_inf = /** @this{Object} */ -function() -{ return !!(_P2_is_inf_0(this.ptr)); };; - -P2.prototype['is_equal'] = P2.prototype.is_equal = /** @this{Object} */ -function(p) -{ if (p instanceof P2) - return !!(_P2_is_equal_1(this.ptr, p.ptr)); +P2.prototype['__destroy__'] = P2.prototype.__destroy__ = + /** @this{Object} */ + function () { + _P2__destroy__0(this.ptr); + this.ptr = 0; + }; + +P2.prototype['dup'] = P2.prototype.dup = + /** @this{Object} */ + function () { + return wrapPointer(_P2_dup_0(this.ptr), P2); + }; + +P2.prototype['to_affine'] = P2.prototype.to_affine = + /** @this{Object} */ + function () { + return wrapPointer(_P2_to_affine_0(this.ptr), P2_Affine); + }; + +P2.prototype['serialize'] = P2.prototype.serialize = + /** @this{Object} */ + function () { + var out = _P2_serialize_0(this.ptr); + return new Uint8Array(HEAPU8.subarray(out, out + 96 * 2)); + }; + +P2.prototype['compress'] = P2.prototype.compress = + /** @this{Object} */ + function () { + var out = _P2_compress_0(this.ptr); + return new Uint8Array(HEAPU8.subarray(out, out + 48 * 2)); + }; + +P2.prototype['on_curve'] = P2.prototype.on_curve = + /** @this{Object} */ + function () { + return !!_P2_on_curve_0(this.ptr); + }; + +P2.prototype['in_group'] = P2.prototype.in_group = + /** @this{Object} */ + function () { + return !!_P2_in_group_0(this.ptr); + }; + +P2.prototype['is_inf'] = P2.prototype.is_inf = + /** @this{Object} */ + function () { + return !!_P2_is_inf_0(this.ptr); + }; + +P2.prototype['is_equal'] = P2.prototype.is_equal = + /** @this{Object} */ + function (p) { + if (p instanceof P2) return !!_P2_is_equal_1(this.ptr, p.ptr); throw new Error(unsupported(p)); -};; - -P2.prototype['aggregate'] = P2.prototype.aggregate = /** @this{Object} */ -function(p) -{ if (p instanceof P2_Affine) - _P2_aggregate_1(this.ptr, p.ptr); - else - throw new Error(unsupported(p)); -};; - -P2.prototype['sign_with'] = P2.prototype.sign_with = /** @this{Object} */ -function(sk) -{ if (sk instanceof SecretKey) - _P2_sign_with_1(this.ptr, sk.ptr); - else - throw new Error(unsupported(sk)); + }; + +P2.prototype['aggregate'] = P2.prototype.aggregate = + /** @this{Object} */ + function (p) { + if (p instanceof P2_Affine) _P2_aggregate_1(this.ptr, p.ptr); + else throw new Error(unsupported(p)); + }; + +P2.prototype['sign_with'] = P2.prototype.sign_with = + /** @this{Object} */ + function (sk) { + if (sk instanceof SecretKey) _P2_sign_with_1(this.ptr, sk.ptr); + else throw new Error(unsupported(sk)); return this; -};; + }; -P2.prototype['hash_to'] = P2.prototype.hash_to = /** @this{Object} */ -function(msg, DST, aug) -{ ensureCache.prepare(); +P2.prototype['hash_to'] = P2.prototype.hash_to = + /** @this{Object} */ + function (msg, DST, aug) { + ensureCache.prepare(); const [_msg, msg_len] = ensureAny(msg); DST = ensureString(DST); const [_aug, aug_len] = ensureAny(aug); _P2_hash_to_5(this.ptr, _msg, msg_len, DST, _aug, aug_len); return this; -};; + }; -P2.prototype['encode_to'] = P2.prototype.encode_to = /** @this{Object} */ -function(msg, DST, aug) -{ ensureCache.prepare(); +P2.prototype['encode_to'] = P2.prototype.encode_to = + /** @this{Object} */ + function (msg, DST, aug) { + ensureCache.prepare(); const [_msg, msg_len] = ensureAny(msg); DST = ensureString(DST); const [_aug, aug_len] = ensureAny(aug); _P2_encode_to_5(this.ptr, _msg, msg_len, DST, _aug, aug_len); return this; -};; + }; -P2.prototype['mult'] = P2.prototype.mult = /** @this{Object} */ -function(scalar) -{ if (scalar instanceof Scalar) { - _P2_mult_1(this.ptr, scalar.ptr); +P2.prototype['mult'] = P2.prototype.mult = + /** @this{Object} */ + function (scalar) { + if (scalar instanceof Scalar) { + _P2_mult_1(this.ptr, scalar.ptr); } else if (typeof scalar !== 'string') { - ensureCache.prepare(); - const [_scalar, len] = ensureAny(scalar); - _P2_mult_2(this.ptr, _scalar, len*8); + ensureCache.prepare(); + const [_scalar, len] = ensureAny(scalar); + _P2_mult_2(this.ptr, _scalar, len * 8); } else { - throw new Error(unsupported(scalar)); + throw new Error(unsupported(scalar)); } return this; -};; - -P2.prototype['cneg'] = P2.prototype.cneg = /** @this{Object} */ -function(flag) -{ _P2_cneg_1(this.ptr, !!flag); return this; };; -P2.prototype['neg'] = P2.prototype.neg = /** @this{Object} */ -function() -{ _P2_cneg_1(this.ptr, true); return this; };; - -P2.prototype['add'] = P2.prototype.add = /** @this{Object} */ -function(p) -{ if (p instanceof P2) - _P2_add_1(this.ptr, p.ptr); - else if (p instanceof P2_Affine) - _P2_add_affine_1(this.ptr, p.ptr); - else - throw new Error(unsupported(p)); - return this; -};; + }; -P2.prototype['dbl'] = P2.prototype.dbl = /** @this{Object} */ -function() -{ _P2_dbl_0(this.ptr); return this; };; - -Module['G2'] = P2['generator'] = P2.generator = -function() -{ return wrapPointer(_P2_generator_0(), P2); };; +P2.prototype['cneg'] = P2.prototype.cneg = + /** @this{Object} */ + function (flag) { + _P2_cneg_1(this.ptr, !!flag); + return this; + }; +P2.prototype['neg'] = P2.prototype.neg = + /** @this{Object} */ + function () { + _P2_cneg_1(this.ptr, true); + return this; + }; + +P2.prototype['add'] = P2.prototype.add = + /** @this{Object} */ + function (p) { + if (p instanceof P2) _P2_add_1(this.ptr, p.ptr); + else if (p instanceof P2_Affine) _P2_add_affine_1(this.ptr, p.ptr); + else throw new Error(unsupported(p)); + return this; + }; +P2.prototype['dbl'] = P2.prototype.dbl = + /** @this{Object} */ + function () { + _P2_dbl_0(this.ptr); + return this; + }; + +Module['G2'] = + P2['generator'] = + P2.generator = + function () { + return wrapPointer(_P2_generator_0(), P2); + }; diff --git a/public/blst/null_bind.js b/public/blst/null_bind.js index 5fd04d0..8a21fdc 100644 --- a/public/blst/null_bind.js +++ b/public/blst/null_bind.js @@ -1,9 +1,7 @@ - // Bindings utilities /** @suppress {duplicate} (TODO: avoid emitting this multiple times, it is redundant) */ -function WrapperObject() { -} +function WrapperObject() {} WrapperObject.prototype = Object.create(WrapperObject.prototype); WrapperObject.prototype.constructor = WrapperObject; WrapperObject.prototype.__class__ = WrapperObject; @@ -25,7 +23,7 @@ function wrapPointer(ptr, __class__) { if (ret) return ret; ret = Object.create((__class__ || WrapperObject).prototype); ret.ptr = ptr; - return cache[ptr] = ret; + return (cache[ptr] = ret); } Module['wrapPointer'] = wrapPointer; @@ -68,9 +66,9 @@ Module['getClass'] = getClass; /** @suppress {duplicate} (TODO: avoid emitting this multiple times, it is redundant) */ var ensureCache = { - buffer: 0, // the main buffer of temporary storage - size: 0, // the size of buffer - pos: 0, // the next free offset in buffer + buffer: 0, // the main buffer of temporary storage + size: 0, // the size of buffer + pos: 0, // the next free offset in buffer temps: [], // extra allocations needed: 0, // the total size we need next time @@ -88,7 +86,8 @@ var ensureCache = { // clean up ensureCache.needed = 0; } - if (!ensureCache.buffer) { // happens first time, or when we need to grow + if (!ensureCache.buffer) { + // happens first time, or when we need to grow ensureCache.size += 128; // heuristic, avoid many small grow events ensureCache.buffer = Module['_webidl_malloc'](ensureCache.size); assert(ensureCache.buffer); @@ -186,7 +185,9 @@ function ensureFloat64(value) { // Interface: VoidPtr /** @suppress {undefinedVars, duplicate} @this{Object} */ -function VoidPtr() { throw "cannot construct a VoidPtr, no constructor in IDL" } +function VoidPtr() { + throw 'cannot construct a VoidPtr, no constructor in IDL'; +} VoidPtr.prototype = Object.create(WrapperObject.prototype); VoidPtr.prototype.constructor = VoidPtr; VoidPtr.prototype.__class__ = VoidPtr; @@ -194,7 +195,7 @@ VoidPtr.__cache__ = {}; Module['VoidPtr'] = VoidPtr; /** @suppress {undefinedVars, duplicate} @this{Object} */ -VoidPtr.prototype['__destroy__'] = VoidPtr.prototype.__destroy__ = function() { +VoidPtr.prototype['__destroy__'] = VoidPtr.prototype.__destroy__ = function () { var self = this.ptr; _emscripten_bind_VoidPtr___destroy___0(self); }; diff --git a/public/blst/runnable.js b/public/blst/runnable.js index 8825006..8556043 100644 --- a/public/blst/runnable.js +++ b/public/blst/runnable.js @@ -1,15 +1,15 @@ 'use strict'; -console.log("testing..."); +console.log('testing...'); -const blst = require("blst"); +const blst = require('blst'); -blst['onRuntimeInitialized'] = function() { - var msg = "assertion"; // this what we're signing - var DST = "MY-DST"; // domain separation tag +blst['onRuntimeInitialized'] = function () { + var msg = 'assertion'; // this what we're signing + var DST = 'MY-DST'; // domain separation tag var SK = new blst.SecretKey(); - SK.keygen("*".repeat(32)); + SK.keygen('*'.repeat(32)); //////////////////////////////////////////////////////////////////////// // generate public key and signature @@ -18,23 +18,21 @@ blst['onRuntimeInitialized'] = function() { var pk_for_wire = pk.serialize(); var sig = new blst.P2(); - var sig_for_wire = sig.hash_to(msg, DST, pk_for_wire) - .sign_with(SK) - .serialize(); + var sig_for_wire = sig.hash_to(msg, DST, pk_for_wire).sign_with(SK).serialize(); //////////////////////////////////////////////////////////////////////// // at this point 'pk_for_wire', 'sig_for_wire' and 'msg' are // "sent over network," so now on "receiver" side sig = new blst.P2_Affine(sig_for_wire); - pk = new blst.P1_Affine(pk_for_wire); + pk = new blst.P1_Affine(pk_for_wire); - if (!pk.in_group()) throw "disaster"; // vet the public key + if (!pk.in_group()) throw 'disaster'; // vet the public key var ctx = new blst.Pairing(true, DST); ctx.aggregate(pk, sig, msg, pk_for_wire); ctx.commit(); - if (!ctx.finalverify()) throw "disaster"; + if (!ctx.finalverify()) throw 'disaster'; - console.log("OK"); -} + console.log('OK'); +}; diff --git a/src/App.tsx b/src/App.tsx index 9fb43b1..780b1a5 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -4,8 +4,8 @@ import { Header } from '@/components/Header'; function App() { return (
-
- +
+
); } diff --git a/src/abis/keyBroadcastABI.ts b/src/abis/keyBroadcastABI.ts index 334a2a0..dce1250 100644 --- a/src/abis/keyBroadcastABI.ts +++ b/src/abis/keyBroadcastABI.ts @@ -1,20 +1,20 @@ const keyBroadcastABI = [ { inputs: [ - { internalType: "uint64", name: "eon", type: "uint64" }, - { internalType: "bytes", name: "key", type: "bytes" }, + { internalType: 'uint64', name: 'eon', type: 'uint64' }, + { internalType: 'bytes', name: 'key', type: 'bytes' }, ], - name: "broadcastEonKey", + name: 'broadcastEonKey', outputs: [], - stateMutability: "nonpayable", - type: "function", + stateMutability: 'nonpayable', + type: 'function', }, { - inputs: [{ internalType: "uint64", name: "eon", type: "uint64" }], - name: "getEonKey", - outputs: [{ internalType: "bytes", name: "", type: "bytes" }], - stateMutability: "view", - type: "function", + inputs: [{ internalType: 'uint64', name: 'eon', type: 'uint64' }], + name: 'getEonKey', + outputs: [{ internalType: 'bytes', name: '', type: 'bytes' }], + stateMutability: 'view', + type: 'function', }, ] as const; diff --git a/src/abis/keyperSetManagerABI.ts b/src/abis/keyperSetManagerABI.ts index 0e79999..69f5e5b 100644 --- a/src/abis/keyperSetManagerABI.ts +++ b/src/abis/keyperSetManagerABI.ts @@ -2,21 +2,21 @@ const keyperSetManagerABI = [ { inputs: [ { - internalType: "uint64", - name: "block", - type: "uint64", + internalType: 'uint64', + name: 'block', + type: 'uint64', }, ], - name: "getKeyperSetIndexByBlock", + name: 'getKeyperSetIndexByBlock', outputs: [ { - internalType: "uint64", - name: "", - type: "uint64", + internalType: 'uint64', + name: '', + type: 'uint64', }, ], - stateMutability: "view", - type: "function", + stateMutability: 'view', + type: 'function', }, ] as const; diff --git a/src/abis/sequencerABI.ts b/src/abis/sequencerABI.ts index 0113880..44fce41 100644 --- a/src/abis/sequencerABI.ts +++ b/src/abis/sequencerABI.ts @@ -2,25 +2,25 @@ const sequencerABI = [ { inputs: [ { - name: "eon", - type: "uint64", + name: 'eon', + type: 'uint64', }, { - name: "identityPrefix", - type: "bytes32", + name: 'identityPrefix', + type: 'bytes32', }, { - name: "encryptedTransaction", - type: "bytes", + name: 'encryptedTransaction', + type: 'bytes', }, { - name: "gasLimit", - type: "uint256", + name: 'gasLimit', + type: 'uint256', }, ], - name: "submitEncryptedTransaction", + name: 'submitEncryptedTransaction', outputs: [], - type: "function", + type: 'function', }, ] as const; diff --git a/src/abis/validatorRegistryABI.ts b/src/abis/validatorRegistryABI.ts index 25af41a..1da1ac0 100644 --- a/src/abis/validatorRegistryABI.ts +++ b/src/abis/validatorRegistryABI.ts @@ -1,85 +1,85 @@ const validatorRegistryABI = [ { - "anonymous": false, - "inputs": [ + anonymous: false, + inputs: [ { - "indexed": false, - "internalType": "bytes", - "name": "message", - "type": "bytes" + indexed: false, + internalType: 'bytes', + name: 'message', + type: 'bytes', }, { - "indexed": false, - "internalType": "bytes", - "name": "signature", - "type": "bytes" - } + indexed: false, + internalType: 'bytes', + name: 'signature', + type: 'bytes', + }, ], - "name": "Updated", - "type": "event" + name: 'Updated', + type: 'event', }, { - "inputs": [], - "name": "getNumUpdates", - "outputs": [ + inputs: [], + name: 'getNumUpdates', + outputs: [ { - "internalType": "uint256", - "name": "", - "type": "uint256" - } + internalType: 'uint256', + name: '', + type: 'uint256', + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: 'view', + type: 'function', }, { - "inputs": [ + inputs: [ { - "internalType": "uint256", - "name": "i", - "type": "uint256" - } + internalType: 'uint256', + name: 'i', + type: 'uint256', + }, ], - "name": "getUpdate", - "outputs": [ + name: 'getUpdate', + outputs: [ { - "components": [ + components: [ { - "internalType": "bytes", - "name": "message", - "type": "bytes" + internalType: 'bytes', + name: 'message', + type: 'bytes', }, { - "internalType": "bytes", - "name": "signature", - "type": "bytes" - } + internalType: 'bytes', + name: 'signature', + type: 'bytes', + }, ], - "internalType": "struct IValidatorRegistry.Update", - "name": "", - "type": "tuple" - } + internalType: 'struct IValidatorRegistry.Update', + name: '', + type: 'tuple', + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: 'view', + type: 'function', }, { - "inputs": [ + inputs: [ { - "internalType": "bytes", - "name": "message", - "type": "bytes" + internalType: 'bytes', + name: 'message', + type: 'bytes', }, { - "internalType": "bytes", - "name": "signature", - "type": "bytes" - } + internalType: 'bytes', + name: 'signature', + type: 'bytes', + }, ], - "name": "update", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } + name: 'update', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, ]; -export default validatorRegistryABI; \ No newline at end of file +export default validatorRegistryABI; diff --git a/src/components/Connect.tsx b/src/components/Connect.tsx index a2879b5..93e85d9 100644 --- a/src/components/Connect.tsx +++ b/src/components/Connect.tsx @@ -23,9 +23,13 @@ export const Connect = () => { return (
- {tip && {tip}} + {tip && ( + + {tip} + + )}
); -} +}; diff --git a/src/components/Header.tsx b/src/components/Header.tsx index 34803df..367cb96 100644 --- a/src/components/Header.tsx +++ b/src/components/Header.tsx @@ -11,4 +11,4 @@ export const Header = () => { ); -}; \ No newline at end of file +}; diff --git a/src/components/Select.tsx b/src/components/Select.tsx index 1f7b483..81d9199 100644 --- a/src/components/Select.tsx +++ b/src/components/Select.tsx @@ -16,13 +16,16 @@ interface SelectProps { } export const Select = ({ items, handleChange, selectedItem, title }: SelectProps) => { - const handleSelectionChange = useCallback((e: any) => { - if (!e.target.value) return; + const handleSelectionChange = useCallback( + (e: any) => { + if (!e.target.value) return; - const item = items.find((item) => item.key == e.target.value); + const item = items.find((item) => item.key == e.target.value); - handleChange?.(item); - }, [items, handleChange]); + handleChange?.(item); + }, + [items, handleChange], + ); const selectedKeys = useMemo(() => [selectedItem?.key], [selectedItem]); diff --git a/src/constants/chains.ts b/src/constants/chains.ts index 033b637..3797ad4 100644 --- a/src/constants/chains.ts +++ b/src/constants/chains.ts @@ -13,7 +13,7 @@ type Token = { type EnhancedChain = Chain & { img: string; - contracts: Pick & { + contracts: Pick & { sequencer: { address: Address; blockCreated?: number; @@ -34,7 +34,7 @@ type EnhancedChain = Chain & { gbcUrl: string; genesisTime: number; tokens: Token[]; - theGraphUrl: string, + theGraphUrl: string; }; type ChainMap = { @@ -42,51 +42,51 @@ type ChainMap = { }; export const nativeXDaiToken: Token = { - address: "0x0000000000000000000000000000000000000000", - name: "xDai", - symbol: "xDai", + address: '0x0000000000000000000000000000000000000000', + name: 'xDai', + symbol: 'xDai', decimals: 18, - img: "/xdai.png", + img: '/xdai.png', }; export const CHAINS: EnhancedChain[] = [ { ...gnosis, - img: "/gnosisGreen.svg", + img: '/gnosisGreen.svg', contracts: { ...gnosis.contracts, sequencer: { - address: "0xc5C4b277277A1A8401E0F039dfC49151bA64DC2E", + address: '0xc5C4b277277A1A8401E0F039dfC49151bA64DC2E', }, keyperSetManager: { - address: "0x7C2337f9bFce19d8970661DA50dE8DD7d3D34abb", + address: '0x7C2337f9bFce19d8970661DA50dE8DD7d3D34abb', }, keyBroadcast: { - address: "0x626dB87f9a9aC47070016A50e802dd5974341301", + address: '0x626dB87f9a9aC47070016A50e802dd5974341301', }, validatorRegistry: { - address: "0xefCC23E71f6bA9B22C4D28F7588141d44496A6D6", + address: '0xefCC23E71f6bA9B22C4D28F7588141d44496A6D6', }, }, blockExplorers: { default: { ...gnosis.blockExplorers.default, - url: "https://gnosis.blockscout.com/", + url: 'https://gnosis.blockscout.com/', }, }, - gbcUrl: "https://rpc-gbc.gnosischain.com", + gbcUrl: 'https://rpc-gbc.gnosischain.com', genesisTime: 1638993340, tokens: [ nativeXDaiToken, { - address: "0x9C58BAcC331c9aa871AFD802DB6379a98e80CEdb", - name: "GnosisBridged", - symbol: "GNO", + address: '0x9C58BAcC331c9aa871AFD802DB6379a98e80CEdb', + name: 'GnosisBridged', + symbol: 'GNO', decimals: 18, - img: "/gnosisGreen.svg", + img: '/gnosisGreen.svg', }, ], // theGraphUrl: `https://api.studio.thegraph.com/query/83608/m-shutter-validator-registry/мv0.0.2`, @@ -94,42 +94,42 @@ export const CHAINS: EnhancedChain[] = [ }, { ...gnosisChiado, - img: "/gnosisGreen.svg", + img: '/gnosisGreen.svg', contracts: { ...gnosisChiado.contracts, sequencer: { - address: "0xAC3209DCBced710Dc2612bD714b9EC947a6d1e8f", + address: '0xAC3209DCBced710Dc2612bD714b9EC947a6d1e8f', // blockCreated: , }, keyperSetManager: { - address: "0x6759Ab83de6f7d5bc4cf02d41BbB3Bd1500712E1", + address: '0x6759Ab83de6f7d5bc4cf02d41BbB3Bd1500712E1', }, keyBroadcast: { - address: "0xDd9Ea21f682a6484ac40D36c97Fa056Fbce9004f", + address: '0xDd9Ea21f682a6484ac40D36c97Fa056Fbce9004f', }, validatorRegistry: { - address: "0x06BfddbEbe11f7eE8a39Fc7DC24498dE85C8afca", + address: '0x06BfddbEbe11f7eE8a39Fc7DC24498dE85C8afca', }, }, blockExplorers: { default: { ...gnosisChiado.blockExplorers.default, - url: "https://gnosis-chiado.blockscout.com/", + url: 'https://gnosis-chiado.blockscout.com/', }, }, - gbcUrl: "https://rpc-gbc.chiadochain.net", + gbcUrl: 'https://rpc-gbc.chiadochain.net', genesisTime: 1665396300, tokens: [ nativeXDaiToken, { - address: "0x19C653Da7c37c66208fbfbE8908A5051B57b4C70", - name: "GnosisBridged", - symbol: "GNO", + address: '0x19C653Da7c37c66208fbfbE8908A5051B57b4C70', + name: 'GnosisBridged', + symbol: 'GNO', decimals: 18, - img: "/gnosisGreen.svg", + img: '/gnosisGreen.svg', }, ], // https://api.studio.thegraph.com/query/83608/shutter-validator-registry/v0.0.1 diff --git a/src/constants/config.ts b/src/constants/config.ts index 0c62f42..ba5da7b 100644 --- a/src/constants/config.ts +++ b/src/constants/config.ts @@ -1,4 +1,4 @@ export default { walletConnectProjectId: import.meta.env.VITE_WALLET_CONNECT_PROJECT_ID, theGraphApiKey: import.meta.env.VITE_THE_GRAPH_API_KEY, -} \ No newline at end of file +}; diff --git a/src/hooks/useCreateWalletClient.ts b/src/hooks/useCreateWalletClient.ts index cc2c867..0164b77 100644 --- a/src/hooks/useCreateWalletClient.ts +++ b/src/hooks/useCreateWalletClient.ts @@ -7,11 +7,13 @@ export const useCreateWalletClient = () => { return useMemo(() => { // @ts-expect-error - avoid error if window.ethereum is not defined - return window.ethereum ? createWalletClient({ - account: address, - chain, - // @ts-expect-error - we know that window.ethereum is defined - transport: custom(window.ethereum!), - }) : null; + return window.ethereum + ? createWalletClient({ + account: address, + chain, + // @ts-expect-error - we know that window.ethereum is defined + transport: custom(window.ethereum!), + }) + : null; }, [address, chain]); -} +}; diff --git a/src/hooks/useShutterEncryption.ts b/src/hooks/useShutterEncryption.ts index 370711b..898dbfa 100644 --- a/src/hooks/useShutterEncryption.ts +++ b/src/hooks/useShutterEncryption.ts @@ -1,18 +1,12 @@ -import { useCallback, useMemo } from "react"; -import { - useReadContract, - useChainId, - useBlockNumber, - useAccount, - useWriteContract, -} from "wagmi"; -import { type SignTransactionReturnType, type Hex, parseEther } from "viem"; - -import keyBroadcastABI from "@/abis/keyBroadcastABI"; -import keyperSetManagerABI from "@/abis/keyperSetManagerABI"; -import sequencerABI from "@/abis/sequencerABI"; -import { CHAINS_MAP } from "@/constants/chains"; -import { encryptData } from "@/services/shutter/encryptDataBlst"; +import { useCallback, useMemo } from 'react'; +import { useReadContract, useChainId, useBlockNumber, useAccount, useWriteContract } from 'wagmi'; +import { type SignTransactionReturnType, type Hex, parseEther } from 'viem'; + +import keyBroadcastABI from '@/abis/keyBroadcastABI'; +import keyperSetManagerABI from '@/abis/keyperSetManagerABI'; +import sequencerABI from '@/abis/sequencerABI'; +import { CHAINS_MAP } from '@/constants/chains'; +import { encryptData } from '@/services/shutter/encryptDataBlst'; const tKeyperSetChangeLookAhead = 4; @@ -20,9 +14,7 @@ function randomBytes(size: number) { const array = new Uint8Array(size); window.crypto.getRandomValues(array); - return Array.from(array, (byte) => byte.toString(16).padStart(2, "0")).join( - "" - ); + return Array.from(array, (byte) => byte.toString(16).padStart(2, '0')).join(''); } export const useShutterEncryption = () => { @@ -35,7 +27,7 @@ export const useShutterEncryption = () => { const { data: eon, ...eonRest } = useReadContract({ address: chain.contracts.keyperSetManager.address, abi: keyperSetManagerABI, - functionName: "getKeyperSetIndexByBlock", + functionName: 'getKeyperSetIndexByBlock', // @ts-expect-error - disabled query if address is not defined args: [Number(blockNumber) + tKeyperSetChangeLookAhead], query: { @@ -46,7 +38,7 @@ export const useShutterEncryption = () => { const { data: eonKeyBytes, ...eonKeyBytesRest } = useReadContract({ address: chain.contracts.keyBroadcast.address, abi: keyBroadcastABI, - functionName: "getEonKey", + functionName: 'getEonKey', // @ts-expect-error - disabled query if eon is not defined args: [eon], query: { @@ -59,9 +51,7 @@ export const useShutterEncryption = () => { if (!eonKeyBytes) return; const randomHex = randomBytes(12); - const identityPrefixHex = (address + - randomHex + - address?.slice(2)) as Hex; + const identityPrefixHex = (address + randomHex + address?.slice(2)) as Hex; const sigmaHex = (address + randomHex) as Hex; @@ -73,16 +63,11 @@ export const useShutterEncryption = () => { sigmaHex, }); - const encryptedTx = await encryptData( - signedTx, - identityPrefixHex, - eonKeyBytes, - sigmaHex - ); + const encryptedTx = await encryptData(signedTx, identityPrefixHex, eonKeyBytes, sigmaHex); return { identityPrefixHex: sigmaHex, encryptedTx }; }, - [eonKeyBytes, address] + [eonKeyBytes, address], ); const submitTransactionToSequencer = useCallback( @@ -94,13 +79,13 @@ export const useShutterEncryption = () => { return await writeContractAsync({ address: chain.contracts.sequencer.address, abi: sequencerABI, - functionName: "submitEncryptedTransaction", + functionName: 'submitEncryptedTransaction', args: [eon, identityPrefixHex, encryptedTx, 210000], - value: parseEther("210000", "gwei"), + value: parseEther('210000', 'gwei'), gasPrice: 210000n, }); }, - [chain, eon] + [chain, eon], ); return { diff --git a/src/hooks/useSignTransaction.ts b/src/hooks/useSignTransaction.ts index e17bb30..8df8ba9 100644 --- a/src/hooks/useSignTransaction.ts +++ b/src/hooks/useSignTransaction.ts @@ -1,11 +1,11 @@ - -import { useCallback } from "react"; -import { useCreateWalletClient } from "@/hooks/useCreateWalletClient"; +import { useCallback } from 'react'; +import { useCreateWalletClient } from '@/hooks/useCreateWalletClient'; export const useSignTransaction = () => { const client = useCreateWalletClient(); - return useCallback(async (request: any) => { + return useCallback( + async (request: any) => { if (!client) return; console.log({ request }); @@ -15,5 +15,7 @@ export const useSignTransaction = () => { console.log('serialized transaction', { serializedTransaction }); return serializedTransaction; - }, [client]); + }, + [client], + ); }; diff --git a/src/hooks/useTokenBalance.ts b/src/hooks/useTokenBalance.ts index 4a25b85..112dba2 100644 --- a/src/hooks/useTokenBalance.ts +++ b/src/hooks/useTokenBalance.ts @@ -59,12 +59,15 @@ export const useTokenBalance = ({ tokenAddress, enabled, chainId }: UseTokenBala }; return { - balance: balance && decimals && symbol ? { - value: balance, - formatted: formatUnits(balance, decimals), - decimals, - symbol, - } : null, + balance: + balance && decimals && symbol + ? { + value: balance, + formatted: formatUnits(balance, decimals), + decimals, + symbol, + } + : null, ...rest, - } + }; }; diff --git a/src/main.tsx b/src/main.tsx index c569a9f..f60fa4f 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -1,12 +1,12 @@ -import React from 'react' -import ReactDOM from 'react-dom/client' -import { NextUIProvider } from '@nextui-org/react' -import { Toaster } from 'sonner' +import React from 'react'; +import ReactDOM from 'react-dom/client'; +import { NextUIProvider } from '@nextui-org/react'; +import { Toaster } from 'sonner'; import { Web3ModalProvider } from '@/providers/Web3ModalProvider'; import { GraphQLProvider } from '@/providers/GraphQLProvider'; -import App from './App.tsx' -import './index.css' +import App from './App.tsx'; +import './index.css'; ReactDOM.createRoot(document.getElementById('root')!).render( @@ -20,4 +20,4 @@ ReactDOM.createRoot(document.getElementById('root')!).render( , -) +); diff --git a/src/pages/MainPage/AdvancedForm.tsx b/src/pages/MainPage/AdvancedForm.tsx index a1be84e..db9f394 100644 --- a/src/pages/MainPage/AdvancedForm.tsx +++ b/src/pages/MainPage/AdvancedForm.tsx @@ -6,10 +6,10 @@ import { Tab, Tabs } from '@nextui-org/react'; import { SubmitButton } from './SubmitButton'; interface AdvancedFormProps { - submit: (tx: UsePrepareTransactionRequestReturnType | `0x${string}`) => void, - status: number, - setStatus: (status: 0 | 1 | 2 | 3 | 4 | 5 | 6) => void, - isSubmitDisabled: boolean, + submit: (tx: UsePrepareTransactionRequestReturnType | `0x${string}`) => void; + status: number; + setStatus: (status: 0 | 1 | 2 | 3 | 4 | 5 | 6) => void; + isSubmitDisabled: boolean; } const rawTx = `{ @@ -25,7 +25,8 @@ const rawTx = `{ "value": 0 }`; -const signedTx = "0x02f8b18227d80184b2d05e0084b2d05e0882a7729419c653da7c37c66208fbfbe8908a5051b57b4c7080b844a9059cbb0000000000000000000000009cbaee4fd3c9a89f327edb1b161eba7bd5498d0f00000000000000000000000000000000000000000000000006f05b59d3b20000c080a0d424743c77d03d7859e4da871cbd82fca4424e47ba823304faaf5dec08e58393a0666944aee77733691cf514ba2607ed6625409219f89cd2ef36583a0a422ca684"; +const signedTx = + '0x02f8b18227d80184b2d05e0084b2d05e0882a7729419c653da7c37c66208fbfbe8908a5051b57b4c7080b844a9059cbb0000000000000000000000009cbaee4fd3c9a89f327edb1b161eba7bd5498d0f00000000000000000000000000000000000000000000000006f05b59d3b20000c080a0d424743c77d03d7859e4da871cbd82fca4424e47ba823304faaf5dec08e58393a0666944aee77733691cf514ba2607ed6625409219f89cd2ef36583a0a422ca684'; const encryptedTx = `{ "encryptedTx": "0x03b1b5c4cbdee257742501327c200c1911c4c22b90848791b4f6c752dc34342b1d73b05dff1c4752f91cf00428bfd80fda0fe3c6b8889c91110b2b35939ba06619c5184eda15ce4483837ac31e2795640912a2998fbe4ad2cfebdc9152b36432de6224c4185cdb41089de3c68af085605240ad506f6e0c8f4ddd4f7c56845deb8daa33de15490bddcfd3317ec4e48b3bbdb0b7eedfc20ac26feacdd8d64496ffeff5f2a856c94b629b694c1558d7d6e1a729bfb0dae507eae07cda595a7365ef73bc5fed5cd0c38ef89e8209653a1844faacf81f07bda33d0b72d1929bbca6b94bd72a38bf4da3090d132ec863684fb390d19e95172e6fd3ffe315b6d696320d21ac65bde6297ac4759a630a984a9db90285d2e0b53403a83c494e3a2bee6353ba5180ff1e7ce3d72a331ae4a98c5d3084d46d9200c595a9dba8c13233cf6908e6", @@ -33,7 +34,7 @@ const encryptedTx = `{ }`; const formatTransactionData = (data: string, transactionType: string) => { - if (transactionType !== "raw" && transactionType !== "encrypted") return data as `0x${string}`; + if (transactionType !== 'raw' && transactionType !== 'encrypted') return data as `0x${string}`; try { const parsedData = JSON.parse(data); return parsedData; @@ -43,29 +44,41 @@ const formatTransactionData = (data: string, transactionType: string) => { }; const isValidTxData = (txData: any, transactionType: string) => { - if (transactionType === "raw") { - return !!txData && + if (transactionType === 'raw') { + return ( + !!txData && typeof txData.chainId === 'number' && typeof txData.to === 'string' && typeof txData.data === 'string' && typeof txData.gas === 'number' && - typeof txData.maxFeePerGas === 'number'; - } - else if (transactionType === "encrypted") { - return !!txData && - typeof txData.encryptedTx === "string" && txData.encryptedTx.startsWith('0x') && - typeof txData.identityPrefixHex === "string" && txData.identityPrefixHex.startsWith('0x'); - } - else { + typeof txData.maxFeePerGas === 'number' + ); + } else if (transactionType === 'encrypted') { + return ( + !!txData && + typeof txData.encryptedTx === 'string' && + txData.encryptedTx.startsWith('0x') && + typeof txData.identityPrefixHex === 'string' && + txData.identityPrefixHex.startsWith('0x') + ); + } else { return typeof txData === 'string' && txData.startsWith('0x'); } }; -export const AdvancedForm = ({ submit, status, setStatus, isSubmitDisabled }: AdvancedFormProps) => { +export const AdvancedForm = ({ + submit, + status, + setStatus, + isSubmitDisabled, +}: AdvancedFormProps) => { const [transactionData, setTransactionData] = useState(''); const [transactionType, setTransactionType] = useState<'raw' | 'signed' | 'encrypted'>('raw'); - const formattedTxData = useMemo(() => formatTransactionData(transactionData, transactionType), [transactionData, transactionType]); + const formattedTxData = useMemo( + () => formatTransactionData(transactionData, transactionType), + [transactionData, transactionType], + ); const preparedTransactionRequest = usePrepareTransactionRequest({ chainId: formattedTxData?.chainId, @@ -104,7 +117,14 @@ export const AdvancedForm = ({ submit, status, setStatus, isSubmitDisabled }: Ad

Paste your transaction in here:

- + @@ -117,7 +137,17 @@ export const AdvancedForm = ({ submit, status, setStatus, isSubmitDisabled }: Ad />
setTransactionData(transactionType === "raw" ? rawTx : transactionType === "signed" ? signedTx : encryptedTx), [transactionType])} + onClick={useCallback( + () => + setTransactionData( + transactionType === 'raw' + ? rawTx + : transactionType === 'signed' + ? signedTx + : encryptedTx, + ), + [transactionType], + )} > Prefill Example
diff --git a/src/pages/MainPage/FAQAccordion.tsx b/src/pages/MainPage/FAQAccordion.tsx index 4fe8865..ada05eb 100644 --- a/src/pages/MainPage/FAQAccordion.tsx +++ b/src/pages/MainPage/FAQAccordion.tsx @@ -1,18 +1,22 @@ import { Accordion, AccordionItem, Image } from '@nextui-org/react'; const itemClasses = { - trigger: "bg-secondary hover:border-secondary", - title: "text-black", + trigger: 'bg-secondary hover:border-secondary', + title: 'text-black', }; export const FAQAccordion = () => { return (
-
+

FAQ

- + {`The Opt-in Shutterized Gnosis Chain is a proposal designed to enhance transaction privacy and security on the Gnosis Chain. It allows users to encrypt transactions to prevent frontrunning and censorship. Transactions are decrypted and executed @@ -37,21 +41,27 @@ export const FAQAccordion = () => {
    -
  • Users: Users submit encrypted transactions to the network. They encrypt these transactions using a - public key obtained from the Key Broadcast Contract. +
  • + Users: Users submit encrypted transactions to the network. They encrypt these + transactions using a public key obtained from the Key Broadcast Contract.
  • -
  • Key Broadcast Contract: This contract distributes the encryption keys (public keys) to users and stores - them for the Keypers to access as needed. +
  • + Key Broadcast Contract: This contract distributes the encryption keys (public + keys) to users and stores them for the Keypers to access as needed.
  • -
  • Keypers: Keypers are responsible for securely managing decryption keys. They generate decryption keys - and provide these to the Sequencer Contract. +
  • + Keypers: Keypers are responsible for securely managing decryption keys. They + generate decryption keys and provide these to the Sequencer Contract.
  • -
  • Sequencer Contract: This contract manages the queue of encrypted transactions submitted by users. It - interacts with Keypers to obtain decryption keys and ensures that transactions are correctly ordered and - ready for decryption. +
  • + Sequencer Contract: This contract manages the queue of encrypted transactions + submitted by users. It interacts with Keypers to obtain decryption keys and ensures + that transactions are correctly ordered and ready for decryption.
  • -
  • Proposer: The Proposer (a type of validator) retrieves decrypted transactions from the Sequencer - Contract, then includes them in a new block which is added to the blockchain. +
  • + Proposer: The Proposer (a type of validator) retrieves decrypted transactions + from the Sequencer Contract, then includes them in a new block which is added to the + blockchain.
@@ -82,13 +92,21 @@ export const FAQAccordion = () => { if some keypers are temporarily unavailable.`} - + {`If a transaction cannot be decrypted (e.g., due to corrupted data or a mismatch in the encryption), it won't be included in the encrypted section of the block. However, it may still be included later in the plaintext section if it's valid, although this could potentially expose it to frontrunning.`} - + {`Yes, using the encrypted transaction service is entirely opt-in. You can choose to send transactions in the usual plaintext format if you prefer not to use encryption.`} @@ -99,7 +117,11 @@ export const FAQAccordion = () => { offline could potentially compromise transaction security.`} - + {`To use encrypted transactions, you'll need to use this app and a compatible wallet that supports signing transaction without broadcasting it (such as Brave Wallet).`} diff --git a/src/pages/MainPage/FormsWrapper.tsx b/src/pages/MainPage/FormsWrapper.tsx index 93f3c9a..7da124e 100644 --- a/src/pages/MainPage/FormsWrapper.tsx +++ b/src/pages/MainPage/FormsWrapper.tsx @@ -1,13 +1,13 @@ -import { Tabs, Tab } from "@nextui-org/react"; -import { useState, useCallback, useEffect } from "react"; -import { type Hash } from "viem"; +import { Tabs, Tab } from '@nextui-org/react'; +import { useState, useCallback, useEffect } from 'react'; +import { type Hash } from 'viem'; -import { useSignTransaction } from "@/hooks/useSignTransaction"; -import { useShutterEncryption } from "@/hooks/useShutterEncryption"; +import { useSignTransaction } from '@/hooks/useSignTransaction'; +import { useShutterEncryption } from '@/hooks/useShutterEncryption'; -import { TransferForm } from "./TransferForm"; -import { AdvancedForm } from "./AdvancedForm"; -import { ProgressInfoCard } from "./ProgressInfoCard"; +import { TransferForm } from './TransferForm'; +import { AdvancedForm } from './AdvancedForm'; +import { ProgressInfoCard } from './ProgressInfoCard'; // status = 0 -> sign // status = 1 -> signing @@ -35,7 +35,7 @@ export const FormsWrapper = () => { setStatus(0); return; } - + if (!tx) return; setCurrentTx(tx); @@ -48,7 +48,7 @@ export const FormsWrapper = () => { setStatus(5); // Start the submission process } }, - [status] + [status], ); useEffect(() => { @@ -106,7 +106,7 @@ export const FormsWrapper = () => { return (
- + { return (
- - + + - +
); }; diff --git a/src/pages/MainPage/ProgressInfoCard.tsx b/src/pages/MainPage/ProgressInfoCard.tsx index 5ace1aa..a47b662 100644 --- a/src/pages/MainPage/ProgressInfoCard.tsx +++ b/src/pages/MainPage/ProgressInfoCard.tsx @@ -26,29 +26,57 @@ export const ProgressInfoCard = ({ status, submittedTxHash = '' }: ProgressInfoC {status === 0 ? 'Ready to sign transaction.' : status > 0 && 'Transaction prepared.'}
- {status === 1 ? ( Signing transaction...) : status > 1 && 'Transaction signed.'} + {status === 1 ? ( + + Signing transaction... + + ) : ( + status > 1 && 'Transaction signed.' + )}
- {status === 2 ? 'Ready to encrypt transaction.' : status === 3 ? ( Encrypting transaction...) : status > 3 && 'Transaction encrypted.'} + {status === 2 ? ( + 'Ready to encrypt transaction.' + ) : status === 3 ? ( + + Encrypting transaction... + + ) : ( + status > 3 && 'Transaction encrypted.' + )}
- {status === 4 ? 'Ready to submit transaction.' : status === 5 ? ( Submitting transaction...) : status > 5 && 'Transaction submitted.'} + {status === 4 ? ( + 'Ready to submit transaction.' + ) : status === 5 ? ( + + Submitting transaction... + + ) : ( + status > 5 && 'Transaction submitted.' + )}
- {status >= 6 && ()} + {status >= 6 && } {status >= 6 && (

- Submitted Tx: {truncateNumberSymbols(submittedTxHash, 4)} + Submitted Tx:{' '} + + {truncateNumberSymbols(submittedTxHash, 4)} +

)} {status >= 7 && (

- Original Tx: 0x1234...5678 + Original Tx:{' '} + + 0x1234...5678 +

)} ); -}; \ No newline at end of file +}; diff --git a/src/pages/MainPage/SubmitButton.tsx b/src/pages/MainPage/SubmitButton.tsx index d62f7d5..3a0389a 100644 --- a/src/pages/MainPage/SubmitButton.tsx +++ b/src/pages/MainPage/SubmitButton.tsx @@ -1,11 +1,11 @@ import { Button } from '@nextui-org/react'; -import { Tooltip } from "@nextui-org/tooltip"; +import { Tooltip } from '@nextui-org/tooltip'; interface SubmitButtonProps { - submit: () => void, - status: number, - transactionCount: number | undefined, - isSubmitDisabled: boolean, + submit: () => void; + status: number; + transactionCount: number | undefined; + isSubmitDisabled: boolean; } const getStatusText = (status: number) => { @@ -27,19 +27,31 @@ const getStatusText = (status: number) => { } }; -export const SubmitButton = ({ submit, status, transactionCount, isSubmitDisabled }: SubmitButtonProps) => { +export const SubmitButton = ({ + submit, + status, + transactionCount, + isSubmitDisabled, +}: SubmitButtonProps) => { return (
- {(status === 0 || status === 1) && transactionCount !== undefined ? - -
Required nonce: -

- {transactionCount + 1} -

+ {(status === 0 || status === 1) && transactionCount !== undefined ? ( + +
+ Required nonce: +

{transactionCount + 1}

- : ""} -
diff --git a/src/pages/MainPage/TransferForm.tsx b/src/pages/MainPage/TransferForm.tsx index 8a6c0f5..1cbca3c 100644 --- a/src/pages/MainPage/TransferForm.tsx +++ b/src/pages/MainPage/TransferForm.tsx @@ -1,6 +1,11 @@ import { useEffect, useState, useMemo, useCallback } from 'react'; import { Input } from '@nextui-org/react'; -import { useChainId, usePrepareTransactionRequest, useSwitchChain, type UsePrepareTransactionRequestReturnType } from 'wagmi'; +import { + useChainId, + usePrepareTransactionRequest, + useSwitchChain, + type UsePrepareTransactionRequestReturnType, +} from 'wagmi'; import { type Hex, parseEther, isAddress } from 'viem'; import { CHAINS, nativeXDaiToken } from '@/constants/chains'; @@ -9,24 +14,23 @@ import { Select } from '@/components/Select'; import { useTokenBalance } from '@/hooks/useTokenBalance'; import { encodeDataForTransfer } from '@/utils/eth'; - import { SubmitButton } from './SubmitButton'; const mappedChains = mapChainsToOptions(CHAINS); const defaultToken = mapTokenToOption(CHAINS[0].tokens[0]); interface TransferFormProps { - submit: (tx: UsePrepareTransactionRequestReturnType, step: number) => void, - status: number, - isSubmitDisabled: boolean, + submit: (tx: UsePrepareTransactionRequestReturnType, step: number) => void; + status: number; + isSubmitDisabled: boolean; } export const TransferForm = ({ submit, status, isSubmitDisabled }: TransferFormProps) => { const [token, setToken] = useState(defaultToken); - const [amount, setAmount] = useState("0"); + const [amount, setAmount] = useState('0'); const [to, setTo] = useState(''); const chainId = useChainId(); - const [chain, setChain] = useState(mappedChains.find((c: { id: number; }) => c.id === chainId)); + const [chain, setChain] = useState(mappedChains.find((c: { id: number }) => c.id === chainId)); const { switchChain } = useSwitchChain(); const { balance } = useTokenBalance({ @@ -43,7 +47,7 @@ export const TransferForm = ({ submit, status, isSubmitDisabled }: TransferFormP }, [chain]); useEffect(() => { - const selectedChain = mappedChains.find((c: { id: number; }) => c.id === chainId); + const selectedChain = mappedChains.find((c: { id: number }) => c.id === chainId); if (selectedChain) { setChain(selectedChain); } @@ -63,7 +67,10 @@ export const TransferForm = ({ submit, status, isSubmitDisabled }: TransferFormP data, chainId: chain.id, to: token?.address === nativeXDaiToken.address ? to : token?.address, - value: token?.address === nativeXDaiToken.address ? parseEther(amount.toString()) : 0 as unknown as bigint, + value: + token?.address === nativeXDaiToken.address + ? parseEther(amount.toString()) + : (0 as unknown as bigint), }); const onSubmit = useCallback(() => { @@ -73,22 +80,11 @@ export const TransferForm = ({ submit, status, isSubmitDisabled }: TransferFormP return (
-
-
@@ -103,7 +99,7 @@ export const TransferForm = ({ submit, status, isSubmitDisabled }: TransferFormP
setAmount(balance?.formatted || "0"), [balance])} + onClick={useCallback(() => setAmount(balance?.formatted || '0'), [balance])} > Balance: {balance ? balance.formatted : '0'}
diff --git a/src/pages/MainPage/index.ts b/src/pages/MainPage/index.ts index 6200f6c..e71de31 100644 --- a/src/pages/MainPage/index.ts +++ b/src/pages/MainPage/index.ts @@ -1 +1 @@ -export * from './MainPage'; \ No newline at end of file +export * from './MainPage'; diff --git a/src/providers/GraphQLProvider.tsx b/src/providers/GraphQLProvider.tsx index ad042f8..159f51b 100644 --- a/src/providers/GraphQLProvider.tsx +++ b/src/providers/GraphQLProvider.tsx @@ -21,9 +21,5 @@ export const GraphQLProvider = ({ children }: { children: any }) => { }); }, [chainId]); - return ( - - {children} - - ) -} + return {children}; +}; diff --git a/src/providers/Web3ModalProvider.tsx b/src/providers/Web3ModalProvider.tsx index 0cf9a3c..9abf594 100644 --- a/src/providers/Web3ModalProvider.tsx +++ b/src/providers/Web3ModalProvider.tsx @@ -27,11 +27,11 @@ export const modal: Web3Modal = createWeb3Modal({ featuredWalletIds: [BRAWE_WALLET_ID], includeWalletIds: [BRAWE_WALLET_ID], themeVariables: { - '--w3m-accent': '#f37e4b' - } + '--w3m-accent': '#f37e4b', + }, }); -export function Web3ModalProvider({ children }: { children: React.ReactNode; }) { +export function Web3ModalProvider({ children }: { children: React.ReactNode }) { return ( {children} diff --git a/src/services/shutter/blst.hpp.ts b/src/services/shutter/blst.hpp.ts index f44de8b..93d0f6e 100644 --- a/src/services/shutter/blst.hpp.ts +++ b/src/services/shutter/blst.hpp.ts @@ -42,7 +42,7 @@ export interface ScalarConstructor { } export interface Scalar { - hash_to (msg: binary_string, DST?: string): this; + hash_to(msg: binary_string, DST?: string): this; dup(): Scalar; from_bendian(be: bytes): this; from_lendian(le: bytes): this; @@ -76,7 +76,7 @@ export interface P1_Affine { hash_or_encode: boolean, msg: binary_string, DST?: string, - aug?: bytes + aug?: bytes, ): BLST_ERROR; } @@ -131,7 +131,7 @@ export interface P2_Affine { hash_or_encode: boolean, msg: binary_string, DST?: string, - aug?: bytes + aug?: bytes, ): BLST_ERROR; } @@ -192,31 +192,21 @@ export interface PairingConstructor { } export interface Pairing { - aggregate( - pk: P1_Affine, - sig: P2_Affine, - msg: binary_string, - aug?: bytes - ): BLST_ERROR; - aggregate( - pk: P2_Affine, - sig: P1_Affine, - msg: binary_string, - aug?: bytes - ): BLST_ERROR; + aggregate(pk: P1_Affine, sig: P2_Affine, msg: binary_string, aug?: bytes): BLST_ERROR; + aggregate(pk: P2_Affine, sig: P1_Affine, msg: binary_string, aug?: bytes): BLST_ERROR; mul_n_aggregate( pk: P1_Affine, sig: P2_Affine, scalar: scalar, msg: binary_string, - aug?: bytes + aug?: bytes, ): BLST_ERROR; mul_n_aggregate( pk: P2_Affine, sig: P1_Affine, scalar: scalar, msg: binary_string, - aug?: bytes + aug?: bytes, ): BLST_ERROR; commit(): void; merge(ctx: Pairing): BLST_ERROR; diff --git a/src/services/shutter/encryptDataBlst.ts b/src/services/shutter/encryptDataBlst.ts index d541429..f8a0853 100644 --- a/src/services/shutter/encryptDataBlst.ts +++ b/src/services/shutter/encryptDataBlst.ts @@ -1,14 +1,8 @@ -import { - hexToBytes, - keccak256, - bytesToBigInt, - bytesToHex, - numberToBytes, -} from "viem"; -import pkg from "lodash"; +import { hexToBytes, keccak256, bytesToBigInt, bytesToHex, numberToBytes } from 'viem'; +import pkg from 'lodash'; const { zip } = pkg; -import { Blst, P1, P2, PT } from "./blst.hpp.ts"; +import { Blst, P1, P2, PT } from './blst.hpp.ts'; declare global { interface Window { @@ -17,9 +11,8 @@ declare global { } const blsSubgroupOrderBytes = [ - 0x73, 0xed, 0xa7, 0x53, 0x29, 0x9d, 0x7d, 0x48, 0x33, 0x39, 0xd8, 0x08, 0x09, - 0xa1, 0xd8, 0x05, 0x53, 0xbd, 0xa4, 0x02, 0xff, 0xfe, 0x5b, 0xfe, 0xff, 0xff, - 0xff, 0xff, 0x00, 0x00, 0x00, 0x01, + 0x73, 0xed, 0xa7, 0x53, 0x29, 0x9d, 0x7d, 0x48, 0x33, 0x39, 0xd8, 0x08, 0x09, 0xa1, 0xd8, 0x05, + 0x53, 0xbd, 0xa4, 0x02, 0xff, 0xfe, 0x5b, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x01, ]; const blsSubgroupOrder = bytesToBigInt(Uint8Array.from(blsSubgroupOrderBytes)); @@ -27,7 +20,7 @@ export async function encryptData( msgHex: `0x${string}`, identityPreimageHex: `0x${string}`, eonKeyHex: `0x${string}`, - sigmaHex: `0x${string}` + sigmaHex: `0x${string}`, ) { const identity = await computeIdentityP1(identityPreimageHex); const eonKey = await computeEonKeyP2(eonKeyHex); @@ -37,15 +30,13 @@ export async function encryptData( } export async function computeIdentityP1(preimage: `0x${string}`): Promise { - const preimageBytes = hexToBytes( - ("0x1" + preimage.slice(2)) as `0x${string}` - ); + const preimageBytes = hexToBytes(('0x1' + preimage.slice(2)) as `0x${string}`); const blst = window.blst; const identity = new blst.P1().hash_to( preimageBytes, - "SHUTTER_V01_BLS12381G1_XMD:SHA-256_SSWU_RO_", - null + 'SHUTTER_V01_BLS12381G1_XMD:SHA-256_SSWU_RO_', + null, ); return identity; @@ -57,18 +48,13 @@ async function computeEonKeyP2(eonKeyHex: `0x${string}`): Promise { return eonKey; } -async function encrypt( - msgHex: `0x${string}`, - identity: P1, - eonKey: P2, - sigmaHex: `0x${string}` -) { +async function encrypt(msgHex: `0x${string}`, identity: P1, eonKey: P2, sigmaHex: `0x${string}`) { const r = computeR(sigmaHex.slice(2), msgHex.slice(2)); const c1 = computeC1(r); const c2 = await computeC2(sigmaHex, r, identity, eonKey); const c3 = computeC3( padAndSplit(hexToBytes(msgHex as `0x${string}`)), - hexToBytes(sigmaHex as `0x${string}`) + hexToBytes(sigmaHex as `0x${string}`), ); return { @@ -111,12 +97,7 @@ function computeC1(r: bigint) { return c1; } -async function computeC2( - sigmaHex: string, - r: bigint, - identity: P1, - eonKey: P2 -): Promise { +async function computeC2(sigmaHex: string, r: bigint, identity: P1, eonKey: P2): Promise { const blst = window.blst; const p: PT = new blst.PT(identity, eonKey); @@ -126,15 +107,12 @@ async function computeC2( return result; } -function computeC3( - messageBlocks: Uint8Array[], - sigma: Uint8Array -): Uint8Array[] { +function computeC3(messageBlocks: Uint8Array[], sigma: Uint8Array): Uint8Array[] { const keys = computeBlockKeys(sigma, messageBlocks.length); return zip(keys, messageBlocks).map(([key, block]) => { if (key === undefined || block === undefined) { - throw new Error("Key or block is undefined"); + throw new Error('Key or block is undefined'); } return xorBlocks(key, block); }); @@ -146,12 +124,12 @@ function hash2(p: PT): Uint8Array { const result = new Uint8Array(finalExp.length + 1); result[0] = 0x2; result.set(finalExp, 1); - return keccak256(result, "bytes"); + return keccak256(result, 'bytes'); } function hash3(bytesHex: string): bigint { - const preimage = hexToBytes(("0x3" + bytesHex) as `0x${string}`); - const hash = keccak256(preimage, "bytes"); + const preimage = hexToBytes(('0x3' + bytesHex) as `0x${string}`); + const hash = keccak256(preimage, 'bytes'); const bigIntHash = bytesToBigInt(hash); const result = bigIntHash % blsSubgroupOrder; return result; @@ -161,14 +139,14 @@ function hash4(bytes: Uint8Array): Uint8Array { const preimage = new Uint8Array(bytes.length + 1); preimage[0] = 0x4; preimage.set(bytes, 1); - const hash = keccak256(preimage, "bytes"); + const hash = keccak256(preimage, 'bytes'); return hash; } //====================================== function xorBlocks(x: Uint8Array, y: Uint8Array): Uint8Array { if (x.length !== y.length) { - throw new Error("Both byte arrays must be of the same length."); + throw new Error('Both byte arrays must be of the same length.'); } const result = new Uint8Array(x.length); diff --git a/src/shared/ShutterTimer/ShutterTimer.tsx b/src/shared/ShutterTimer/ShutterTimer.tsx index dbeefb1..fc13d7a 100644 --- a/src/shared/ShutterTimer/ShutterTimer.tsx +++ b/src/shared/ShutterTimer/ShutterTimer.tsx @@ -12,18 +12,23 @@ const SLOTS_PER_EPOCH = 16; // const EPOCH_DURATION = SLOT_TIME * SLOTS_PER_EPOCH; const getEpoch = (genesisTime: number) => { - return Math.floor(((Date.now() / 1000) - genesisTime) / SLOT_TIME / SLOTS_PER_EPOCH); -} + return Math.floor((Date.now() / 1000 - genesisTime) / SLOT_TIME / SLOTS_PER_EPOCH); +}; const getSlot = (genesisTime: number) => { - return Math.floor(((Date.now() / 1000) - genesisTime) / SLOT_TIME); -} - -const getLoadingLabel = ({ isValidatorsLoading, isProposersLoading, isWaiting, timeDifference }: { - isValidatorsLoading: boolean, - isProposersLoading: boolean, - isWaiting: boolean, - timeDifference: number, + return Math.floor((Date.now() / 1000 - genesisTime) / SLOT_TIME); +}; + +const getLoadingLabel = ({ + isValidatorsLoading, + isProposersLoading, + isWaiting, + timeDifference, +}: { + isValidatorsLoading: boolean; + isProposersLoading: boolean; + isWaiting: boolean; + timeDifference: number; }) => { if (isValidatorsLoading) { return 'Fetching shutter validators...'; @@ -36,7 +41,7 @@ const getLoadingLabel = ({ isValidatorsLoading, isProposersLoading, isWaiting, t } return `Next Shutter transactions will be included in ~${timeDifference} seconds`; -} +}; export const ShutterTimer = () => { const chainId = useChainId(); @@ -47,9 +52,13 @@ export const ShutterTimer = () => { // waiting for next epoch const [isWaiting, setIsWaiting] = useState(false); - const { validatorIndexes: shutteredValidatorIndexes, isLoading: isValidatorsLoading } = useGetShutterValidatorIndexes(chainId); + const { validatorIndexes: shutteredValidatorIndexes, isLoading: isValidatorsLoading } = + useGetShutterValidatorIndexes(chainId); - const { data: dutiesProposer, isLoading: isProposersLoading } = useFetchDutiesProposer(chain.gbcUrl, currentEpoch); + const { data: dutiesProposer, isLoading: isProposersLoading } = useFetchDutiesProposer( + chain.gbcUrl, + currentEpoch, + ); const matches = useMemo(() => { if (!shutteredValidatorIndexes || !dutiesProposer) return; @@ -108,22 +117,23 @@ export const ShutterTimer = () => { isWaiting, timeDifference, })} - color='danger' - placement='left'> - {isValidatorsLoading || isProposersLoading || isWaiting ? ( - - ) : ( - - )} + color="danger" + placement="left" + > + {isValidatorsLoading || isProposersLoading || isWaiting ? ( + + ) : ( + + )}
- ) + ); }; diff --git a/src/shared/ShutterTimer/ValidatorRegistryQL.ts b/src/shared/ShutterTimer/ValidatorRegistryQL.ts index b60c92a..92959c8 100644 --- a/src/shared/ShutterTimer/ValidatorRegistryQL.ts +++ b/src/shared/ShutterTimer/ValidatorRegistryQL.ts @@ -1,12 +1,17 @@ import { gql } from '@apollo/client'; export const GET_UPDATES = gql` - query GetUpdates($first: Int!, $lastBlockNumber: Int!) { - updateds(first: $first, orderBy: blockNumber, orderDirection: asc, where: { blockNumber_gte: $lastBlockNumber }) { - id - message - signature - blockNumber - } + query GetUpdates($first: Int!, $lastBlockNumber: Int!) { + updateds( + first: $first + orderBy: blockNumber + orderDirection: asc + where: { blockNumber_gte: $lastBlockNumber } + ) { + id + message + signature + blockNumber } + } `; diff --git a/src/shared/ShutterTimer/index.ts b/src/shared/ShutterTimer/index.ts index 9954be1..8f5e3ec 100644 --- a/src/shared/ShutterTimer/index.ts +++ b/src/shared/ShutterTimer/index.ts @@ -1 +1 @@ -export * from './ShutterTimer'; \ No newline at end of file +export * from './ShutterTimer'; diff --git a/src/shared/ShutterTimer/useFetchDutiesProposer.ts b/src/shared/ShutterTimer/useFetchDutiesProposer.ts index 16d94a7..e476ab6 100644 --- a/src/shared/ShutterTimer/useFetchDutiesProposer.ts +++ b/src/shared/ShutterTimer/useFetchDutiesProposer.ts @@ -5,19 +5,20 @@ const DUTIES_PROPOSER_ENDPOINT = 'validator/duties/proposer'; // query const DUTIES_PROPOSER_QUERY_KEY = 'duties-proposer'; -export const useFetchDutiesProposer = (gbcUrl: string, epoch: number) => useQuery({ - queryKey: [DUTIES_PROPOSER_QUERY_KEY, epoch], - queryFn: async () => { - try { - const res = await fetch(`${gbcUrl}/${BASE_ENDPOINT}/${DUTIES_PROPOSER_ENDPOINT}/${epoch}`); - const data = await res.json(); +export const useFetchDutiesProposer = (gbcUrl: string, epoch: number) => + useQuery({ + queryKey: [DUTIES_PROPOSER_QUERY_KEY, epoch], + queryFn: async () => { + try { + const res = await fetch(`${gbcUrl}/${BASE_ENDPOINT}/${DUTIES_PROPOSER_ENDPOINT}/${epoch}`); + const data = await res.json(); - console.log('[service][rpc-gbc] queried duties proposer', { data: data.data }); + console.log('[service][rpc-gbc] queried duties proposer', { data: data.data }); - return data.data; - } catch (error) { - console.error('[service][apollo] Failed to query duties proposer', error); - } - }, - enabled: Boolean(gbcUrl), -}); + return data.data; + } catch (error) { + console.error('[service][apollo] Failed to query duties proposer', error); + } + }, + enabled: Boolean(gbcUrl), + }); diff --git a/src/shared/ShutterTimer/useGetShutterValidatorIndexes.ts b/src/shared/ShutterTimer/useGetShutterValidatorIndexes.ts index 7060e00..178ad11 100644 --- a/src/shared/ShutterTimer/useGetShutterValidatorIndexes.ts +++ b/src/shared/ShutterTimer/useGetShutterValidatorIndexes.ts @@ -26,10 +26,14 @@ function extractSubscriptionStatus(messageHex: string) { } export const useGetShutterValidatorIndexes = (chainId: number) => { - const { validatorIndexes, lastBlockNumber} = useValidatorIndexesStore(state => state[chainId]); + const { validatorIndexes, lastBlockNumber } = useValidatorIndexesStore((state) => state[chainId]); const { _hasHydrated, setValidatorIndexes, setLastBlockNumber } = useValidatorIndexesStore(); - const { data: logs, isLoading } = useGetValidatorRegistryLogs(chainId, lastBlockNumber, _hasHydrated); + const { data: logs, isLoading } = useGetValidatorRegistryLogs( + chainId, + lastBlockNumber, + _hasHydrated, + ); useEffect(() => { let currentIndexes = validatorIndexes; @@ -60,11 +64,10 @@ export const useGetShutterValidatorIndexes = (chainId: number) => { setValidatorIndexes([...currentIndexes, ...indexes], chainId); setLastBlockNumber(newLastBlock, chainId); } - }, [logs]); return { validatorIndexes, isLoading, - } + }; }; diff --git a/src/shared/ShutterTimer/useGetValidatorRegistryLogs.ts b/src/shared/ShutterTimer/useGetValidatorRegistryLogs.ts index 951f70f..d95a26d 100644 --- a/src/shared/ShutterTimer/useGetValidatorRegistryLogs.ts +++ b/src/shared/ShutterTimer/useGetValidatorRegistryLogs.ts @@ -4,16 +4,20 @@ import { useLazyQuery } from '@apollo/client'; import { GET_UPDATES } from './ValidatorRegistryQL'; export interface ValidatorRegistryLog { - message: string, - signature: string, - blockNumber: string, + message: string; + signature: string; + blockNumber: string; } const SUB_GRAPH_MAX_QUERY_LOGS = 1000; // query const LOGS_QUERY_KEY = 'logs'; -export const useGetValidatorRegistryLogs = (chainId: number, lastBlockNumber: number, enabled: boolean) => { +export const useGetValidatorRegistryLogs = ( + chainId: number, + lastBlockNumber: number, + enabled: boolean, +) => { const [getUpdates] = useLazyQuery(GET_UPDATES); return useQuery({ @@ -24,9 +28,13 @@ export const useGetValidatorRegistryLogs = (chainId: number, lastBlockNumber: nu // eslint-disable-next-line no-constant-condition while (true) { - const blockNumber = allLogs.length ? allLogs[allLogs.length - 1].blockNumber : lastBlockNumber; + const blockNumber = allLogs.length + ? allLogs[allLogs.length - 1].blockNumber + : lastBlockNumber; - const response = await getUpdates({ variables: { first: SUB_GRAPH_MAX_QUERY_LOGS, lastBlockNumber: Number(blockNumber) }}); + const response = await getUpdates({ + variables: { first: SUB_GRAPH_MAX_QUERY_LOGS, lastBlockNumber: Number(blockNumber) }, + }); const logs = response.data?.updateds; diff --git a/src/stores/createSelectors.ts b/src/stores/createSelectors.ts index 68394ee..3f2ba15 100644 --- a/src/stores/createSelectors.ts +++ b/src/stores/createSelectors.ts @@ -4,14 +4,12 @@ type WithSelectors = S extends { getState: () => infer T } ? S & { use: { [K in keyof T]: () => T[K] } } : never; -export const createSelectors = >>( - _store: S, -) => { - let store = _store as WithSelectors - store.use = {} - for (let k of Object.keys(store.getState())) { - ;(store.use as any)[k] = () => store((s) => s[k as keyof typeof s]) +export const createSelectors = >>(_store: S) => { + const store = _store as WithSelectors; + store.use = {}; + for (const k of Object.keys(store.getState())) { + (store.use as any)[k] = () => store((s) => s[k as keyof typeof s]); } - return store + return store; }; diff --git a/src/stores/useValidatorIndexesStore.ts b/src/stores/useValidatorIndexesStore.ts index 8a46f06..26226a4 100644 --- a/src/stores/useValidatorIndexesStore.ts +++ b/src/stores/useValidatorIndexesStore.ts @@ -6,20 +6,20 @@ import { createSelectors } from './createSelectors'; type State = { [key: number]: { - validatorIndexes: number[], - lastBlockNumber: number, - }, + validatorIndexes: number[]; + lastBlockNumber: number; + }; - _hasHydrated: boolean, + _hasHydrated: boolean; }; type Action = { - setValidatorIndexes: (validatorIndexes: number[], chainId: number) => void, - addValidatorIndex: (validatorIndex: number, chainId: number) => void, - removeValidatorIndex: (validatorIndex: number, chainId: number) => void, - setLastBlockNumber: (lastBlockNumber: number, chainId: number) => void, + setValidatorIndexes: (validatorIndexes: number[], chainId: number) => void; + addValidatorIndex: (validatorIndex: number, chainId: number) => void; + removeValidatorIndex: (validatorIndex: number, chainId: number) => void; + setLastBlockNumber: (lastBlockNumber: number, chainId: number) => void; - setHasHydrated: (state: boolean) => void, + setHasHydrated: (state: boolean) => void; }; const useValidatorIndexesStoreBase = create()( @@ -37,56 +37,62 @@ const useValidatorIndexesStoreBase = create()( _hasHydrated: false, setHasHydrated: (state) => set({ _hasHydrated: state }), - setValidatorIndexes: (validatorIndexes, chainId) => set((state) => { - return { - [chainId]: { - validatorIndexes: validatorIndexes, - lastBlockNumber: state[chainId].lastBlockNumber, - } - }; - }), - addValidatorIndex: (validatorIndex, chainId) => set((state) => { - return { - [chainId]: { - validatorIndexes: [...state[chainId].validatorIndexes, validatorIndex], - lastBlockNumber: state[chainId].lastBlockNumber, - } - } - }), - removeValidatorIndex: (validatorIndex, chainId) => set((state) => { - return { - [chainId]: { - validatorIndexes: state[chainId].validatorIndexes.filter((index) => index !== validatorIndex), - lastBlockNumber: state[chainId].lastBlockNumber, - } - }; - }), - setLastBlockNumber: (lastBlockNumber, chainId) => set((state) => { - return { - [chainId]: { - validatorIndexes: state[chainId].validatorIndexes, - lastBlockNumber: lastBlockNumber, - } - }; - }), + setValidatorIndexes: (validatorIndexes, chainId) => + set((state) => { + return { + [chainId]: { + validatorIndexes: validatorIndexes, + lastBlockNumber: state[chainId].lastBlockNumber, + }, + }; + }), + addValidatorIndex: (validatorIndex, chainId) => + set((state) => { + return { + [chainId]: { + validatorIndexes: [...state[chainId].validatorIndexes, validatorIndex], + lastBlockNumber: state[chainId].lastBlockNumber, + }, + }; + }), + removeValidatorIndex: (validatorIndex, chainId) => + set((state) => { + return { + [chainId]: { + validatorIndexes: state[chainId].validatorIndexes.filter( + (index) => index !== validatorIndex, + ), + lastBlockNumber: state[chainId].lastBlockNumber, + }, + }; + }), + setLastBlockNumber: (lastBlockNumber, chainId: string) => + set((state) => { + return { + [chainId]: { + validatorIndexes: state[chainId].validatorIndexes, + lastBlockNumber: lastBlockNumber, + }, + }; + }), }), { name: 'validator-indexes-storage', // name of the item in the storage (must be unique) storage: createJSONStorage(() => window.localStorage), // (optional) by default, 'localStorage' is used onRehydrateStorage: () => { - console.log('hydration starts') + console.log('hydration starts'); return (state, error) => { console.debug({ state }); if (error) { - console.log('an error happened during hydration', error) + console.log('an error happened during hydration', error); } else { state?.setHasHydrated(true); - console.log('hydration finished') + console.log('hydration finished'); } - } + }; }, }, ), diff --git a/src/utils/eth.ts b/src/utils/eth.ts index 3b05939..bb12d0d 100644 --- a/src/utils/eth.ts +++ b/src/utils/eth.ts @@ -3,12 +3,16 @@ import { utils } from 'ethers'; const functionSignature = 'transfer(address,uint256)'; const functionSelector = utils.id(functionSignature).slice(0, 10); -export const encodeDataForTransfer = (recipientAddress: string, amount: number, decimals: number) => { +export const encodeDataForTransfer = ( + recipientAddress: string, + amount: number, + decimals: number, +) => { const tokenAmount = utils.parseUnits(amount.toString(), decimals); const params = utils.defaultAbiCoder.encode( - ["address", "uint256"], - [recipientAddress, tokenAmount] + ['address', 'uint256'], + [recipientAddress, tokenAmount], ); return functionSelector + params.slice(2); diff --git a/src/utils/mappers.ts b/src/utils/mappers.ts index 25c3dd8..4bef792 100644 --- a/src/utils/mappers.ts +++ b/src/utils/mappers.ts @@ -1,4 +1,3 @@ - export const mapChainToOption = (chainData: any) => { return { ...chainData, @@ -6,7 +5,7 @@ export const mapChainToOption = (chainData: any) => { label: chainData.name, value: String(chainData.id), avatar: chainData.img, - } + }; }; export const mapChainsToOptions = (chains: any) => chains.map(mapChainToOption); diff --git a/tailwind.config.js b/tailwind.config.js index 642cfd1..4d34a0d 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -1,25 +1,29 @@ -import { nextui } from "@nextui-org/react"; +import { nextui } from '@nextui-org/react'; /** @type {import('tailwindcss').Config} */ export default { - content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}", "./node_modules/@nextui-org/theme/dist/**/*.{js,ts,jsx,tsx}"], + content: [ + './index.html', + './src/**/*.{js,ts,jsx,tsx}', + './node_modules/@nextui-org/theme/dist/**/*.{js,ts,jsx,tsx}', + ], theme: { extend: {}, }, - darkMode: "class", + darkMode: 'class', plugins: [ nextui({ - defaultTheme: "light", + defaultTheme: 'light', themes: { light: { colors: { primary: { - DEFAULT: "#3E6957", + DEFAULT: '#3E6957', }, - secondary: "#f0ebde", - foreground: "#ffffff", + secondary: '#f0ebde', + foreground: '#ffffff', danger: { - DEFAULT: "#f37e4b", + DEFAULT: '#f37e4b', }, }, }, diff --git a/thegraph/m-shutter-validator-registry/src/validator-registry.ts b/thegraph/m-shutter-validator-registry/src/validator-registry.ts index e537fe0..81f039e 100644 --- a/thegraph/m-shutter-validator-registry/src/validator-registry.ts +++ b/thegraph/m-shutter-validator-registry/src/validator-registry.ts @@ -1,16 +1,14 @@ -import { Updated as UpdatedEvent } from "../generated/ValidatorRegistry/ValidatorRegistry" -import { Updated } from "../generated/schema" +import { Updated as UpdatedEvent } from '../generated/ValidatorRegistry/ValidatorRegistry'; +import { Updated } from '../generated/schema'; export function handleUpdated(event: UpdatedEvent): void { - let entity = new Updated( - event.transaction.hash.concatI32(event.logIndex.toI32()) - ) - entity.message = event.params.message - entity.signature = event.params.signature + const entity = new Updated(event.transaction.hash.concatI32(event.logIndex.toI32())); + entity.message = event.params.message; + entity.signature = event.params.signature; - entity.blockNumber = event.block.number - entity.blockTimestamp = event.block.timestamp - entity.transactionHash = event.transaction.hash + entity.blockNumber = event.block.number; + entity.blockTimestamp = event.block.timestamp; + entity.transactionHash = event.transaction.hash; - entity.save() + entity.save(); } diff --git a/thegraph/m-shutter-validator-registry/tests/validator-registry-utils.ts b/thegraph/m-shutter-validator-registry/tests/validator-registry-utils.ts index e6714b2..4f1a42a 100644 --- a/thegraph/m-shutter-validator-registry/tests/validator-registry-utils.ts +++ b/thegraph/m-shutter-validator-registry/tests/validator-registry-utils.ts @@ -1,18 +1,18 @@ -import { newMockEvent } from "matchstick-as" -import { ethereum, Bytes } from "@graphprotocol/graph-ts" -import { Updated } from "../generated/ValidatorRegistry/ValidatorRegistry" +import { newMockEvent } from 'matchstick-as'; +import { ethereum, Bytes } from '@graphprotocol/graph-ts'; +import { Updated } from '../generated/ValidatorRegistry/ValidatorRegistry'; export function createUpdatedEvent(message: Bytes, signature: Bytes): Updated { - let updatedEvent = changetype(newMockEvent()) + const updatedEvent = changetype(newMockEvent()); - updatedEvent.parameters = new Array() + updatedEvent.parameters = []; updatedEvent.parameters.push( - new ethereum.EventParam("message", ethereum.Value.fromBytes(message)) - ) + new ethereum.EventParam('message', ethereum.Value.fromBytes(message)), + ); updatedEvent.parameters.push( - new ethereum.EventParam("signature", ethereum.Value.fromBytes(signature)) - ) + new ethereum.EventParam('signature', ethereum.Value.fromBytes(signature)), + ); - return updatedEvent + return updatedEvent; } diff --git a/thegraph/m-shutter-validator-registry/tests/validator-registry.test.ts b/thegraph/m-shutter-validator-registry/tests/validator-registry.test.ts index b3b0565..03cd530 100644 --- a/thegraph/m-shutter-validator-registry/tests/validator-registry.test.ts +++ b/thegraph/m-shutter-validator-registry/tests/validator-registry.test.ts @@ -4,50 +4,50 @@ import { test, clearStore, beforeAll, - afterAll -} from "matchstick-as/assembly/index" -import { Bytes } from "@graphprotocol/graph-ts" -import { Updated } from "../generated/schema" -import { Updated as UpdatedEvent } from "../generated/ValidatorRegistry/ValidatorRegistry" -import { handleUpdated } from "../src/validator-registry" -import { createUpdatedEvent } from "./validator-registry-utils" + afterAll, +} from 'matchstick-as/assembly/index'; +import { Bytes } from '@graphprotocol/graph-ts'; +import { Updated } from '../generated/schema'; +import { Updated as UpdatedEvent } from '../generated/ValidatorRegistry/ValidatorRegistry'; +import { handleUpdated } from '../src/validator-registry'; +import { createUpdatedEvent } from './validator-registry-utils'; // Tests structure (matchstick-as >=0.5.0) // https://thegraph.com/docs/en/developer/matchstick/#tests-structure-0-5-0 -describe("Describe entity assertions", () => { +describe('Describe entity assertions', () => { beforeAll(() => { - let message = Bytes.fromI32(1234567890) - let signature = Bytes.fromI32(1234567890) - let newUpdatedEvent = createUpdatedEvent(message, signature) - handleUpdated(newUpdatedEvent) - }) + const message = Bytes.fromI32(1234567890); + const signature = Bytes.fromI32(1234567890); + const newUpdatedEvent = createUpdatedEvent(message, signature); + handleUpdated(newUpdatedEvent); + }); afterAll(() => { - clearStore() - }) + clearStore(); + }); // For more test scenarios, see: // https://thegraph.com/docs/en/developer/matchstick/#write-a-unit-test - test("Updated created and stored", () => { - assert.entityCount("Updated", 1) + test('Updated created and stored', () => { + assert.entityCount('Updated', 1); // 0xa16081f360e3847006db660bae1c6d1b2e17ec2a is the default address used in newMockEvent() function assert.fieldEquals( - "Updated", - "0xa16081f360e3847006db660bae1c6d1b2e17ec2a-1", - "message", - "1234567890" - ) + 'Updated', + '0xa16081f360e3847006db660bae1c6d1b2e17ec2a-1', + 'message', + '1234567890', + ); assert.fieldEquals( - "Updated", - "0xa16081f360e3847006db660bae1c6d1b2e17ec2a-1", - "signature", - "1234567890" - ) + 'Updated', + '0xa16081f360e3847006db660bae1c6d1b2e17ec2a-1', + 'signature', + '1234567890', + ); // More assert options: // https://thegraph.com/docs/en/developer/matchstick/#asserts - }) -}) + }); +}); diff --git a/thegraph/shutter-validator-registry/src/validator-registry.ts b/thegraph/shutter-validator-registry/src/validator-registry.ts index 030dd20..7f914f7 100644 --- a/thegraph/shutter-validator-registry/src/validator-registry.ts +++ b/thegraph/shutter-validator-registry/src/validator-registry.ts @@ -2,7 +2,7 @@ import { Bytes, BigInt } from '@graphprotocol/graph-ts'; import { Updated as UpdatedEvent } from '../generated/ValidatorRegistry/ValidatorRegistry'; import { Updated } from '../generated/schema'; -function extractValidatorIndex(messageBytes: Bytes): BigInt { +function extractValidatorIndex(messageBytes: Bytes): bigint { // Convert hex to bytes // const messageBytes = utils.arrayify(messageHex); @@ -26,17 +26,15 @@ function extractSubscriptionStatus(messageBytes: Bytes): boolean { } export function handleUpdated(event: UpdatedEvent): void { - const entity = new Updated( - event.transaction.hash.concatI32(event.logIndex.toI32()) - ) + const entity = new Updated(event.transaction.hash.concatI32(event.logIndex.toI32())); entity.message = event.params.message; entity.signature = event.params.signature; entity.validatorIndex = extractValidatorIndex(event.params.message); entity.subscriptionStatus = extractSubscriptionStatus(event.params.message); - entity.blockNumber = event.block.number - entity.blockTimestamp = event.block.timestamp - entity.transactionHash = event.transaction.hash + entity.blockNumber = event.block.number; + entity.blockTimestamp = event.block.timestamp; + entity.transactionHash = event.transaction.hash; - entity.save() + entity.save(); } diff --git a/thegraph/shutter-validator-registry/tests/validator-registry-utils.ts b/thegraph/shutter-validator-registry/tests/validator-registry-utils.ts index e6714b2..4f1a42a 100644 --- a/thegraph/shutter-validator-registry/tests/validator-registry-utils.ts +++ b/thegraph/shutter-validator-registry/tests/validator-registry-utils.ts @@ -1,18 +1,18 @@ -import { newMockEvent } from "matchstick-as" -import { ethereum, Bytes } from "@graphprotocol/graph-ts" -import { Updated } from "../generated/ValidatorRegistry/ValidatorRegistry" +import { newMockEvent } from 'matchstick-as'; +import { ethereum, Bytes } from '@graphprotocol/graph-ts'; +import { Updated } from '../generated/ValidatorRegistry/ValidatorRegistry'; export function createUpdatedEvent(message: Bytes, signature: Bytes): Updated { - let updatedEvent = changetype(newMockEvent()) + const updatedEvent = changetype(newMockEvent()); - updatedEvent.parameters = new Array() + updatedEvent.parameters = []; updatedEvent.parameters.push( - new ethereum.EventParam("message", ethereum.Value.fromBytes(message)) - ) + new ethereum.EventParam('message', ethereum.Value.fromBytes(message)), + ); updatedEvent.parameters.push( - new ethereum.EventParam("signature", ethereum.Value.fromBytes(signature)) - ) + new ethereum.EventParam('signature', ethereum.Value.fromBytes(signature)), + ); - return updatedEvent + return updatedEvent; } diff --git a/thegraph/shutter-validator-registry/tests/validator-registry.test.ts b/thegraph/shutter-validator-registry/tests/validator-registry.test.ts index b3b0565..03cd530 100644 --- a/thegraph/shutter-validator-registry/tests/validator-registry.test.ts +++ b/thegraph/shutter-validator-registry/tests/validator-registry.test.ts @@ -4,50 +4,50 @@ import { test, clearStore, beforeAll, - afterAll -} from "matchstick-as/assembly/index" -import { Bytes } from "@graphprotocol/graph-ts" -import { Updated } from "../generated/schema" -import { Updated as UpdatedEvent } from "../generated/ValidatorRegistry/ValidatorRegistry" -import { handleUpdated } from "../src/validator-registry" -import { createUpdatedEvent } from "./validator-registry-utils" + afterAll, +} from 'matchstick-as/assembly/index'; +import { Bytes } from '@graphprotocol/graph-ts'; +import { Updated } from '../generated/schema'; +import { Updated as UpdatedEvent } from '../generated/ValidatorRegistry/ValidatorRegistry'; +import { handleUpdated } from '../src/validator-registry'; +import { createUpdatedEvent } from './validator-registry-utils'; // Tests structure (matchstick-as >=0.5.0) // https://thegraph.com/docs/en/developer/matchstick/#tests-structure-0-5-0 -describe("Describe entity assertions", () => { +describe('Describe entity assertions', () => { beforeAll(() => { - let message = Bytes.fromI32(1234567890) - let signature = Bytes.fromI32(1234567890) - let newUpdatedEvent = createUpdatedEvent(message, signature) - handleUpdated(newUpdatedEvent) - }) + const message = Bytes.fromI32(1234567890); + const signature = Bytes.fromI32(1234567890); + const newUpdatedEvent = createUpdatedEvent(message, signature); + handleUpdated(newUpdatedEvent); + }); afterAll(() => { - clearStore() - }) + clearStore(); + }); // For more test scenarios, see: // https://thegraph.com/docs/en/developer/matchstick/#write-a-unit-test - test("Updated created and stored", () => { - assert.entityCount("Updated", 1) + test('Updated created and stored', () => { + assert.entityCount('Updated', 1); // 0xa16081f360e3847006db660bae1c6d1b2e17ec2a is the default address used in newMockEvent() function assert.fieldEquals( - "Updated", - "0xa16081f360e3847006db660bae1c6d1b2e17ec2a-1", - "message", - "1234567890" - ) + 'Updated', + '0xa16081f360e3847006db660bae1c6d1b2e17ec2a-1', + 'message', + '1234567890', + ); assert.fieldEquals( - "Updated", - "0xa16081f360e3847006db660bae1c6d1b2e17ec2a-1", - "signature", - "1234567890" - ) + 'Updated', + '0xa16081f360e3847006db660bae1c6d1b2e17ec2a-1', + 'signature', + '1234567890', + ); // More assert options: // https://thegraph.com/docs/en/developer/matchstick/#asserts - }) -}) + }); +}); diff --git a/vite.config.ts b/vite.config.ts index bbc4ffc..71b77d8 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,15 +1,15 @@ -import { defineConfig } from "vite"; -import react from "@vitejs/plugin-react"; +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; // https://vitejs.dev/config/ export default defineConfig({ define: { - "process.env": process.env, + 'process.env': process.env, }, plugins: [react()], resolve: { alias: { - "@/": "/src/", + '@/': '/src/', }, }, }); From c2f3a5430dd447661a64102fda6ed10c618d116a Mon Sep 17 00:00:00 2001 From: verkhohliad Date: Fri, 30 Aug 2024 10:06:51 +0100 Subject: [PATCH 19/22] chore: resetup typescript checks --- .gitignore | 3 +- src/main.tsx | 2 +- src/services/shutter/encryptDataBlst.ts | 2 ++ src/stores/useValidatorIndexesStore.ts | 2 +- tsconfig.app.json | 31 -------------------- tsconfig.json | 38 ++++++++++++++++++++----- tsconfig.node.json | 13 --------- 7 files changed, 37 insertions(+), 54 deletions(-) delete mode 100644 tsconfig.app.json delete mode 100644 tsconfig.node.json diff --git a/.gitignore b/.gitignore index 3cf3720..543eb0e 100644 --- a/.gitignore +++ b/.gitignore @@ -27,4 +27,5 @@ dist-ssr .firebaserc .firebase ---fix \ No newline at end of file +--fix +tsconfig.tsbuildinfo \ No newline at end of file diff --git a/src/main.tsx b/src/main.tsx index f60fa4f..29e6aeb 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -5,7 +5,7 @@ import { Toaster } from 'sonner'; import { Web3ModalProvider } from '@/providers/Web3ModalProvider'; import { GraphQLProvider } from '@/providers/GraphQLProvider'; -import App from './App.tsx'; +import App from './App'; import './index.css'; ReactDOM.createRoot(document.getElementById('root')!).render( diff --git a/src/services/shutter/encryptDataBlst.ts b/src/services/shutter/encryptDataBlst.ts index f8a0853..62d3b3b 100644 --- a/src/services/shutter/encryptDataBlst.ts +++ b/src/services/shutter/encryptDataBlst.ts @@ -2,6 +2,8 @@ import { hexToBytes, keccak256, bytesToBigInt, bytesToHex, numberToBytes } from import pkg from 'lodash'; const { zip } = pkg; +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-expect-error import { Blst, P1, P2, PT } from './blst.hpp.ts'; declare global { diff --git a/src/stores/useValidatorIndexesStore.ts b/src/stores/useValidatorIndexesStore.ts index 26226a4..93cf9f5 100644 --- a/src/stores/useValidatorIndexesStore.ts +++ b/src/stores/useValidatorIndexesStore.ts @@ -66,7 +66,7 @@ const useValidatorIndexesStoreBase = create()( }, }; }), - setLastBlockNumber: (lastBlockNumber, chainId: string) => + setLastBlockNumber: (lastBlockNumber, chainId: number) => set((state) => { return { [chainId]: { diff --git a/tsconfig.app.json b/tsconfig.app.json deleted file mode 100644 index a2385e4..0000000 --- a/tsconfig.app.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "compilerOptions": { - "composite": true, - "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", - "target": "ES2020", - "useDefineForClassFields": true, - "lib": ["ES2020", "DOM", "DOM.Iterable"], - "module": "ESNext", - "skipLibCheck": true, - - /* Bundler mode */ - "moduleResolution": "bundler", - "allowImportingTsExtensions": true, - "resolveJsonModule": true, - "isolatedModules": true, - "moduleDetection": "force", - "noEmit": true, - "jsx": "react-jsx", - - /* Linting */ - "strict": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "noFallthroughCasesInSwitch": true, - - "paths": { - "@/*": ["./src/*"] - } - }, - "include": ["src"] -} diff --git a/tsconfig.json b/tsconfig.json index ea9d0cd..459b71b 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,11 +1,35 @@ { - "files": [], - "references": [ - { - "path": "./tsconfig.app.json" + "compilerOptions": { + "allowJs": true, + "baseUrl": ".", + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "isolatedModules": true, + "jsx": "preserve", + "lib": [ + "dom", + "dom.iterable", + "esnext", + "ES2020", + ], + "module": "esnext", + "moduleResolution": "node", + "noEmit": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "strict": true, + "target": "ES2020", + "paths": { + "@/*": ["./src/*"] }, - { - "path": "./tsconfig.node.json" - } + "incremental": true + }, + "include": [ + "src/**/*" + ], + "exclude": [ + "node_modules", + "thegraph", + "public" ] } diff --git a/tsconfig.node.json b/tsconfig.node.json deleted file mode 100644 index 3afdd6e..0000000 --- a/tsconfig.node.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "compilerOptions": { - "composite": true, - "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", - "skipLibCheck": true, - "module": "ESNext", - "moduleResolution": "bundler", - "allowSyntheticDefaultImports": true, - "strict": true, - "noEmit": true - }, - "include": ["vite.config.ts"] -} From 7a40f97c782c6e3c1df72b1c00bc9f34f283a4e3 Mon Sep 17 00:00:00 2001 From: verkhohliad Date: Fri, 30 Aug 2024 10:18:53 +0100 Subject: [PATCH 20/22] fix: fix ui issue with tip regarding using brave wallet on mobile --- .prettierrc.js | 2 +- package.json | 3 ++- src/components/Connect.tsx | 8 ++++---- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/.prettierrc.js b/.prettierrc.js index c709800..c322bc9 100644 --- a/.prettierrc.js +++ b/.prettierrc.js @@ -1,4 +1,4 @@ -module.exports = { +export default { bracketSpacing: true, printWidth: 100, semi: true, diff --git a/package.json b/package.json index ea29ef0..cb3515d 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,8 @@ { "name": "shutter", "private": true, - "version": "0.0.0", + "version": "1.0.0", + "type": "module", "scripts": { "dev": "vite", "build": "tsc -b && vite build", diff --git a/src/components/Connect.tsx b/src/components/Connect.tsx index 93e85d9..e8c4f1d 100644 --- a/src/components/Connect.tsx +++ b/src/components/Connect.tsx @@ -22,14 +22,14 @@ export const Connect = () => { }, [address, connector]); return ( -
+
+ + {tip && ( - + {tip} )} - -
); }; From 5488e0c91739ecde114022461344884213e3fbef Mon Sep 17 00:00:00 2001 From: verkhohliad Date: Fri, 30 Aug 2024 10:53:06 +0100 Subject: [PATCH 21/22] docs: write readme --- README.md | 81 ++++++++++++++++++++++++++++---------- index.html | 2 +- public/app-screenshot.png | Bin 0 -> 30199 bytes public/img.png | Bin 341157 -> 0 bytes 4 files changed, 61 insertions(+), 22 deletions(-) create mode 100644 public/app-screenshot.png delete mode 100644 public/img.png diff --git a/README.md b/README.md index 0d6babe..94c03ed 100644 --- a/README.md +++ b/README.md @@ -1,30 +1,69 @@ -# React + TypeScript + Vite +# Gnosis Shutter App -This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. +## Overview -Currently, two official plugins are available: +Gnosis Shutter enhances transaction privacy and security on the Gnosis Chain. It allows users to encrypt their transactions to prevent frontrunning and censorship, with decryption and execution only occurring when they are ready to be included in a blockchain block. -- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh -- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh +## Features -## Expanding the ESLint configuration +- **Encryption of Transactions**: Users can encrypt transactions using a public 'eon key' before submission. +- **Decentralized Decryption**: Managed by a group of nodes called keypers, who ensure secure transaction decryption. +- **Enhanced Security**: Transactions are decrypted only when they are ready to be included in a block, enhancing security and privacy. +- **Opt-in System**: Users can choose between sending encrypted transactions or using the standard plaintext format. +- **Shutter Timer**: Track when next shutter validator will include transactions from sequencer to the block. -If you are developing a production application, we recommend updating the configuration to enable type aware lint rules: +![img.png](./public/shutter-architecture.png) -- Configure the top-level `parserOptions` property like this: +![img.png](public/app-screenshot.png) -```js -export default { - // other rules... - parserOptions: { - ecmaVersion: 'latest', - sourceType: 'module', - project: ['./tsconfig.json', './tsconfig.node.json'], - tsconfigRootDir: __dirname, - }, -} +## Getting Started + +### Prerequisites + +- Node.js (version 22.3.0) +- A compatible wallet (e.g., Brave Wallet) + +### Installation + +1. Clone the repository: + ```bash + git clone https://github.com/yourusername/gnosis-shutter.git + cd gnosis-shutter + ``` + +2. Install dependencies: + ```bash + npm install + ``` + +3. Configure environment variables: + ```bash + cp .env.example .env + ``` + +Running the Application +To start the application, run the following command: +```bash +npm run dev ``` -- Replace `plugin:@typescript-eslint/recommended` to `plugin:@typescript-eslint/recommended-type-checked` or `plugin:@typescript-eslint/strict-type-checked` -- Optionally add `plugin:@typescript-eslint/stylistic-type-checked` -- Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and add `plugin:react/recommended` & `plugin:react/jsx-runtime` to the `extends` list +## Usage +To submit an encrypted transaction: + +1. Connect your Brave Wallet. +2. Select the Gnosis Chain or Chiado. +3. Choose transfer tokens or advanced transaction (you need to copy build transaction from metamask) +4. Sign transaction. +5. Submit transaction to shutter sequencer contract. + +Transactions will be encrypted client-side and sent to the Sequencer Contract for processing. + +## Documentation +For more detailed information about the Gnosis Shutter system and its components, visit the following links: +* [Shutter Network](https://www.shutter.network/). +* [Shutterized Gnosis Chain -- High Level Overview](https://github.com/gnosischain/specs/blob/master/shutter/high-level.md) +* [Shutterized Gnosis Chain -- Low Level Specification](https://github.com/gnosischain/specs/blob/master/shutter/low-level.md) + +## Support + +If you need help or have any questions, please file an issue [here](https://github.com/gnosischain/shutter-encryption/issues). diff --git a/index.html b/index.html index e50b184..4bd752a 100644 --- a/index.html +++ b/index.html @@ -2,7 +2,7 @@ - + Gnosis Shutter diff --git a/public/app-screenshot.png b/public/app-screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..0ed6040153a59653ceb579dcddb16ca1ed38bcaf GIT binary patch literal 30199 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 literal 0 HcmV?d00001 diff --git a/public/img.png b/public/img.png deleted file mode 100644 index f3cc6a608ef997410f72b25199e77ee433ee6719..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 341157 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%0Aq^ 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
7d0aD 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

q^H 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�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