From 1cbf64bd9415222895dd11a3f178fbad782e376e Mon Sep 17 00:00:00 2001 From: zkJoaquin Date: Thu, 28 Mar 2024 18:26:05 +0800 Subject: [PATCH 1/4] add deploy script --- .gitignore | 12 +- hardhat.config.js => hardhat.config.ts | 31 +- package-lock.json | 786 +++++++++++++----- package.json | 4 +- script/deploy_log_name.ts | 19 + script/deploy_merge_token.ts | 90 ++ script/deploy_portal.ts | 275 ++++++ script/utils.ts | 208 +++++ ...ortal.test.js => MergeTokenPortal.test.ts} | 321 +++---- tsconfig.json | 11 + 10 files changed, 1409 insertions(+), 348 deletions(-) rename hardhat.config.js => hardhat.config.ts (58%) create mode 100644 script/deploy_log_name.ts create mode 100644 script/deploy_merge_token.ts create mode 100644 script/deploy_portal.ts create mode 100644 script/utils.ts rename test/{MergeTokenPortal.test.js => MergeTokenPortal.test.ts} (56%) create mode 100644 tsconfig.json diff --git a/.gitignore b/.gitignore index 2d64dcb..9acb026 100644 --- a/.gitignore +++ b/.gitignore @@ -10,10 +10,18 @@ abi # Hardhat files cache-zk artifacts-zk +deployments-zk cache artifacts -coverage -coverage.json +deployments + +# TypeChain files +/typechain +/typechain-types + +# solidity-coverage files +/coverage +/coverage.json # Openzeppelin upgrade .upgradable diff --git a/hardhat.config.js b/hardhat.config.ts similarity index 58% rename from hardhat.config.js rename to hardhat.config.ts index e56ca49..a8ff0a1 100644 --- a/hardhat.config.js +++ b/hardhat.config.ts @@ -1,17 +1,22 @@ -require('@nomicfoundation/hardhat-toolbox'); -require('@openzeppelin/hardhat-upgrades'); -require('@matterlabs/hardhat-zksync-deploy'); -require('@matterlabs/hardhat-zksync-solc'); -require('@matterlabs/hardhat-zksync-verify'); -require('@matterlabs/hardhat-zksync-upgradable'); -require('solidity-coverage'); -require('hardhat-abi-exporter'); -require('dotenv').config(); +import { HardhatUserConfig } from 'hardhat/config'; +import '@nomicfoundation/hardhat-toolbox'; +import '@openzeppelin/hardhat-upgrades'; +import '@matterlabs/hardhat-zksync-deploy'; +import '@matterlabs/hardhat-zksync-solc'; +import '@matterlabs/hardhat-zksync-verify'; +import '@matterlabs/hardhat-zksync-upgradable'; +import 'solidity-coverage'; +import 'hardhat-abi-exporter'; +import * as dotenv from 'dotenv'; +import './script/deploy_portal'; +import './script/deploy_merge_token'; + +dotenv.config(); /** * @type import('hardhat/config').HardhatUserConfig */ -const hardhatUserConfig = { +const config: HardhatUserConfig = { abiExporter: { path: './abi', runOnCompile: true, @@ -21,6 +26,10 @@ const hardhatUserConfig = { only: ['contracts/.*.sol'], format: 'json', }, + typechain: { + outDir: 'typechain', + target: 'ethers-v6', + }, solidity: { compilers: [ { @@ -56,4 +65,4 @@ const hardhatUserConfig = { }, }; -module.exports = hardhatUserConfig; +export default config; diff --git a/package-lock.json b/package-lock.json index 30d148c..a0fc9c3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,8 +10,7 @@ "license": "MIT", "dependencies": { "@openzeppelin/contracts": "^4.9.5", - "@openzeppelin/contracts-upgradeable": "^4.9.5", - "@openzeppelin/hardhat-upgrades": "^3.0.5" + "@openzeppelin/contracts-upgradeable": "^4.9.5" }, "devDependencies": { "@matterlabs/hardhat-zksync-deploy": "^1.1.1", @@ -19,6 +18,7 @@ "@matterlabs/hardhat-zksync-upgradable": "^1.2.1", "@matterlabs/hardhat-zksync-verify": "^1.2.0", "@nomicfoundation/hardhat-toolbox": "^4.0.0", + "@openzeppelin/hardhat-upgrades": "^3.0.5", "dotenv": "^16.4.5", "eslint": "^8.30.0", "eslint-config-prettier": "^9.0.0", @@ -44,12 +44,14 @@ "node_modules/@adraffy/ens-normalize": { "version": "1.10.1", "resolved": "https://registry.npmmirror.com/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz", - "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==" + "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==", + "dev": true }, "node_modules/@aws-crypto/sha256-js": { "version": "1.2.2", "resolved": "https://registry.npmmirror.com/@aws-crypto/sha256-js/-/sha256-js-1.2.2.tgz", "integrity": "sha512-Nr1QJIbW/afYYGzYvrF70LtaHrIRtd4TNAglX8BvlfxJLZ45SAmueIKYl5tWoNBPzp65ymXGFK0Bb1vZUpuc9g==", + "dev": true, "dependencies": { "@aws-crypto/util": "^1.2.2", "@aws-sdk/types": "^3.1.0", @@ -60,6 +62,7 @@ "version": "1.2.2", "resolved": "https://registry.npmmirror.com/@aws-crypto/util/-/util-1.2.2.tgz", "integrity": "sha512-H8PjG5WJ4wz0UXAFXeJjWCW1vkvIJ3qUUD+rGRwJ2/hj+xT58Qle2MTql/2MGzkU+1JLAFuR6aJpLAjHwhmwwg==", + "dev": true, "dependencies": { "@aws-sdk/types": "^3.1.0", "@aws-sdk/util-utf8-browser": "^3.0.0", @@ -70,6 +73,7 @@ "version": "3.535.0", "resolved": "https://registry.npmmirror.com/@aws-sdk/types/-/types-3.535.0.tgz", "integrity": "sha512-aY4MYfduNj+sRR37U7XxYR8wemfbKP6lx00ze2M2uubn7mZotuVrWYAafbMSXrdEMSToE5JDhr28vArSOoLcSg==", + "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" @@ -81,12 +85,14 @@ "node_modules/@aws-sdk/types/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@aws-sdk/util-utf8-browser": { "version": "3.259.0", "resolved": "https://registry.npmmirror.com/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz", "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", + "dev": true, "dependencies": { "tslib": "^2.3.1" } @@ -94,7 +100,8 @@ "node_modules/@aws-sdk/util-utf8-browser/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@babel/code-frame": { "version": "7.24.2", @@ -214,7 +221,7 @@ "version": "0.8.1", "resolved": "https://registry.npmmirror.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "devOptional": true, + "dev": true, "peer": true, "dependencies": { "@jridgewell/trace-mapping": "0.3.9" @@ -336,6 +343,7 @@ "version": "5.7.0", "resolved": "https://registry.npmmirror.com/@ethersproject/abi/-/abi-5.7.0.tgz", "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", + "dev": true, "dependencies": { "@ethersproject/address": "^5.7.0", "@ethersproject/bignumber": "^5.7.0", @@ -352,6 +360,7 @@ "version": "5.7.0", "resolved": "https://registry.npmmirror.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "dev": true, "dependencies": { "@ethersproject/bignumber": "^5.7.0", "@ethersproject/bytes": "^5.7.0", @@ -366,6 +375,7 @@ "version": "5.7.0", "resolved": "https://registry.npmmirror.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "dev": true, "dependencies": { "@ethersproject/abstract-provider": "^5.7.0", "@ethersproject/bignumber": "^5.7.0", @@ -378,6 +388,7 @@ "version": "5.7.0", "resolved": "https://registry.npmmirror.com/@ethersproject/address/-/address-5.7.0.tgz", "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "dev": true, "dependencies": { "@ethersproject/bignumber": "^5.7.0", "@ethersproject/bytes": "^5.7.0", @@ -390,6 +401,7 @@ "version": "5.7.0", "resolved": "https://registry.npmmirror.com/@ethersproject/base64/-/base64-5.7.0.tgz", "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "dev": true, "dependencies": { "@ethersproject/bytes": "^5.7.0" } @@ -398,6 +410,7 @@ "version": "5.7.0", "resolved": "https://registry.npmmirror.com/@ethersproject/basex/-/basex-5.7.0.tgz", "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "dev": true, "dependencies": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/properties": "^5.7.0" @@ -407,6 +420,7 @@ "version": "5.7.0", "resolved": "https://registry.npmmirror.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "dev": true, "dependencies": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/logger": "^5.7.0", @@ -417,6 +431,7 @@ "version": "5.7.0", "resolved": "https://registry.npmmirror.com/@ethersproject/bytes/-/bytes-5.7.0.tgz", "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "dev": true, "dependencies": { "@ethersproject/logger": "^5.7.0" } @@ -425,6 +440,7 @@ "version": "5.7.0", "resolved": "https://registry.npmmirror.com/@ethersproject/constants/-/constants-5.7.0.tgz", "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "dev": true, "dependencies": { "@ethersproject/bignumber": "^5.7.0" } @@ -433,6 +449,7 @@ "version": "5.7.0", "resolved": "https://registry.npmmirror.com/@ethersproject/contracts/-/contracts-5.7.0.tgz", "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", + "dev": true, "dependencies": { "@ethersproject/abi": "^5.7.0", "@ethersproject/abstract-provider": "^5.7.0", @@ -450,6 +467,7 @@ "version": "5.7.0", "resolved": "https://registry.npmmirror.com/@ethersproject/hash/-/hash-5.7.0.tgz", "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "dev": true, "dependencies": { "@ethersproject/abstract-signer": "^5.7.0", "@ethersproject/address": "^5.7.0", @@ -466,6 +484,7 @@ "version": "5.7.0", "resolved": "https://registry.npmmirror.com/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", + "dev": true, "dependencies": { "@ethersproject/abstract-signer": "^5.7.0", "@ethersproject/basex": "^5.7.0", @@ -485,6 +504,7 @@ "version": "5.7.0", "resolved": "https://registry.npmmirror.com/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", + "dev": true, "dependencies": { "@ethersproject/abstract-signer": "^5.7.0", "@ethersproject/address": "^5.7.0", @@ -504,12 +524,14 @@ "node_modules/@ethersproject/json-wallets/node_modules/aes-js": { "version": "3.0.0", "resolved": "https://registry.npmmirror.com/aes-js/-/aes-js-3.0.0.tgz", - "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==" + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", + "dev": true }, "node_modules/@ethersproject/keccak256": { "version": "5.7.0", "resolved": "https://registry.npmmirror.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "dev": true, "dependencies": { "@ethersproject/bytes": "^5.7.0", "js-sha3": "0.8.0" @@ -518,12 +540,14 @@ "node_modules/@ethersproject/logger": { "version": "5.7.0", "resolved": "https://registry.npmmirror.com/@ethersproject/logger/-/logger-5.7.0.tgz", - "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "dev": true }, "node_modules/@ethersproject/networks": { "version": "5.7.1", "resolved": "https://registry.npmmirror.com/@ethersproject/networks/-/networks-5.7.1.tgz", "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "dev": true, "dependencies": { "@ethersproject/logger": "^5.7.0" } @@ -532,6 +556,7 @@ "version": "5.7.0", "resolved": "https://registry.npmmirror.com/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "dev": true, "dependencies": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/sha2": "^5.7.0" @@ -541,6 +566,7 @@ "version": "5.7.0", "resolved": "https://registry.npmmirror.com/@ethersproject/properties/-/properties-5.7.0.tgz", "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "dev": true, "dependencies": { "@ethersproject/logger": "^5.7.0" } @@ -549,6 +575,7 @@ "version": "5.7.2", "resolved": "https://registry.npmmirror.com/@ethersproject/providers/-/providers-5.7.2.tgz", "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", + "dev": true, "dependencies": { "@ethersproject/abstract-provider": "^5.7.0", "@ethersproject/abstract-signer": "^5.7.0", @@ -576,6 +603,7 @@ "version": "7.4.6", "resolved": "https://registry.npmmirror.com/ws/-/ws-7.4.6.tgz", "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "dev": true, "engines": { "node": ">=8.3.0" }, @@ -596,6 +624,7 @@ "version": "5.7.0", "resolved": "https://registry.npmmirror.com/@ethersproject/random/-/random-5.7.0.tgz", "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", + "dev": true, "dependencies": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/logger": "^5.7.0" @@ -605,6 +634,7 @@ "version": "5.7.0", "resolved": "https://registry.npmmirror.com/@ethersproject/rlp/-/rlp-5.7.0.tgz", "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "dev": true, "dependencies": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/logger": "^5.7.0" @@ -614,6 +644,7 @@ "version": "5.7.0", "resolved": "https://registry.npmmirror.com/@ethersproject/sha2/-/sha2-5.7.0.tgz", "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "dev": true, "dependencies": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/logger": "^5.7.0", @@ -624,6 +655,7 @@ "version": "5.7.0", "resolved": "https://registry.npmmirror.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "dev": true, "dependencies": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/logger": "^5.7.0", @@ -637,6 +669,7 @@ "version": "5.7.0", "resolved": "https://registry.npmmirror.com/@ethersproject/solidity/-/solidity-5.7.0.tgz", "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", + "dev": true, "dependencies": { "@ethersproject/bignumber": "^5.7.0", "@ethersproject/bytes": "^5.7.0", @@ -650,6 +683,7 @@ "version": "5.7.0", "resolved": "https://registry.npmmirror.com/@ethersproject/strings/-/strings-5.7.0.tgz", "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "dev": true, "dependencies": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/constants": "^5.7.0", @@ -660,6 +694,7 @@ "version": "5.7.0", "resolved": "https://registry.npmmirror.com/@ethersproject/transactions/-/transactions-5.7.0.tgz", "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "dev": true, "dependencies": { "@ethersproject/address": "^5.7.0", "@ethersproject/bignumber": "^5.7.0", @@ -676,6 +711,7 @@ "version": "5.7.0", "resolved": "https://registry.npmmirror.com/@ethersproject/units/-/units-5.7.0.tgz", "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", + "dev": true, "dependencies": { "@ethersproject/bignumber": "^5.7.0", "@ethersproject/constants": "^5.7.0", @@ -686,6 +722,7 @@ "version": "5.7.0", "resolved": "https://registry.npmmirror.com/@ethersproject/wallet/-/wallet-5.7.0.tgz", "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", + "dev": true, "dependencies": { "@ethersproject/abstract-provider": "^5.7.0", "@ethersproject/abstract-signer": "^5.7.0", @@ -708,6 +745,7 @@ "version": "5.7.1", "resolved": "https://registry.npmmirror.com/@ethersproject/web/-/web-5.7.1.tgz", "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "dev": true, "dependencies": { "@ethersproject/base64": "^5.7.0", "@ethersproject/bytes": "^5.7.0", @@ -720,6 +758,7 @@ "version": "5.7.0", "resolved": "https://registry.npmmirror.com/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", + "dev": true, "dependencies": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/hash": "^5.7.0", @@ -732,6 +771,7 @@ "version": "2.1.1", "resolved": "https://registry.npmmirror.com/@fastify/busboy/-/busboy-2.1.1.tgz", "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", + "dev": true, "engines": { "node": ">=14" } @@ -850,7 +890,7 @@ "version": "3.1.2", "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "devOptional": true, + "dev": true, "peer": true, "engines": { "node": ">=6.0.0" @@ -860,14 +900,14 @@ "version": "1.4.15", "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "devOptional": true, + "dev": true, "peer": true }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.9", "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "devOptional": true, + "dev": true, "peer": true, "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", @@ -1002,6 +1042,7 @@ "version": "4.0.1", "resolved": "https://registry.npmmirror.com/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz", "integrity": "sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==", + "dev": true, "dependencies": { "ethereumjs-abi": "^0.6.8", "ethereumjs-util": "^6.2.1", @@ -1017,6 +1058,7 @@ "version": "4.11.6", "resolved": "https://registry.npmmirror.com/@types/bn.js/-/bn.js-4.11.6.tgz", "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "dev": true, "dependencies": { "@types/node": "*" } @@ -1024,12 +1066,14 @@ "node_modules/@metamask/eth-sig-util/node_modules/bn.js": { "version": "4.12.0", "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true }, "node_modules/@metamask/eth-sig-util/node_modules/ethereumjs-util": { "version": "6.2.1", "resolved": "https://registry.npmmirror.com/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "dev": true, "dependencies": { "@types/bn.js": "^4.11.3", "bn.js": "^4.11.0", @@ -1044,6 +1088,7 @@ "version": "1.2.0", "resolved": "https://registry.npmmirror.com/@noble/curves/-/curves-1.2.0.tgz", "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "dev": true, "dependencies": { "@noble/hashes": "1.3.2" } @@ -1052,6 +1097,7 @@ "version": "1.3.2", "resolved": "https://registry.npmmirror.com/@noble/hashes/-/hashes-1.3.2.tgz", "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", + "dev": true, "engines": { "node": ">= 16" } @@ -1059,7 +1105,8 @@ "node_modules/@noble/secp256k1": { "version": "1.7.1", "resolved": "https://registry.npmmirror.com/@noble/secp256k1/-/secp256k1-1.7.1.tgz", - "integrity": "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==" + "integrity": "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==", + "dev": true }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", @@ -1097,31 +1144,33 @@ } }, "node_modules/@nomicfoundation/edr": { - "version": "0.3.2", - "resolved": "https://registry.npmmirror.com/@nomicfoundation/edr/-/edr-0.3.2.tgz", - "integrity": "sha512-HGWtjibAK1mo4I2A7nJ/fXqe/J9G54OrSPJnnkY2K8TiXotYLShGd9GvHkae3PuFjTJKm6ZgBy7tveJj5yrCfw==", + "version": "0.3.3", + "resolved": "https://registry.npmmirror.com/@nomicfoundation/edr/-/edr-0.3.3.tgz", + "integrity": "sha512-zP+e+3B1nEUx6bW5BPnIzCQbkhmYfdMBJdiVggTqqTfAA82sOkdOG7wsOMcz5qF3fYfx/irNRM1kgc9HVFIbpQ==", + "dev": true, "engines": { "node": ">= 18" }, "optionalDependencies": { - "@nomicfoundation/edr-darwin-arm64": "0.3.2", - "@nomicfoundation/edr-darwin-x64": "0.3.2", - "@nomicfoundation/edr-linux-arm64-gnu": "0.3.2", - "@nomicfoundation/edr-linux-arm64-musl": "0.3.2", - "@nomicfoundation/edr-linux-x64-gnu": "0.3.2", - "@nomicfoundation/edr-linux-x64-musl": "0.3.2", - "@nomicfoundation/edr-win32-arm64-msvc": "0.3.2", - "@nomicfoundation/edr-win32-ia32-msvc": "0.3.2", - "@nomicfoundation/edr-win32-x64-msvc": "0.3.2" + "@nomicfoundation/edr-darwin-arm64": "0.3.3", + "@nomicfoundation/edr-darwin-x64": "0.3.3", + "@nomicfoundation/edr-linux-arm64-gnu": "0.3.3", + "@nomicfoundation/edr-linux-arm64-musl": "0.3.3", + "@nomicfoundation/edr-linux-x64-gnu": "0.3.3", + "@nomicfoundation/edr-linux-x64-musl": "0.3.3", + "@nomicfoundation/edr-win32-arm64-msvc": "0.3.3", + "@nomicfoundation/edr-win32-ia32-msvc": "0.3.3", + "@nomicfoundation/edr-win32-x64-msvc": "0.3.3" } }, "node_modules/@nomicfoundation/edr-darwin-arm64": { - "version": "0.3.2", - "resolved": "https://registry.npmmirror.com/@nomicfoundation/edr-darwin-arm64/-/edr-darwin-arm64-0.3.2.tgz", - "integrity": "sha512-l6wfSBUUbGJiCENT6272CDI8yoMuf0sZH56H5qz3HnAyVzenkOvmzyF6/lar54m986kdAQqWls4cLvDxiOuLxg==", + "version": "0.3.3", + "resolved": "https://registry.npmmirror.com/@nomicfoundation/edr-darwin-arm64/-/edr-darwin-arm64-0.3.3.tgz", + "integrity": "sha512-E9VGsUD+1Ga4mn/5ooHsMi8JEfhZbKP6CXN/BhJ8kXbIC10NqTD1RuhCKGRtYq4vqH/3Nfq25Xg8E8RWOF4KBQ==", "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "darwin" @@ -1131,12 +1180,13 @@ } }, "node_modules/@nomicfoundation/edr-darwin-x64": { - "version": "0.3.2", - "resolved": "https://registry.npmmirror.com/@nomicfoundation/edr-darwin-x64/-/edr-darwin-x64-0.3.2.tgz", - "integrity": "sha512-OboExL7vEw+TRJQl3KkaEKU4K7PTdZPTInZ0fxMAtOpcWp7EKR+dQo68vc/iAOusB3xszHKxt7t+WpisItfdcg==", + "version": "0.3.3", + "resolved": "https://registry.npmmirror.com/@nomicfoundation/edr-darwin-x64/-/edr-darwin-x64-0.3.3.tgz", + "integrity": "sha512-vkZXZ1ydPg+Ijb2iyqENA+KCkxGTCUWG5itCSliiA0Li2YE7ujDMGhheEpFp1WVlZadviz0bfk1rZXbCqlirpg==", "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "darwin" @@ -1146,12 +1196,13 @@ } }, "node_modules/@nomicfoundation/edr-linux-arm64-gnu": { - "version": "0.3.2", - "resolved": "https://registry.npmmirror.com/@nomicfoundation/edr-linux-arm64-gnu/-/edr-linux-arm64-gnu-0.3.2.tgz", - "integrity": "sha512-xtEK+1eg++3pHi6405NDXd80S3CGOFEGQIyVGCwjMGQFOLSzBGGCsrb/0GB4J19zd1o/8ftCd/HjZcbVAWWTLQ==", + "version": "0.3.3", + "resolved": "https://registry.npmmirror.com/@nomicfoundation/edr-linux-arm64-gnu/-/edr-linux-arm64-gnu-0.3.3.tgz", + "integrity": "sha512-gdIg0Yj1qqS9wVuywc5B/+DqKylfUGB6/CQn/shMqwAfsAVAVpchkhy66PR+REEx7fh/GkNctxLlENXPeLzDiA==", "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -1161,12 +1212,13 @@ } }, "node_modules/@nomicfoundation/edr-linux-arm64-musl": { - "version": "0.3.2", - "resolved": "https://registry.npmmirror.com/@nomicfoundation/edr-linux-arm64-musl/-/edr-linux-arm64-musl-0.3.2.tgz", - "integrity": "sha512-3cIsskJOXQ1yEVsImmCacY7O03tUTiWrmd54F05PnPFrDLkjbzodQ3b2gUWzfbzUZWl67ZTJd1CvVSzpe7XGzw==", + "version": "0.3.3", + "resolved": "https://registry.npmmirror.com/@nomicfoundation/edr-linux-arm64-musl/-/edr-linux-arm64-musl-0.3.3.tgz", + "integrity": "sha512-AXZ08MFvhNeBZbOBNmz1SJ/DMrMOE2mHEJtaNnsctlxIunjxfrWww4q+WXB34jbr9iaVYYlPsaWe5sueuw6s3Q==", "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -1176,12 +1228,13 @@ } }, "node_modules/@nomicfoundation/edr-linux-x64-gnu": { - "version": "0.3.2", - "resolved": "https://registry.npmmirror.com/@nomicfoundation/edr-linux-x64-gnu/-/edr-linux-x64-gnu-0.3.2.tgz", - "integrity": "sha512-ouPdphHNsyO7wqwa4hwahC5WqBglK/fIvMmhR/SXNZ9qruIpsA8ZZKIURaHMOv/2h2BbNGcyTX9uEk6+5rK/MQ==", + "version": "0.3.3", + "resolved": "https://registry.npmmirror.com/@nomicfoundation/edr-linux-x64-gnu/-/edr-linux-x64-gnu-0.3.3.tgz", + "integrity": "sha512-xElOs1U+E6lBLtv1mnJ+E8nr2MxZgKiLo8bZAgBboy9odYtmkDVwhMjtsFKSuZbGxFtsSyGRT4cXw3JAbtUDeA==", "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -1191,12 +1244,13 @@ } }, "node_modules/@nomicfoundation/edr-linux-x64-musl": { - "version": "0.3.2", - "resolved": "https://registry.npmmirror.com/@nomicfoundation/edr-linux-x64-musl/-/edr-linux-x64-musl-0.3.2.tgz", - "integrity": "sha512-sRhwhiPbkpJMOUwXW1FZw9ks6xWyQhIhM0E8o3TXEXKSPKTE6whQLEk1R37iFITaI36vb6rSwLKTU1cb32gCoA==", + "version": "0.3.3", + "resolved": "https://registry.npmmirror.com/@nomicfoundation/edr-linux-x64-musl/-/edr-linux-x64-musl-0.3.3.tgz", + "integrity": "sha512-2Fe6gwm1RAGQ/PfMYiaSba2OrFp8zzYWh+am9lYObOFjV9D+A1zhIzfy0UC74glPks5eV8eY4pBPrVR042m2Nw==", "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -1206,12 +1260,13 @@ } }, "node_modules/@nomicfoundation/edr-win32-arm64-msvc": { - "version": "0.3.2", - "resolved": "https://registry.npmmirror.com/@nomicfoundation/edr-win32-arm64-msvc/-/edr-win32-arm64-msvc-0.3.2.tgz", - "integrity": "sha512-IEwVealKfumu1HSSnama26yPuQC/uthRPK5IWtFsQUOGwOXaS1r9Bu7cGYH2jBHl3IT/JbxD4xzPq/2pM9uK0A==", + "version": "0.3.3", + "resolved": "https://registry.npmmirror.com/@nomicfoundation/edr-win32-arm64-msvc/-/edr-win32-arm64-msvc-0.3.3.tgz", + "integrity": "sha512-8NHyxIsFrl0ufSQ/ErqF2lKIa/gz1gaaa1a2vKkDEqvqCUcPhBTYhA5NHgTPhLETFTnCFr0z+YbctFCyjh4qrA==", "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "win32" @@ -1221,12 +1276,13 @@ } }, "node_modules/@nomicfoundation/edr-win32-ia32-msvc": { - "version": "0.3.2", - "resolved": "https://registry.npmmirror.com/@nomicfoundation/edr-win32-ia32-msvc/-/edr-win32-ia32-msvc-0.3.2.tgz", - "integrity": "sha512-jYMnf6SFgguqROswwdsjJ1wvneD/5c16pVu9OD4DxNqhKNP5bHEw6L2N4DcJ89tpXMpJ6AlOpc0QuwzddiZ3tA==", + "version": "0.3.3", + "resolved": "https://registry.npmmirror.com/@nomicfoundation/edr-win32-ia32-msvc/-/edr-win32-ia32-msvc-0.3.3.tgz", + "integrity": "sha512-0F6hM0kGia4dQVb/kauho9JcP1ozWisY2/She+ISR5ceuhzmAwQJluM0g+0TYDME0LtxBxiMPq/yPiZMQeq31w==", "cpu": [ "ia32" ], + "dev": true, "optional": true, "os": [ "win32" @@ -1236,12 +1292,13 @@ } }, "node_modules/@nomicfoundation/edr-win32-x64-msvc": { - "version": "0.3.2", - "resolved": "https://registry.npmmirror.com/@nomicfoundation/edr-win32-x64-msvc/-/edr-win32-x64-msvc-0.3.2.tgz", - "integrity": "sha512-Byn4QuWczRy/DUUQM3WjglgX/jGVUURVFaUsmIhnGg//MPlCLawubBGRqsrMuvaYedlIIJ4I2rgKvZlxdgHrqg==", + "version": "0.3.3", + "resolved": "https://registry.npmmirror.com/@nomicfoundation/edr-win32-x64-msvc/-/edr-win32-x64-msvc-0.3.3.tgz", + "integrity": "sha512-d75q1uaMb6z9i+GQZoblbOfFBvlBnWc+5rB13UWRkCOJSnoYwyFWhGJx5GeM59gC7aIblc5VD9qOAhHuvM9N+w==", "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "win32" @@ -1254,6 +1311,7 @@ "version": "4.0.4", "resolved": "https://registry.npmmirror.com/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.4.tgz", "integrity": "sha512-9Rgb658lcWsjiicr5GzNCjI1llow/7r0k50dLL95OJ+6iZJcVbi15r3Y0xh2cIO+zgX0WIHcbzIu6FeQf9KPrg==", + "dev": true, "dependencies": { "@nomicfoundation/ethereumjs-util": "9.0.4" } @@ -1262,6 +1320,7 @@ "version": "5.0.4", "resolved": "https://registry.npmmirror.com/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.4.tgz", "integrity": "sha512-8H1S3s8F6QueOc/X92SdrA4RDenpiAEqMg5vJH99kcQaCy/a3Q6fgseo75mgWlbanGJXSlAPtnCeG9jvfTYXlw==", + "dev": true, "bin": { "rlp": "bin/rlp.cjs" }, @@ -1273,6 +1332,7 @@ "version": "5.0.4", "resolved": "https://registry.npmmirror.com/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.4.tgz", "integrity": "sha512-Xjv8wAKJGMrP1f0n2PeyfFCCojHd7iS3s/Ab7qzF1S64kxZ8Z22LCMynArYsVqiFx6rzYy548HNVEyI+AYN/kw==", + "dev": true, "dependencies": { "@nomicfoundation/ethereumjs-common": "4.0.4", "@nomicfoundation/ethereumjs-rlp": "5.0.4", @@ -1295,6 +1355,7 @@ "version": "9.0.4", "resolved": "https://registry.npmmirror.com/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.4.tgz", "integrity": "sha512-sLOzjnSrlx9Bb9EFNtHzK/FJFsfg2re6bsGqinFinH1gCqVfz9YYlXiMWwDM4C/L4ywuHFCYwfKTVr/QHQcU0Q==", + "dev": true, "dependencies": { "@nomicfoundation/ethereumjs-rlp": "5.0.4", "ethereum-cryptography": "0.1.3" @@ -1334,6 +1395,7 @@ "version": "3.0.5", "resolved": "https://registry.npmmirror.com/@nomicfoundation/hardhat-ethers/-/hardhat-ethers-3.0.5.tgz", "integrity": "sha512-RNFe8OtbZK6Ila9kIlHp0+S80/0Bu/3p41HUpaRIoHLm6X3WekTd83vob3rE54Duufu1edCiBDxspBzi2rxHHw==", + "dev": true, "peer": true, "dependencies": { "debug": "^4.1.1", @@ -1386,7 +1448,7 @@ "version": "2.0.5", "resolved": "https://registry.npmmirror.com/@nomicfoundation/hardhat-verify/-/hardhat-verify-2.0.5.tgz", "integrity": "sha512-Tg4zu8RkWpyADSFIgF4FlJIUEI4VkxcvELsmbJn2OokbvH2SnUrqKmw0BBfDrtvP0hhmx8wsnrRKP5DV/oTyTA==", - "devOptional": true, + "dev": true, "dependencies": { "@ethersproject/abi": "^5.1.2", "@ethersproject/address": "^5.0.2", @@ -1406,7 +1468,7 @@ "version": "3.2.1", "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "devOptional": true, + "dev": true, "dependencies": { "color-convert": "^1.9.0" }, @@ -1418,7 +1480,7 @@ "version": "2.4.2", "resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "devOptional": true, + "dev": true, "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -1432,7 +1494,7 @@ "version": "1.9.3", "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "devOptional": true, + "dev": true, "dependencies": { "color-name": "1.1.3" } @@ -1441,13 +1503,13 @@ "version": "1.1.3", "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz", "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "devOptional": true + "dev": true }, "node_modules/@nomicfoundation/hardhat-verify/node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "devOptional": true, + "dev": true, "engines": { "node": ">=0.8.0" } @@ -1456,7 +1518,7 @@ "version": "3.0.0", "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "devOptional": true, + "dev": true, "engines": { "node": ">=4" } @@ -1465,7 +1527,7 @@ "version": "6.3.1", "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "devOptional": true, + "dev": true, "bin": { "semver": "bin/semver.js" } @@ -1474,7 +1536,7 @@ "version": "5.5.0", "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "devOptional": true, + "dev": true, "dependencies": { "has-flag": "^3.0.0" }, @@ -1486,6 +1548,7 @@ "version": "0.1.1", "resolved": "https://registry.npmmirror.com/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.1.tgz", "integrity": "sha512-1LMtXj1puAxyFusBgUIy5pZk3073cNXYnXUpuNKFghHbIit/xZgbk0AokpUADbNm3gyD6bFWl3LRFh3dhVdREg==", + "dev": true, "engines": { "node": ">= 12" }, @@ -1509,6 +1572,7 @@ "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "darwin" @@ -1524,6 +1588,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "darwin" @@ -1539,6 +1604,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "freebsd" @@ -1554,6 +1620,7 @@ "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -1569,6 +1636,7 @@ "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -1584,6 +1652,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -1599,6 +1668,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -1614,6 +1684,7 @@ "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "win32" @@ -1629,6 +1700,7 @@ "cpu": [ "ia32" ], + "dev": true, "optional": true, "os": [ "win32" @@ -1644,6 +1716,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "win32" @@ -1887,6 +1960,7 @@ "version": "1.54.1", "resolved": "https://registry.npmmirror.com/@openzeppelin/defender-admin-client/-/defender-admin-client-1.54.1.tgz", "integrity": "sha512-kRpSUdTsnSqntp4FOXIm95t+6VKHc8CUY2Si71VDuxs0q7HSPZkdpRPSntcolwEzWy9L4a8NS/QMwDF5NJ4X1g==", + "dev": true, "dependencies": { "@openzeppelin/defender-base-client": "1.54.1", "axios": "^1.4.0", @@ -1899,6 +1973,7 @@ "version": "5.7.2", "resolved": "https://registry.npmmirror.com/ethers/-/ethers-5.7.2.tgz", "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "dev": true, "dependencies": { "@ethersproject/abi": "5.7.0", "@ethersproject/abstract-provider": "5.7.0", @@ -1936,6 +2011,7 @@ "version": "1.54.1", "resolved": "https://registry.npmmirror.com/@openzeppelin/defender-base-client/-/defender-base-client-1.54.1.tgz", "integrity": "sha512-DRGz/7KN3ZQwu28YWMOaojrC7jjPkz/uCwkC8/C8B11qwZhA5qIVvyhYHhhFOCl0J84+E3TNdvkPD2q3p2WaJw==", + "dev": true, "dependencies": { "amazon-cognito-identity-js": "^6.0.1", "async-retry": "^1.3.3", @@ -1948,6 +2024,7 @@ "version": "1.11.0", "resolved": "https://registry.npmmirror.com/@openzeppelin/defender-sdk-base-client/-/defender-sdk-base-client-1.11.0.tgz", "integrity": "sha512-HNcbRhbcMZZM5Ri5IfUwJaiJZGIrc0yboRZRlXJfG2aFS/EMfUFnQHC0tyyXtCOAoAZcn+iMlsSj5h8CoUeCfw==", + "dev": true, "dependencies": { "amazon-cognito-identity-js": "^6.3.6", "async-retry": "^1.3.3" @@ -1957,6 +2034,7 @@ "version": "1.11.0", "resolved": "https://registry.npmmirror.com/@openzeppelin/defender-sdk-deploy-client/-/defender-sdk-deploy-client-1.11.0.tgz", "integrity": "sha512-ELYVihsrTOlH7Sy5C/+Yf64hV3ICeTY2OcczOWVQ/o6rHBWKSnHSZCE/oB1cfOpyg/gCrCLXozs4NyrS5z3GUw==", + "dev": true, "dependencies": { "@openzeppelin/defender-sdk-base-client": "^1.11.0", "axios": "^1.6.7", @@ -1967,6 +2045,7 @@ "version": "1.11.0", "resolved": "https://registry.npmmirror.com/@openzeppelin/defender-sdk-network-client/-/defender-sdk-network-client-1.11.0.tgz", "integrity": "sha512-CPy1TA6RyFYtACbvXZJhJpsYW2u4yxTSNU8cVIw1lH/9iArXzfWuJ2p8Deidc0sJBbMeJYkv1AvqTBJNifjKMg==", + "dev": true, "dependencies": { "@openzeppelin/defender-sdk-base-client": "^1.11.0", "axios": "^1.6.7", @@ -1977,6 +2056,7 @@ "version": "3.0.5", "resolved": "https://registry.npmmirror.com/@openzeppelin/hardhat-upgrades/-/hardhat-upgrades-3.0.5.tgz", "integrity": "sha512-7Klg1B6fH45+7Zxzr6d9mLqudrL9Uk6CUG5AeG5NckPfP4ZlQRo1squcQ8yJPwqDS8rQjfChiqKDelp4LTjyZQ==", + "dev": true, "dependencies": { "@openzeppelin/defender-admin-client": "^1.52.0", "@openzeppelin/defender-base-client": "^1.52.0", @@ -2006,9 +2086,10 @@ } }, "node_modules/@openzeppelin/hardhat-upgrades/node_modules/undici": { - "version": "6.9.0", - "resolved": "https://registry.npmmirror.com/undici/-/undici-6.9.0.tgz", - "integrity": "sha512-XPWfXzJedevUziHwun70EKNvGnxv4CnfraFZ4f/JV01+fcvMYzHE26r/j8AY/9c/70nkN4B1zX7E2Oyuqwz4+Q==", + "version": "6.10.2", + "resolved": "https://registry.npmmirror.com/undici/-/undici-6.10.2.tgz", + "integrity": "sha512-HcVuBy7ACaDejIMdwCzAvO22OsiE6ir6ziTIr9kAE0vB+PheVe29ZvRN8p7FXCO2uZHTjEoUs5bPiFpuc/hwwQ==", + "dev": true, "engines": { "node": ">=18.0" } @@ -2017,6 +2098,7 @@ "version": "1.32.5", "resolved": "https://registry.npmmirror.com/@openzeppelin/upgrades-core/-/upgrades-core-1.32.5.tgz", "integrity": "sha512-R0wprsyJ4xWiRW05kaTfZZkRVpG2g0af3/hpjE7t2mX0Eb2n40MQLokTwqIk4LDzpp910JfLSpB0vBuZ6WNPog==", + "dev": true, "dependencies": { "cbor": "^9.0.0", "chalk": "^4.1.0", @@ -2035,6 +2117,7 @@ "version": "9.0.2", "resolved": "https://registry.npmmirror.com/cbor/-/cbor-9.0.2.tgz", "integrity": "sha512-JPypkxsB10s9QOWwa6zwPzqE1Md3vqpPc+cai4sAecuCsRyAtAl/pMyhPlMbT/xtPnm2dznJZYRLui57qiRhaQ==", + "dev": true, "dependencies": { "nofilter": "^3.1.0" }, @@ -2096,7 +2179,8 @@ "node_modules/@scure/base": { "version": "1.1.6", "resolved": "https://registry.npmmirror.com/@scure/base/-/base-1.1.6.tgz", - "integrity": "sha512-ok9AWwhcgYuGG3Zfhyqg+zwl+Wn5uE+dwC0NV/2qQkx4dABbb/bx96vWu8NSj+BNjjSjno+JRYRjle1jV08k3g==" + "integrity": "sha512-ok9AWwhcgYuGG3Zfhyqg+zwl+Wn5uE+dwC0NV/2qQkx4dABbb/bx96vWu8NSj+BNjjSjno+JRYRjle1jV08k3g==", + "dev": true }, "node_modules/@scure/bip32": { "version": "1.3.3", @@ -2141,6 +2225,7 @@ "version": "5.30.0", "resolved": "https://registry.npmmirror.com/@sentry/core/-/core-5.30.0.tgz", "integrity": "sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==", + "dev": true, "dependencies": { "@sentry/hub": "5.30.0", "@sentry/minimal": "5.30.0", @@ -2156,6 +2241,7 @@ "version": "5.30.0", "resolved": "https://registry.npmmirror.com/@sentry/hub/-/hub-5.30.0.tgz", "integrity": "sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==", + "dev": true, "dependencies": { "@sentry/types": "5.30.0", "@sentry/utils": "5.30.0", @@ -2169,6 +2255,7 @@ "version": "5.30.0", "resolved": "https://registry.npmmirror.com/@sentry/minimal/-/minimal-5.30.0.tgz", "integrity": "sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==", + "dev": true, "dependencies": { "@sentry/hub": "5.30.0", "@sentry/types": "5.30.0", @@ -2182,6 +2269,7 @@ "version": "5.30.0", "resolved": "https://registry.npmmirror.com/@sentry/node/-/node-5.30.0.tgz", "integrity": "sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==", + "dev": true, "dependencies": { "@sentry/core": "5.30.0", "@sentry/hub": "5.30.0", @@ -2201,6 +2289,7 @@ "version": "5.30.0", "resolved": "https://registry.npmmirror.com/@sentry/tracing/-/tracing-5.30.0.tgz", "integrity": "sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==", + "dev": true, "dependencies": { "@sentry/hub": "5.30.0", "@sentry/minimal": "5.30.0", @@ -2216,6 +2305,7 @@ "version": "5.30.0", "resolved": "https://registry.npmmirror.com/@sentry/types/-/types-5.30.0.tgz", "integrity": "sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==", + "dev": true, "engines": { "node": ">=6" } @@ -2224,6 +2314,7 @@ "version": "5.30.0", "resolved": "https://registry.npmmirror.com/@sentry/utils/-/utils-5.30.0.tgz", "integrity": "sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==", + "dev": true, "dependencies": { "@sentry/types": "5.30.0", "tslib": "^1.9.3" @@ -2289,6 +2380,7 @@ "version": "2.12.0", "resolved": "https://registry.npmmirror.com/@smithy/types/-/types-2.12.0.tgz", "integrity": "sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw==", + "dev": true, "dependencies": { "tslib": "^2.6.2" }, @@ -2299,7 +2391,8 @@ "node_modules/@smithy/types/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@solidity-parser/parser": { "version": "0.14.5", @@ -2368,31 +2461,31 @@ } }, "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmmirror.com/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "devOptional": true, + "version": "1.0.11", + "resolved": "https://registry.npmmirror.com/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", + "dev": true, "peer": true }, "node_modules/@tsconfig/node12": { "version": "1.0.11", "resolved": "https://registry.npmmirror.com/@tsconfig/node12/-/node12-1.0.11.tgz", "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "devOptional": true, + "dev": true, "peer": true }, "node_modules/@tsconfig/node14": { "version": "1.0.3", "resolved": "https://registry.npmmirror.com/@tsconfig/node14/-/node14-1.0.3.tgz", "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "devOptional": true, + "dev": true, "peer": true }, "node_modules/@tsconfig/node16": { "version": "1.0.4", "resolved": "https://registry.npmmirror.com/@tsconfig/node16/-/node16-1.0.4.tgz", "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", - "devOptional": true, + "dev": true, "peer": true }, "node_modules/@typechain/ethers-v6": { @@ -2447,6 +2540,7 @@ "version": "5.1.5", "resolved": "https://registry.npmmirror.com/@types/bn.js/-/bn.js-5.1.5.tgz", "integrity": "sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==", + "dev": true, "dependencies": { "@types/node": "*" } @@ -2505,7 +2599,8 @@ "node_modules/@types/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmmirror.com/@types/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==" + "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==", + "dev": true }, "node_modules/@types/minimatch": { "version": "5.1.2", @@ -2524,6 +2619,7 @@ "version": "20.11.30", "resolved": "https://registry.npmmirror.com/@types/node/-/node-20.11.30.tgz", "integrity": "sha512-dHM6ZxwlmuZaRmUPfv1p+KrdD1Dci04FbdEm/9wEMouFqxYoFl5aMkt0VMAUtYRQDyYvD41WJLukhq/ha3YuTw==", + "dev": true, "dependencies": { "undici-types": "~5.26.4" } @@ -2532,6 +2628,7 @@ "version": "3.1.2", "resolved": "https://registry.npmmirror.com/@types/pbkdf2/-/pbkdf2-3.1.2.tgz", "integrity": "sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==", + "dev": true, "dependencies": { "@types/node": "*" } @@ -2553,6 +2650,7 @@ "version": "4.0.6", "resolved": "https://registry.npmmirror.com/@types/secp256k1/-/secp256k1-4.0.6.tgz", "integrity": "sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==", + "dev": true, "dependencies": { "@types/node": "*" } @@ -2573,7 +2671,7 @@ "version": "8.11.3", "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.11.3.tgz", "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", - "devOptional": true, + "dev": true, "bin": { "acorn": "bin/acorn" }, @@ -2594,7 +2692,7 @@ "version": "8.3.2", "resolved": "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-8.3.2.tgz", "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", - "devOptional": true, + "dev": true, "peer": true, "engines": { "node": ">=0.4.0" @@ -2604,6 +2702,7 @@ "version": "0.4.16", "resolved": "https://registry.npmmirror.com/adm-zip/-/adm-zip-0.4.16.tgz", "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", + "dev": true, "engines": { "node": ">=0.3.0" } @@ -2611,12 +2710,14 @@ "node_modules/aes-js": { "version": "4.0.0-beta.5", "resolved": "https://registry.npmmirror.com/aes-js/-/aes-js-4.0.0-beta.5.tgz", - "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==" + "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==", + "dev": true }, "node_modules/agent-base": { "version": "6.0.2", "resolved": "https://registry.npmmirror.com/agent-base/-/agent-base-6.0.2.tgz", "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, "dependencies": { "debug": "4" }, @@ -2628,6 +2729,7 @@ "version": "3.1.0", "resolved": "https://registry.npmmirror.com/aggregate-error/-/aggregate-error-3.1.0.tgz", "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -2652,6 +2754,7 @@ "version": "6.3.12", "resolved": "https://registry.npmmirror.com/amazon-cognito-identity-js/-/amazon-cognito-identity-js-6.3.12.tgz", "integrity": "sha512-s7NKDZgx336cp+oDeUtB2ZzT8jWJp/v2LWuYl+LQtMEODe22RF1IJ4nRiDATp+rp1pTffCZcm44Quw4jx2bqNg==", + "dev": true, "dependencies": { "@aws-crypto/sha256-js": "1.2.2", "buffer": "4.9.2", @@ -2674,6 +2777,7 @@ "version": "3.0.1", "resolved": "https://registry.npmmirror.com/ansi-align/-/ansi-align-3.0.1.tgz", "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "dev": true, "dependencies": { "string-width": "^4.1.0" } @@ -2682,6 +2786,7 @@ "version": "4.1.3", "resolved": "https://registry.npmmirror.com/ansi-colors/-/ansi-colors-4.1.3.tgz", "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, "engines": { "node": ">=6" } @@ -2690,6 +2795,7 @@ "version": "4.3.2", "resolved": "https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, "dependencies": { "type-fest": "^0.21.3" }, @@ -2701,6 +2807,7 @@ "version": "0.21.3", "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.21.3.tgz", "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, "engines": { "node": ">=10" } @@ -2709,6 +2816,7 @@ "version": "5.0.1", "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, "engines": { "node": ">=8" } @@ -2717,6 +2825,7 @@ "version": "4.3.0", "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -2743,6 +2852,7 @@ "version": "3.1.3", "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -2755,13 +2865,14 @@ "version": "4.1.3", "resolved": "https://registry.npmmirror.com/arg/-/arg-4.1.3.tgz", "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "devOptional": true, + "dev": true, "peer": true }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, "node_modules/array-back": { "version": "3.1.0", @@ -2777,6 +2888,7 @@ "version": "1.0.1", "resolved": "https://registry.npmmirror.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, "dependencies": { "call-bind": "^1.0.5", "is-array-buffer": "^3.0.4" @@ -2807,6 +2919,7 @@ "version": "1.2.5", "resolved": "https://registry.npmmirror.com/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -2823,6 +2936,7 @@ "version": "1.0.3", "resolved": "https://registry.npmmirror.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, "dependencies": { "array-buffer-byte-length": "^1.0.1", "call-bind": "^1.0.5", @@ -2871,7 +2985,7 @@ "version": "2.0.0", "resolved": "https://registry.npmmirror.com/astral-regex/-/astral-regex-2.0.0.tgz", "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "devOptional": true, + "dev": true, "engines": { "node": ">=8" } @@ -2886,6 +3000,7 @@ "version": "1.3.3", "resolved": "https://registry.npmmirror.com/async-retry/-/async-retry-1.3.3.tgz", "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==", + "dev": true, "dependencies": { "retry": "0.13.1" } @@ -2893,7 +3008,8 @@ "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true }, "node_modules/at-least-node": { "version": "1.0.0", @@ -2909,6 +3025,7 @@ "version": "1.0.7", "resolved": "https://registry.npmmirror.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, "dependencies": { "possible-typed-array-names": "^1.0.0" }, @@ -2920,6 +3037,7 @@ "version": "1.6.8", "resolved": "https://registry.npmmirror.com/axios/-/axios-1.6.8.tgz", "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", + "dev": true, "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.0", @@ -2929,12 +3047,14 @@ "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true }, "node_modules/base-x": { "version": "3.0.9", "resolved": "https://registry.npmmirror.com/base-x/-/base-x-3.0.9.tgz", "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", + "dev": true, "dependencies": { "safe-buffer": "^5.0.1" } @@ -2942,7 +3062,8 @@ "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true }, "node_modules/bcrypt-pbkdf": { "version": "1.0.2", @@ -2962,12 +3083,14 @@ "node_modules/bech32": { "version": "1.1.4", "resolved": "https://registry.npmmirror.com/bech32/-/bech32-1.1.4.tgz", - "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", + "dev": true }, "node_modules/binary-extensions": { "version": "2.3.0", "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.3.0.tgz", "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, "engines": { "node": ">=8" } @@ -2996,17 +3119,20 @@ "node_modules/blakejs": { "version": "1.2.1", "resolved": "https://registry.npmmirror.com/blakejs/-/blakejs-1.2.1.tgz", - "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==" + "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==", + "dev": true }, "node_modules/bn.js": { "version": "5.2.1", "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true }, "node_modules/boxen": { "version": "5.1.2", "resolved": "https://registry.npmmirror.com/boxen/-/boxen-5.1.2.tgz", "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", + "dev": true, "dependencies": { "ansi-align": "^3.0.0", "camelcase": "^6.2.0", @@ -3025,6 +3151,7 @@ "version": "1.1.11", "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -3034,6 +3161,7 @@ "version": "3.0.2", "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, "dependencies": { "fill-range": "^7.0.1" }, @@ -3044,17 +3172,20 @@ "node_modules/brorand": { "version": "1.1.0", "resolved": "https://registry.npmmirror.com/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "dev": true }, "node_modules/browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmmirror.com/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==" + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true }, "node_modules/browserify-aes": { "version": "1.2.0", "resolved": "https://registry.npmmirror.com/browserify-aes/-/browserify-aes-1.2.0.tgz", "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, "dependencies": { "buffer-xor": "^1.0.3", "cipher-base": "^1.0.0", @@ -3068,6 +3199,7 @@ "version": "4.0.1", "resolved": "https://registry.npmmirror.com/bs58/-/bs58-4.0.1.tgz", "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dev": true, "dependencies": { "base-x": "^3.0.2" } @@ -3076,6 +3208,7 @@ "version": "2.1.2", "resolved": "https://registry.npmmirror.com/bs58check/-/bs58check-2.1.2.tgz", "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "dev": true, "dependencies": { "bs58": "^4.0.0", "create-hash": "^1.1.0", @@ -3086,6 +3219,7 @@ "version": "4.9.2", "resolved": "https://registry.npmmirror.com/buffer/-/buffer-4.9.2.tgz", "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, "dependencies": { "base64-js": "^1.0.2", "ieee754": "^1.1.4", @@ -3117,12 +3251,14 @@ "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true }, "node_modules/buffer-xor": { "version": "1.0.3", "resolved": "https://registry.npmmirror.com/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "dev": true }, "node_modules/buildcheck": { "version": "0.0.6", @@ -3138,6 +3274,7 @@ "version": "3.1.2", "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, "engines": { "node": ">= 0.8" } @@ -3173,6 +3310,7 @@ "version": "1.0.7", "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.7.tgz", "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -3197,6 +3335,7 @@ "version": "6.3.0", "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-6.3.0.tgz", "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, "engines": { "node": ">=10" } @@ -3211,7 +3350,7 @@ "version": "8.1.0", "resolved": "https://registry.npmmirror.com/cbor/-/cbor-8.1.0.tgz", "integrity": "sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==", - "devOptional": true, + "dev": true, "dependencies": { "nofilter": "^3.1.0" }, @@ -3254,6 +3393,7 @@ "version": "4.1.2", "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -3287,6 +3427,7 @@ "version": "3.6.0", "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.6.0.tgz", "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -3307,6 +3448,7 @@ "version": "5.1.2", "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, "dependencies": { "is-glob": "^4.0.1" }, @@ -3323,12 +3465,14 @@ "node_modules/ci-info": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true }, "node_modules/cipher-base": { "version": "1.0.4", "resolved": "https://registry.npmmirror.com/cipher-base/-/cipher-base-1.0.4.tgz", "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, "dependencies": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -3338,6 +3482,7 @@ "version": "2.2.0", "resolved": "https://registry.npmmirror.com/clean-stack/-/clean-stack-2.2.0.tgz", "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, "engines": { "node": ">=6" } @@ -3346,6 +3491,7 @@ "version": "2.2.1", "resolved": "https://registry.npmmirror.com/cli-boxes/-/cli-boxes-2.2.1.tgz", "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "dev": true, "engines": { "node": ">=6" } @@ -3413,6 +3559,7 @@ "version": "7.0.4", "resolved": "https://registry.npmmirror.com/cliui/-/cliui-7.0.4.tgz", "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -3429,6 +3576,7 @@ "version": "2.0.1", "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -3439,7 +3587,8 @@ "node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/colors": { "version": "1.4.0", @@ -3454,6 +3603,7 @@ "version": "1.0.8", "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, "dependencies": { "delayed-stream": "~1.0.0" }, @@ -3464,7 +3614,8 @@ "node_modules/command-exists": { "version": "1.2.9", "resolved": "https://registry.npmmirror.com/command-exists/-/command-exists-1.2.9.tgz", - "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==" + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", + "dev": true }, "node_modules/command-line-args": { "version": "5.2.1", @@ -3599,17 +3750,20 @@ "node_modules/commander": { "version": "3.0.2", "resolved": "https://registry.npmmirror.com/commander/-/commander-3.0.2.tgz", - "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==" + "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", + "dev": true }, "node_modules/compare-versions": { "version": "6.1.0", "resolved": "https://registry.npmmirror.com/compare-versions/-/compare-versions-6.1.0.tgz", - "integrity": "sha512-LNZQXhqUvqUTotpZ00qLSaify3b4VFD588aRr8MKFw4CMUr98ytzCW5wDH5qx/DEY5kCDXcbcRuCqL0szEf2tg==" + "integrity": "sha512-LNZQXhqUvqUTotpZ00qLSaify3b4VFD588aRr8MKFw4CMUr98ytzCW5wDH5qx/DEY5kCDXcbcRuCqL0szEf2tg==", + "dev": true }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true }, "node_modules/concat-stream": { "version": "1.6.2", @@ -3670,6 +3824,7 @@ "version": "0.4.2", "resolved": "https://registry.npmmirror.com/cookie/-/cookie-0.4.2.tgz", "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true, "engines": { "node": ">= 0.6" } @@ -3722,6 +3877,7 @@ "version": "1.2.0", "resolved": "https://registry.npmmirror.com/create-hash/-/create-hash-1.2.0.tgz", "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, "dependencies": { "cipher-base": "^1.0.1", "inherits": "^2.0.1", @@ -3734,6 +3890,7 @@ "version": "1.1.7", "resolved": "https://registry.npmmirror.com/create-hmac/-/create-hmac-1.1.7.tgz", "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, "dependencies": { "cipher-base": "^1.0.3", "create-hash": "^1.1.0", @@ -3747,7 +3904,7 @@ "version": "1.1.1", "resolved": "https://registry.npmmirror.com/create-require/-/create-require-1.1.1.tgz", "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "devOptional": true, + "dev": true, "peer": true }, "node_modules/cross-spawn": { @@ -3777,6 +3934,7 @@ "version": "1.0.1", "resolved": "https://registry.npmmirror.com/data-view-buffer/-/data-view-buffer-1.0.1.tgz", "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -3790,6 +3948,7 @@ "version": "1.0.1", "resolved": "https://registry.npmmirror.com/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -3803,6 +3962,7 @@ "version": "1.0.0", "resolved": "https://registry.npmmirror.com/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -3822,6 +3982,7 @@ "version": "4.3.4", "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -3838,6 +3999,7 @@ "version": "4.0.0", "resolved": "https://registry.npmmirror.com/decamelize/-/decamelize-4.0.0.tgz", "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true, "engines": { "node": ">=10" } @@ -3903,6 +4065,7 @@ "version": "1.1.4", "resolved": "https://registry.npmmirror.com/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -3916,6 +4079,7 @@ "version": "1.2.1", "resolved": "https://registry.npmmirror.com/define-properties/-/define-properties-1.2.1.tgz", "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", @@ -3929,6 +4093,7 @@ "version": "1.0.0", "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, "engines": { "node": ">=0.4.0" } @@ -3984,6 +4149,7 @@ "version": "2.0.0", "resolved": "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, "engines": { "node": ">= 0.8" } @@ -3992,6 +4158,7 @@ "version": "5.0.0", "resolved": "https://registry.npmmirror.com/diff/-/diff-5.0.0.tgz", "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true, "engines": { "node": ">=0.3.1" } @@ -4080,6 +4247,7 @@ "version": "6.5.4", "resolved": "https://registry.npmmirror.com/elliptic/-/elliptic-6.5.4.tgz", "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dev": true, "dependencies": { "bn.js": "^4.11.9", "brorand": "^1.1.0", @@ -4093,12 +4261,14 @@ "node_modules/elliptic/node_modules/bn.js": { "version": "4.12.0", "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true }, "node_modules/end-of-stream": { "version": "1.4.4", @@ -4113,6 +4283,7 @@ "version": "2.4.1", "resolved": "https://registry.npmmirror.com/enquirer/-/enquirer-2.4.1.tgz", "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", + "dev": true, "dependencies": { "ansi-colors": "^4.1.1", "strip-ansi": "^6.0.1" @@ -4125,6 +4296,7 @@ "version": "2.2.1", "resolved": "https://registry.npmmirror.com/env-paths/-/env-paths-2.2.1.tgz", "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, "engines": { "node": ">=6" } @@ -4142,6 +4314,7 @@ "version": "1.23.2", "resolved": "https://registry.npmmirror.com/es-abstract/-/es-abstract-1.23.2.tgz", "integrity": "sha512-60s3Xv2T2p1ICykc7c+DNDPLDMm9t4QxCOUU0K9JxiLjM3C1zB9YVdN7tjxrFd4+AkZ8CdX1ovUga4P2+1e+/w==", + "dev": true, "dependencies": { "array-buffer-byte-length": "^1.0.1", "arraybuffer.prototype.slice": "^1.0.3", @@ -4198,6 +4371,7 @@ "version": "1.0.0", "resolved": "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.0.tgz", "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, "dependencies": { "get-intrinsic": "^1.2.4" }, @@ -4209,6 +4383,7 @@ "version": "1.3.0", "resolved": "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, "engines": { "node": ">= 0.4" } @@ -4217,6 +4392,7 @@ "version": "1.0.0", "resolved": "https://registry.npmmirror.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz", "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, "dependencies": { "es-errors": "^1.3.0" }, @@ -4228,6 +4404,7 @@ "version": "2.0.3", "resolved": "https://registry.npmmirror.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dev": true, "dependencies": { "get-intrinsic": "^1.2.4", "has-tostringtag": "^1.0.2", @@ -4241,6 +4418,7 @@ "version": "1.0.2", "resolved": "https://registry.npmmirror.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, "dependencies": { "hasown": "^2.0.0" } @@ -4249,6 +4427,7 @@ "version": "1.2.1", "resolved": "https://registry.npmmirror.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, "dependencies": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -4262,6 +4441,7 @@ "version": "3.1.2", "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.1.2.tgz", "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true, "engines": { "node": ">=6" } @@ -4270,6 +4450,7 @@ "version": "4.0.0", "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, "engines": { "node": ">=10" } @@ -4630,6 +4811,7 @@ "version": "0.1.3", "resolved": "https://registry.npmmirror.com/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, "dependencies": { "@types/pbkdf2": "^3.0.0", "@types/secp256k1": "^4.0.1", @@ -4652,6 +4834,7 @@ "version": "0.6.8", "resolved": "https://registry.npmmirror.com/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz", "integrity": "sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==", + "dev": true, "dependencies": { "bn.js": "^4.11.8", "ethereumjs-util": "^6.0.0" @@ -4661,6 +4844,7 @@ "version": "4.11.6", "resolved": "https://registry.npmmirror.com/@types/bn.js/-/bn.js-4.11.6.tgz", "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "dev": true, "dependencies": { "@types/node": "*" } @@ -4668,12 +4852,14 @@ "node_modules/ethereumjs-abi/node_modules/bn.js": { "version": "4.12.0", "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true }, "node_modules/ethereumjs-abi/node_modules/ethereumjs-util": { "version": "6.2.1", "resolved": "https://registry.npmmirror.com/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "dev": true, "dependencies": { "@types/bn.js": "^4.11.3", "bn.js": "^4.11.0", @@ -4688,6 +4874,7 @@ "version": "7.1.5", "resolved": "https://registry.npmmirror.com/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", + "dev": true, "dependencies": { "@types/bn.js": "^5.1.0", "bn.js": "^5.1.2", @@ -4703,6 +4890,7 @@ "version": "6.11.1", "resolved": "https://registry.npmmirror.com/ethers/-/ethers-6.11.1.tgz", "integrity": "sha512-mxTAE6wqJQAbp5QAe/+o+rXOID7Nw91OZXvgpjDa1r4fAbq2Nu314oEZSbjoRLacuCzs7kUC3clEvkCQowffGg==", + "dev": true, "dependencies": { "@adraffy/ens-normalize": "1.10.1", "@noble/curves": "1.2.0", @@ -4719,12 +4907,14 @@ "node_modules/ethers/node_modules/@types/node": { "version": "18.15.13", "resolved": "https://registry.npmmirror.com/@types/node/-/node-18.15.13.tgz", - "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==" + "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==", + "dev": true }, "node_modules/ethers/node_modules/tslib": { "version": "2.4.0", "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true }, "node_modules/ethjs-unit": { "version": "0.1.6", @@ -4750,6 +4940,7 @@ "version": "0.1.6", "resolved": "https://registry.npmmirror.com/ethjs-util/-/ethjs-util-0.1.6.tgz", "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", + "dev": true, "dependencies": { "is-hex-prefixed": "1.0.0", "strip-hex-prefix": "1.0.0" @@ -4763,6 +4954,7 @@ "version": "1.0.3", "resolved": "https://registry.npmmirror.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, "dependencies": { "md5.js": "^1.3.4", "safe-buffer": "^5.1.1" @@ -4771,13 +4963,14 @@ "node_modules/fast-base64-decode": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/fast-base64-decode/-/fast-base64-decode-1.0.0.tgz", - "integrity": "sha512-qwaScUgUGBYeDNRnbc/KyllVU88Jk1pRHPStuF/lO7B0/RTRLj7U0lkdTAutlBblY08rwZDff6tNU9cjv6j//Q==" + "integrity": "sha512-qwaScUgUGBYeDNRnbc/KyllVU88Jk1pRHPStuF/lO7B0/RTRLj7U0lkdTAutlBblY08rwZDff6tNU9cjv6j//Q==", + "dev": true }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "devOptional": true + "dev": true }, "node_modules/fast-diff": { "version": "1.3.0", @@ -4850,6 +5043,7 @@ "version": "7.0.1", "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -4874,6 +5068,7 @@ "version": "5.0.0", "resolved": "https://registry.npmmirror.com/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -4886,6 +5081,7 @@ "version": "5.0.2", "resolved": "https://registry.npmmirror.com/flat/-/flat-5.0.2.tgz", "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, "bin": { "flat": "cli.js" } @@ -4914,6 +5110,7 @@ "version": "1.15.6", "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.6.tgz", "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "dev": true, "engines": { "node": ">=4.0" }, @@ -4927,6 +5124,7 @@ "version": "0.3.3", "resolved": "https://registry.npmmirror.com/for-each/-/for-each-0.3.3.tgz", "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, "dependencies": { "is-callable": "^1.1.3" } @@ -4948,6 +5146,7 @@ "version": "4.0.0", "resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.0.tgz", "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -4969,7 +5168,8 @@ "node_modules/fp-ts": { "version": "1.19.3", "resolved": "https://registry.npmmirror.com/fp-ts/-/fp-ts-1.19.3.tgz", - "integrity": "sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==" + "integrity": "sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==", + "dev": true }, "node_modules/fs-constants": { "version": "1.0.0", @@ -5000,12 +5200,14 @@ "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, "hasInstallScript": true, "optional": true, "os": [ @@ -5018,12 +5220,14 @@ "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true }, "node_modules/function.prototype.name": { "version": "1.1.6", "resolved": "https://registry.npmmirror.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz", "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -5037,12 +5241,14 @@ "node_modules/functions-have-names": { "version": "1.2.3", "resolved": "https://registry.npmmirror.com/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, "engines": { "node": "6.* || 8.* || >= 10.*" } @@ -5060,6 +5266,7 @@ "version": "1.2.4", "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz", "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2", @@ -5093,6 +5300,7 @@ "version": "1.0.2", "resolved": "https://registry.npmmirror.com/get-symbol-description/-/get-symbol-description-1.0.2.tgz", "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "dev": true, "dependencies": { "call-bind": "^1.0.5", "es-errors": "^1.3.0", @@ -5292,6 +5500,7 @@ "version": "1.0.3", "resolved": "https://registry.npmmirror.com/globalthis/-/globalthis-1.0.3.tgz", "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, "dependencies": { "define-properties": "^1.1.3" }, @@ -5339,6 +5548,7 @@ "version": "1.0.1", "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, "dependencies": { "get-intrinsic": "^1.1.3" } @@ -5368,7 +5578,8 @@ "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true }, "node_modules/graphemer": { "version": "1.4.0", @@ -5407,9 +5618,10 @@ } }, "node_modules/hardhat": { - "version": "2.22.1", - "resolved": "https://registry.npmmirror.com/hardhat/-/hardhat-2.22.1.tgz", - "integrity": "sha512-cTWYIJc5jQ132XUI8oRI/TO9L6oavPoJRCTRU9sIjkVxvkxz0Axz0K83Z3BEdJTqBQ2W84ZRoTekti84kBwCjg==", + "version": "2.22.2", + "resolved": "https://registry.npmmirror.com/hardhat/-/hardhat-2.22.2.tgz", + "integrity": "sha512-0xZ7MdCZ5sJem4MrvpQWLR3R3zGDoHw5lsR+pBFimqwagimIOn3bWuZv69KA+veXClwI1s/zpqgwPwiFrd4Dxw==", + "dev": true, "dependencies": { "@ethersproject/abi": "^5.1.2", "@metamask/eth-sig-util": "^4.0.0", @@ -5504,12 +5716,14 @@ "node_modules/hardhat/node_modules/@noble/hashes": { "version": "1.2.0", "resolved": "https://registry.npmmirror.com/@noble/hashes/-/hashes-1.2.0.tgz", - "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==" + "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", + "dev": true }, "node_modules/hardhat/node_modules/@scure/bip32": { "version": "1.1.5", "resolved": "https://registry.npmmirror.com/@scure/bip32/-/bip32-1.1.5.tgz", "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", + "dev": true, "dependencies": { "@noble/hashes": "~1.2.0", "@noble/secp256k1": "~1.7.0", @@ -5520,6 +5734,7 @@ "version": "1.1.1", "resolved": "https://registry.npmmirror.com/@scure/bip39/-/bip39-1.1.1.tgz", "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", + "dev": true, "dependencies": { "@noble/hashes": "~1.2.0", "@scure/base": "~1.1.0" @@ -5529,6 +5744,7 @@ "version": "3.2.1", "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "dependencies": { "color-convert": "^1.9.0" }, @@ -5540,6 +5756,7 @@ "version": "2.4.2", "resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -5553,6 +5770,7 @@ "version": "1.9.3", "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "dependencies": { "color-name": "1.1.3" } @@ -5560,12 +5778,14 @@ "node_modules/hardhat/node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true }, "node_modules/hardhat/node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, "engines": { "node": ">=0.8.0" } @@ -5574,6 +5794,7 @@ "version": "1.2.0", "resolved": "https://registry.npmmirror.com/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz", "integrity": "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==", + "dev": true, "dependencies": { "@noble/hashes": "1.2.0", "@noble/secp256k1": "1.7.1", @@ -5585,6 +5806,7 @@ "version": "2.1.0", "resolved": "https://registry.npmmirror.com/find-up/-/find-up-2.1.0.tgz", "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, "dependencies": { "locate-path": "^2.0.0" }, @@ -5596,6 +5818,7 @@ "version": "7.0.1", "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-7.0.1.tgz", "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, "dependencies": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", @@ -5609,6 +5832,7 @@ "version": "7.2.0", "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.0.tgz", "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -5625,6 +5849,7 @@ "version": "3.0.0", "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, "engines": { "node": ">=4" } @@ -5633,6 +5858,7 @@ "version": "4.0.0", "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, "optionalDependencies": { "graceful-fs": "^4.1.6" } @@ -5641,6 +5867,7 @@ "version": "2.0.0", "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-2.0.0.tgz", "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, "dependencies": { "p-locate": "^2.0.0", "path-exists": "^3.0.0" @@ -5653,6 +5880,7 @@ "version": "1.3.0", "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-1.3.0.tgz", "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, "dependencies": { "p-try": "^1.0.0" }, @@ -5664,6 +5892,7 @@ "version": "2.0.0", "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-2.0.0.tgz", "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, "dependencies": { "p-limit": "^1.1.0" }, @@ -5675,6 +5904,7 @@ "version": "3.0.0", "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-3.0.0.tgz", "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, "engines": { "node": ">=4" } @@ -5683,6 +5913,7 @@ "version": "6.3.1", "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, "bin": { "semver": "bin/semver.js" } @@ -5691,6 +5922,7 @@ "version": "5.5.0", "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "dependencies": { "has-flag": "^3.0.0" }, @@ -5702,6 +5934,7 @@ "version": "0.1.2", "resolved": "https://registry.npmmirror.com/universalify/-/universalify-0.1.2.tgz", "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, "engines": { "node": ">= 4.0.0" } @@ -5710,6 +5943,7 @@ "version": "7.5.9", "resolved": "https://registry.npmmirror.com/ws/-/ws-7.5.9.tgz", "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, "engines": { "node": ">=8.3.0" }, @@ -5729,12 +5963,14 @@ "node_modules/has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "engines": { "node": ">=8" } @@ -5743,6 +5979,7 @@ "version": "1.0.2", "resolved": "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, "dependencies": { "es-define-property": "^1.0.0" } @@ -5751,6 +5988,7 @@ "version": "1.0.3", "resolved": "https://registry.npmmirror.com/has-proto/-/has-proto-1.0.3.tgz", "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, "engines": { "node": ">= 0.4" } @@ -5759,6 +5997,7 @@ "version": "1.0.3", "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, "engines": { "node": ">= 0.4" } @@ -5767,6 +6006,7 @@ "version": "1.0.2", "resolved": "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, "dependencies": { "has-symbols": "^1.0.3" }, @@ -5778,6 +6018,7 @@ "version": "3.1.0", "resolved": "https://registry.npmmirror.com/hash-base/-/hash-base-3.1.0.tgz", "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, "dependencies": { "inherits": "^2.0.4", "readable-stream": "^3.6.0", @@ -5791,6 +6032,7 @@ "version": "1.1.7", "resolved": "https://registry.npmmirror.com/hash.js/-/hash.js-1.1.7.tgz", "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, "dependencies": { "inherits": "^2.0.3", "minimalistic-assert": "^1.0.1" @@ -5800,6 +6042,7 @@ "version": "2.0.2", "resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, "dependencies": { "function-bind": "^1.1.2" }, @@ -5811,6 +6054,7 @@ "version": "1.2.0", "resolved": "https://registry.npmmirror.com/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, "bin": { "he": "bin/he" } @@ -5825,6 +6069,7 @@ "version": "1.0.1", "resolved": "https://registry.npmmirror.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz", "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dev": true, "dependencies": { "hash.js": "^1.0.3", "minimalistic-assert": "^1.0.0", @@ -5856,6 +6101,7 @@ "version": "2.0.0", "resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-2.0.0.tgz", "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", @@ -5899,6 +6145,7 @@ "version": "5.0.1", "resolved": "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, "dependencies": { "agent-base": "6", "debug": "4" @@ -5911,6 +6158,7 @@ "version": "0.4.24", "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -5921,7 +6169,8 @@ "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true }, "node_modules/ignore": { "version": "5.3.1", @@ -5935,7 +6184,8 @@ "node_modules/immutable": { "version": "4.3.5", "resolved": "https://registry.npmmirror.com/immutable/-/immutable-4.3.5.tgz", - "integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==" + "integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==", + "dev": true }, "node_modules/import-fresh": { "version": "3.3.0", @@ -5963,6 +6213,7 @@ "version": "4.0.0", "resolved": "https://registry.npmmirror.com/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, "engines": { "node": ">=8" } @@ -5971,6 +6222,7 @@ "version": "1.0.6", "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -5979,7 +6231,8 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true }, "node_modules/ini": { "version": "1.3.8", @@ -5991,6 +6244,7 @@ "version": "1.0.7", "resolved": "https://registry.npmmirror.com/internal-slot/-/internal-slot-1.0.7.tgz", "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dev": true, "dependencies": { "es-errors": "^1.3.0", "hasown": "^2.0.0", @@ -6013,6 +6267,7 @@ "version": "1.10.4", "resolved": "https://registry.npmmirror.com/io-ts/-/io-ts-1.10.4.tgz", "integrity": "sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==", + "dev": true, "dependencies": { "fp-ts": "^1.0.0" } @@ -6021,6 +6276,7 @@ "version": "3.0.4", "resolved": "https://registry.npmmirror.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz", "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dev": true, "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.1" @@ -6039,6 +6295,7 @@ "version": "1.0.4", "resolved": "https://registry.npmmirror.com/is-bigint/-/is-bigint-1.0.4.tgz", "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, "dependencies": { "has-bigints": "^1.0.1" } @@ -6047,6 +6304,7 @@ "version": "2.1.0", "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, "dependencies": { "binary-extensions": "^2.0.0" }, @@ -6058,6 +6316,7 @@ "version": "1.1.2", "resolved": "https://registry.npmmirror.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz", "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -6070,6 +6329,7 @@ "version": "1.2.7", "resolved": "https://registry.npmmirror.com/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, "engines": { "node": ">= 0.4" } @@ -6078,6 +6338,7 @@ "version": "1.0.1", "resolved": "https://registry.npmmirror.com/is-data-view/-/is-data-view-1.0.1.tgz", "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, "dependencies": { "is-typed-array": "^1.1.13" }, @@ -6089,6 +6350,7 @@ "version": "1.0.5", "resolved": "https://registry.npmmirror.com/is-date-object/-/is-date-object-1.0.5.tgz", "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -6100,6 +6362,7 @@ "version": "2.1.1", "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -6108,6 +6371,7 @@ "version": "3.0.0", "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, "engines": { "node": ">=8" } @@ -6116,6 +6380,7 @@ "version": "4.0.3", "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, "dependencies": { "is-extglob": "^2.1.1" }, @@ -6127,6 +6392,7 @@ "version": "1.0.0", "resolved": "https://registry.npmmirror.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==", + "dev": true, "engines": { "node": ">=6.5.0", "npm": ">=3" @@ -6136,6 +6402,7 @@ "version": "2.0.3", "resolved": "https://registry.npmmirror.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz", "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, "engines": { "node": ">= 0.4" } @@ -6144,6 +6411,7 @@ "version": "7.0.0", "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, "engines": { "node": ">=0.12.0" } @@ -6152,6 +6420,7 @@ "version": "1.0.7", "resolved": "https://registry.npmmirror.com/is-number-object/-/is-number-object-1.0.7.tgz", "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -6172,6 +6441,7 @@ "version": "2.1.0", "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz", "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, "engines": { "node": ">=8" } @@ -6180,6 +6450,7 @@ "version": "1.1.4", "resolved": "https://registry.npmmirror.com/is-regex/-/is-regex-1.1.4.tgz", "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -6192,6 +6463,7 @@ "version": "1.0.3", "resolved": "https://registry.npmmirror.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "dev": true, "dependencies": { "call-bind": "^1.0.7" }, @@ -6203,6 +6475,7 @@ "version": "1.0.7", "resolved": "https://registry.npmmirror.com/is-string/-/is-string-1.0.7.tgz", "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -6214,6 +6487,7 @@ "version": "1.0.4", "resolved": "https://registry.npmmirror.com/is-symbol/-/is-symbol-1.0.4.tgz", "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, "dependencies": { "has-symbols": "^1.0.2" }, @@ -6225,6 +6499,7 @@ "version": "1.1.13", "resolved": "https://registry.npmmirror.com/is-typed-array/-/is-typed-array-1.1.13.tgz", "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, "dependencies": { "which-typed-array": "^1.1.14" }, @@ -6236,6 +6511,7 @@ "version": "0.1.0", "resolved": "https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, "engines": { "node": ">=10" } @@ -6244,6 +6520,7 @@ "version": "1.0.2", "resolved": "https://registry.npmmirror.com/is-weakref/-/is-weakref-1.0.2.tgz", "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, "dependencies": { "call-bind": "^1.0.2" } @@ -6251,7 +6528,8 @@ "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true }, "node_modules/isexe": { "version": "2.0.0", @@ -6263,6 +6541,7 @@ "version": "3.1.0", "resolved": "https://registry.npmmirror.com/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz", "integrity": "sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==", + "dev": true, "dependencies": { "node-fetch": "^2.6.1", "unfetch": "^4.2.0" @@ -6286,12 +6565,14 @@ "node_modules/js-cookie": { "version": "2.2.1", "resolved": "https://registry.npmmirror.com/js-cookie/-/js-cookie-2.2.1.tgz", - "integrity": "sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==" + "integrity": "sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==", + "dev": true }, "node_modules/js-sha3": { "version": "0.8.0", "resolved": "https://registry.npmmirror.com/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "dev": true }, "node_modules/js-tokens": { "version": "4.0.0", @@ -6303,6 +6584,7 @@ "version": "4.1.0", "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, "dependencies": { "argparse": "^2.0.1" }, @@ -6390,6 +6672,7 @@ "version": "3.0.4", "resolved": "https://registry.npmmirror.com/keccak/-/keccak-3.0.4.tgz", "integrity": "sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==", + "dev": true, "hasInstallScript": true, "dependencies": { "node-addon-api": "^2.0.0", @@ -6422,6 +6705,7 @@ "version": "1.3.1", "resolved": "https://registry.npmmirror.com/klaw/-/klaw-1.3.1.tgz", "integrity": "sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==", + "dev": true, "optionalDependencies": { "graceful-fs": "^4.1.9" } @@ -6461,6 +6745,7 @@ "version": "6.0.0", "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, "dependencies": { "p-locate": "^5.0.0" }, @@ -6471,7 +6756,8 @@ "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true }, "node_modules/lodash.camelcase": { "version": "4.3.0", @@ -6484,7 +6770,7 @@ "version": "4.5.0", "resolved": "https://registry.npmmirror.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", - "devOptional": true + "dev": true }, "node_modules/lodash.get": { "version": "4.4.2", @@ -6496,6 +6782,7 @@ "version": "4.5.0", "resolved": "https://registry.npmmirror.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz", "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "dev": true, "peer": true }, "node_modules/lodash.merge": { @@ -6508,12 +6795,13 @@ "version": "4.4.2", "resolved": "https://registry.npmmirror.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz", "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "devOptional": true + "dev": true }, "node_modules/log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmmirror.com/log-symbols/-/log-symbols-4.1.0.tgz", "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" @@ -6543,7 +6831,8 @@ "node_modules/lru_map": { "version": "0.3.3", "resolved": "https://registry.npmmirror.com/lru_map/-/lru_map-0.3.3.tgz", - "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==" + "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==", + "dev": true }, "node_modules/lru-cache": { "version": "10.2.0", @@ -6558,7 +6847,7 @@ "version": "1.3.6", "resolved": "https://registry.npmmirror.com/make-error/-/make-error-1.3.6.tgz", "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "devOptional": true, + "dev": true, "peer": true }, "node_modules/markdown-table": { @@ -6571,6 +6860,7 @@ "version": "1.3.5", "resolved": "https://registry.npmmirror.com/md5.js/-/md5.js-1.3.5.tgz", "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, "dependencies": { "hash-base": "^3.0.0", "inherits": "^2.0.1", @@ -6581,6 +6871,7 @@ "version": "0.3.1", "resolved": "https://registry.npmmirror.com/memorystream/-/memorystream-0.3.1.tgz", "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true, "engines": { "node": ">= 0.10.0" } @@ -6617,6 +6908,7 @@ "version": "1.52.0", "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, "engines": { "node": ">= 0.6" } @@ -6625,6 +6917,7 @@ "version": "2.1.35", "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, "dependencies": { "mime-db": "1.52.0" }, @@ -6644,17 +6937,20 @@ "node_modules/minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true }, "node_modules/minimalistic-crypto-utils": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "dev": true }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -6665,7 +6961,8 @@ "node_modules/minimist": { "version": "1.2.8", "resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true }, "node_modules/minipass": { "version": "7.0.4", @@ -6698,14 +6995,16 @@ "version": "0.38.5", "resolved": "https://registry.npmmirror.com/mnemonist/-/mnemonist-0.38.5.tgz", "integrity": "sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==", + "dev": true, "dependencies": { "obliterator": "^2.0.0" } }, "node_modules/mocha": { - "version": "10.3.0", - "resolved": "https://registry.npmmirror.com/mocha/-/mocha-10.3.0.tgz", - "integrity": "sha512-uF2XJs+7xSLsrmIvn37i/wnc91nw7XjOQB8ccyx5aEgdnohr7n+rEiZP23WkCYHjilR6+EboEnbq/ZQDz4LSbg==", + "version": "10.4.0", + "resolved": "https://registry.npmmirror.com/mocha/-/mocha-10.4.0.tgz", + "integrity": "sha512-eqhGB8JKapEYcC4ytX/xrzKforgEc3j1pGlAXVy3eRwrtAy5/nIfT1SvgGzfN0XZZxeLq0aQWkOUAmqIJiv+bA==", + "dev": true, "dependencies": { "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", @@ -6740,6 +7039,7 @@ "version": "4.1.1", "resolved": "https://registry.npmmirror.com/ansi-colors/-/ansi-colors-4.1.1.tgz", "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, "engines": { "node": ">=6" } @@ -6748,6 +7048,7 @@ "version": "2.0.1", "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, "dependencies": { "balanced-match": "^1.0.0" } @@ -6756,6 +7057,7 @@ "version": "3.5.3", "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz", "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -6776,6 +7078,7 @@ "version": "8.1.0", "resolved": "https://registry.npmmirror.com/glob/-/glob-8.1.0.tgz", "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -6791,6 +7094,7 @@ "version": "5.1.2", "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, "dependencies": { "is-glob": "^4.0.1" }, @@ -6802,6 +7106,7 @@ "version": "5.0.1", "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-5.0.1.tgz", "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "dev": true, "dependencies": { "brace-expansion": "^2.0.1" }, @@ -6812,12 +7117,14 @@ "node_modules/mocha/node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true }, "node_modules/mocha/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -6828,7 +7135,8 @@ "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, "node_modules/nan": { "version": "2.19.0", @@ -6865,7 +7173,8 @@ "node_modules/node-addon-api": { "version": "2.0.2", "resolved": "https://registry.npmmirror.com/node-addon-api/-/node-addon-api-2.0.2.tgz", - "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==" + "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", + "dev": true }, "node_modules/node-emoji": { "version": "1.11.0", @@ -6880,6 +7189,7 @@ "version": "2.7.0", "resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.7.0.tgz", "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dev": true, "dependencies": { "whatwg-url": "^5.0.0" }, @@ -6899,6 +7209,7 @@ "version": "4.8.0", "resolved": "https://registry.npmmirror.com/node-gyp-build/-/node-gyp-build-4.8.0.tgz", "integrity": "sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==", + "dev": true, "bin": { "node-gyp-build": "bin.js", "node-gyp-build-optional": "optional.js", @@ -6909,6 +7220,7 @@ "version": "3.1.0", "resolved": "https://registry.npmmirror.com/nofilter/-/nofilter-3.1.0.tgz", "integrity": "sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==", + "dev": true, "engines": { "node": ">=12.19" } @@ -6929,6 +7241,7 @@ "version": "3.0.0", "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -6974,12 +7287,14 @@ "node_modules/object-inspect": { "version": "1.13.1", "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==" + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true }, "node_modules/object-keys": { "version": "1.1.1", "resolved": "https://registry.npmmirror.com/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, "engines": { "node": ">= 0.4" } @@ -6988,6 +7303,7 @@ "version": "4.1.5", "resolved": "https://registry.npmmirror.com/object.assign/-/object.assign-4.1.5.tgz", "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, "dependencies": { "call-bind": "^1.0.5", "define-properties": "^1.2.1", @@ -7001,12 +7317,14 @@ "node_modules/obliterator": { "version": "2.0.4", "resolved": "https://registry.npmmirror.com/obliterator/-/obliterator-2.0.4.tgz", - "integrity": "sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==" + "integrity": "sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==", + "dev": true }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, "dependencies": { "wrappy": "1" } @@ -7039,6 +7357,7 @@ "version": "1.0.2", "resolved": "https://registry.npmmirror.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -7056,6 +7375,7 @@ "version": "3.1.0", "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, "dependencies": { "yocto-queue": "^0.1.0" }, @@ -7067,6 +7387,7 @@ "version": "5.0.0", "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, "dependencies": { "p-limit": "^3.0.2" }, @@ -7078,6 +7399,7 @@ "version": "4.0.0", "resolved": "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz", "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, "dependencies": { "aggregate-error": "^3.0.0" }, @@ -7089,6 +7411,7 @@ "version": "1.0.0", "resolved": "https://registry.npmmirror.com/p-try/-/p-try-1.0.0.tgz", "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true, "engines": { "node": ">=4" } @@ -7151,6 +7474,7 @@ "version": "4.0.0", "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, "engines": { "node": ">=8" } @@ -7159,6 +7483,7 @@ "version": "1.0.1", "resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -7175,15 +7500,16 @@ "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true }, "node_modules/path-scurry": { - "version": "1.10.1", - "resolved": "https://registry.npmmirror.com/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "version": "1.10.2", + "resolved": "https://registry.npmmirror.com/path-scurry/-/path-scurry-1.10.2.tgz", + "integrity": "sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==", "dev": true, "dependencies": { - "lru-cache": "^9.1.1 || ^10.0.0", + "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { @@ -7227,6 +7553,7 @@ "version": "3.1.2", "resolved": "https://registry.npmmirror.com/pbkdf2/-/pbkdf2-3.1.2.tgz", "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dev": true, "dependencies": { "create-hash": "^1.1.2", "create-hmac": "^1.1.4", @@ -7248,6 +7575,7 @@ "version": "2.3.1", "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, "engines": { "node": ">=8.6" } @@ -7274,6 +7602,7 @@ "version": "1.0.0", "resolved": "https://registry.npmmirror.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, "engines": { "node": ">= 0.4" } @@ -7341,6 +7670,7 @@ "version": "4.1.2", "resolved": "https://registry.npmmirror.com/proper-lockfile/-/proper-lockfile-4.1.2.tgz", "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", + "dev": true, "dependencies": { "graceful-fs": "^4.2.4", "retry": "^0.12.0", @@ -7351,6 +7681,7 @@ "version": "0.12.0", "resolved": "https://registry.npmmirror.com/retry/-/retry-0.12.0.tgz", "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true, "engines": { "node": ">= 4" } @@ -7358,7 +7689,8 @@ "node_modules/proper-lockfile/node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true }, "node_modules/proto-list": { "version": "1.2.4", @@ -7369,7 +7701,8 @@ "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true }, "node_modules/pump": { "version": "3.0.0", @@ -7385,7 +7718,7 @@ "version": "2.3.1", "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "devOptional": true, + "dev": true, "engines": { "node": ">=6" } @@ -7421,6 +7754,7 @@ "version": "2.1.0", "resolved": "https://registry.npmmirror.com/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, "dependencies": { "safe-buffer": "^5.1.0" } @@ -7429,6 +7763,7 @@ "version": "2.5.2", "resolved": "https://registry.npmmirror.com/raw-body/-/raw-body-2.5.2.tgz", "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dev": true, "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -7467,6 +7802,7 @@ "version": "3.6.2", "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -7480,6 +7816,7 @@ "version": "3.6.0", "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, "dependencies": { "picomatch": "^2.2.1" }, @@ -7525,6 +7862,7 @@ "version": "1.5.2", "resolved": "https://registry.npmmirror.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "dev": true, "dependencies": { "call-bind": "^1.0.6", "define-properties": "^1.2.1", @@ -7596,6 +7934,7 @@ "version": "2.1.1", "resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -7604,6 +7943,7 @@ "version": "2.0.2", "resolved": "https://registry.npmmirror.com/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -7612,6 +7952,7 @@ "version": "1.17.0", "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.17.0.tgz", "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, "dependencies": { "path-parse": "^1.0.6" } @@ -7647,6 +7988,7 @@ "version": "0.13.1", "resolved": "https://registry.npmmirror.com/retry/-/retry-0.13.1.tgz", "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, "engines": { "node": ">= 4" } @@ -7694,6 +8036,7 @@ "version": "2.0.2", "resolved": "https://registry.npmmirror.com/ripemd160/-/ripemd160-2.0.2.tgz", "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, "dependencies": { "hash-base": "^3.0.0", "inherits": "^2.0.1" @@ -7703,6 +8046,7 @@ "version": "2.2.7", "resolved": "https://registry.npmmirror.com/rlp/-/rlp-2.2.7.tgz", "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", + "dev": true, "dependencies": { "bn.js": "^5.2.0" }, @@ -7723,6 +8067,7 @@ "version": "1.1.2", "resolved": "https://registry.npmmirror.com/safe-array-concat/-/safe-array-concat-1.1.2.tgz", "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dev": true, "dependencies": { "call-bind": "^1.0.7", "get-intrinsic": "^1.2.4", @@ -7736,17 +8081,20 @@ "node_modules/safe-array-concat/node_modules/isarray": { "version": "2.0.5", "resolved": "https://registry.npmmirror.com/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true }, "node_modules/safe-regex-test": { "version": "1.0.3", "resolved": "https://registry.npmmirror.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz", "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "dev": true, "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -7759,7 +8107,8 @@ "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, "node_modules/sc-istanbul": { "version": "0.4.6", @@ -7879,12 +8228,14 @@ "node_modules/scrypt-js": { "version": "3.0.1", "resolved": "https://registry.npmmirror.com/scrypt-js/-/scrypt-js-3.0.1.tgz", - "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", + "dev": true }, "node_modules/secp256k1": { "version": "4.0.3", "resolved": "https://registry.npmmirror.com/secp256k1/-/secp256k1-4.0.3.tgz", "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", + "dev": true, "hasInstallScript": true, "dependencies": { "elliptic": "^6.5.4", @@ -7926,6 +8277,7 @@ "version": "6.0.0", "resolved": "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz", "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, "dependencies": { "randombytes": "^2.1.0" } @@ -7934,6 +8286,7 @@ "version": "1.2.2", "resolved": "https://registry.npmmirror.com/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -7950,6 +8303,7 @@ "version": "2.0.2", "resolved": "https://registry.npmmirror.com/set-function-name/-/set-function-name-2.0.2.tgz", "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -7963,17 +8317,20 @@ "node_modules/setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmmirror.com/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true }, "node_modules/sha.js": { "version": "2.4.11", "resolved": "https://registry.npmmirror.com/sha.js/-/sha.js-2.4.11.tgz", "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, "dependencies": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -8054,6 +8411,7 @@ "version": "1.0.6", "resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.6.tgz", "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dev": true, "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -8119,7 +8477,7 @@ "version": "4.0.0", "resolved": "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-4.0.0.tgz", "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "devOptional": true, + "dev": true, "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -8133,6 +8491,7 @@ "version": "0.7.3", "resolved": "https://registry.npmmirror.com/solc/-/solc-0.7.3.tgz", "integrity": "sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA==", + "dev": true, "dependencies": { "command-exists": "^1.2.8", "commander": "3.0.2", @@ -8155,6 +8514,7 @@ "version": "0.30.0", "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-0.30.0.tgz", "integrity": "sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==", + "dev": true, "dependencies": { "graceful-fs": "^4.1.2", "jsonfile": "^2.1.0", @@ -8167,6 +8527,7 @@ "version": "7.2.3", "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -8183,6 +8544,7 @@ "version": "2.4.0", "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-2.4.0.tgz", "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", + "dev": true, "optionalDependencies": { "graceful-fs": "^4.1.6" } @@ -8191,6 +8553,7 @@ "version": "2.7.1", "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-2.7.1.tgz", "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, "dependencies": { "glob": "^7.1.3" }, @@ -8202,6 +8565,7 @@ "version": "5.7.2", "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, "bin": { "semver": "bin/semver" } @@ -8307,6 +8671,7 @@ "version": "0.4.56", "resolved": "https://registry.npmmirror.com/solidity-ast/-/solidity-ast-0.4.56.tgz", "integrity": "sha512-HgmsA/Gfklm/M8GFbCX/J1qkVH0spXHgALCNZ8fA8x5X+MFdn/8CP2gr5OVyXjXw6RZTPC/Sxl2RUDQOXyNMeA==", + "dev": true, "dependencies": { "array.prototype.findlast": "^1.2.2" } @@ -8476,6 +8841,7 @@ "version": "0.5.21", "resolved": "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -8485,6 +8851,7 @@ "version": "0.6.1", "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -8523,6 +8890,7 @@ "version": "0.1.10", "resolved": "https://registry.npmmirror.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", + "dev": true, "dependencies": { "type-fest": "^0.7.1" }, @@ -8534,6 +8902,7 @@ "version": "0.7.1", "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.7.1.tgz", "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", + "dev": true, "engines": { "node": ">=8" } @@ -8542,6 +8911,7 @@ "version": "2.0.1", "resolved": "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, "engines": { "node": ">= 0.8" } @@ -8550,6 +8920,7 @@ "version": "1.3.0", "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, "dependencies": { "safe-buffer": "~5.2.0" } @@ -8565,6 +8936,7 @@ "version": "4.2.3", "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -8593,6 +8965,7 @@ "version": "1.2.9", "resolved": "https://registry.npmmirror.com/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "dev": true, "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -8607,6 +8980,7 @@ "version": "1.0.8", "resolved": "https://registry.npmmirror.com/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "dev": true, "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -8614,19 +8988,24 @@ } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.7", - "resolved": "https://registry.npmmirror.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", - "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -8651,6 +9030,7 @@ "version": "1.0.0", "resolved": "https://registry.npmmirror.com/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==", + "dev": true, "dependencies": { "is-hex-prefixed": "1.0.0" }, @@ -8663,6 +9043,7 @@ "version": "3.1.1", "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, "engines": { "node": ">=8" } @@ -8671,6 +9052,7 @@ "version": "7.2.0", "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -8702,10 +9084,10 @@ } }, "node_modules/table": { - "version": "6.8.1", - "resolved": "https://registry.npmmirror.com/table/-/table-6.8.1.tgz", - "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", - "devOptional": true, + "version": "6.8.2", + "resolved": "https://registry.npmmirror.com/table/-/table-6.8.2.tgz", + "integrity": "sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==", + "dev": true, "dependencies": { "ajv": "^8.0.1", "lodash.truncate": "^4.4.2", @@ -8757,7 +9139,7 @@ "version": "8.12.0", "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.12.0.tgz", "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "devOptional": true, + "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -8769,7 +9151,7 @@ "version": "1.0.0", "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "devOptional": true + "dev": true }, "node_modules/tar-fs": { "version": "2.0.1", @@ -8857,6 +9239,7 @@ "version": "0.0.33", "resolved": "https://registry.npmmirror.com/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, "dependencies": { "os-tmpdir": "~1.0.2" }, @@ -8874,6 +9257,7 @@ "version": "5.0.1", "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, "dependencies": { "is-number": "^7.0.0" }, @@ -8885,6 +9269,7 @@ "version": "1.0.1", "resolved": "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, "engines": { "node": ">=0.6" } @@ -8892,7 +9277,8 @@ "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmmirror.com/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true }, "node_modules/ts-command-line-args": { "version": "2.5.1", @@ -8934,7 +9320,7 @@ "version": "10.9.2", "resolved": "https://registry.npmmirror.com/ts-node/-/ts-node-10.9.2.tgz", "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", - "devOptional": true, + "dev": true, "peer": true, "dependencies": { "@cspotcode/source-map-support": "^0.8.0", @@ -8978,7 +9364,7 @@ "version": "4.0.2", "resolved": "https://registry.npmmirror.com/diff/-/diff-4.0.2.tgz", "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "devOptional": true, + "dev": true, "peer": true, "engines": { "node": ">=0.3.1" @@ -8987,22 +9373,26 @@ "node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true }, "node_modules/tsort": { "version": "0.0.1", "resolved": "https://registry.npmmirror.com/tsort/-/tsort-0.0.1.tgz", - "integrity": "sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==" + "integrity": "sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==", + "dev": true }, "node_modules/tweetnacl": { "version": "1.0.3", "resolved": "https://registry.npmmirror.com/tweetnacl/-/tweetnacl-1.0.3.tgz", - "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "dev": true }, "node_modules/tweetnacl-util": { "version": "0.15.1", "resolved": "https://registry.npmmirror.com/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", - "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==" + "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==", + "dev": true }, "node_modules/type-check": { "version": "0.4.0", @@ -9029,6 +9419,7 @@ "version": "0.20.2", "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, "engines": { "node": ">=10" } @@ -9141,6 +9532,7 @@ "version": "1.0.2", "resolved": "https://registry.npmmirror.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dev": true, "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -9154,6 +9546,7 @@ "version": "1.0.1", "resolved": "https://registry.npmmirror.com/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dev": true, "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", @@ -9169,6 +9562,7 @@ "version": "1.0.2", "resolved": "https://registry.npmmirror.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dev": true, "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.7", @@ -9182,9 +9576,10 @@ } }, "node_modules/typed-array-length": { - "version": "1.0.5", - "resolved": "https://registry.npmmirror.com/typed-array-length/-/typed-array-length-1.0.5.tgz", - "integrity": "sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA==", + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "dev": true, "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", @@ -9207,7 +9602,7 @@ "version": "5.4.3", "resolved": "https://registry.npmmirror.com/typescript/-/typescript-5.4.3.tgz", "integrity": "sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg==", - "devOptional": true, + "dev": true, "peer": true, "bin": { "tsc": "bin/tsc", @@ -9244,6 +9639,7 @@ "version": "1.0.2", "resolved": "https://registry.npmmirror.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz", "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, "dependencies": { "call-bind": "^1.0.2", "has-bigints": "^1.0.2", @@ -9255,6 +9651,7 @@ "version": "5.28.3", "resolved": "https://registry.npmmirror.com/undici/-/undici-5.28.3.tgz", "integrity": "sha512-3ItfzbrhDlINjaP0duwnNsKpDQk3acHI3gVJ1z4fmwMK31k5G9OVIAMLSIaP6w4FaGkaAkN6zaQO9LUvZ1t7VA==", + "dev": true, "dependencies": { "@fastify/busboy": "^2.0.0" }, @@ -9265,12 +9662,14 @@ "node_modules/undici-types": { "version": "5.26.5", "resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true }, "node_modules/unfetch": { "version": "4.2.0", "resolved": "https://registry.npmmirror.com/unfetch/-/unfetch-4.2.0.tgz", - "integrity": "sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==" + "integrity": "sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==", + "dev": true }, "node_modules/universalify": { "version": "2.0.1", @@ -9285,6 +9684,7 @@ "version": "1.0.0", "resolved": "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, "engines": { "node": ">= 0.8" } @@ -9293,7 +9693,7 @@ "version": "4.4.1", "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "devOptional": true, + "dev": true, "dependencies": { "punycode": "^2.1.0" } @@ -9307,12 +9707,14 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true }, "node_modules/uuid": { "version": "8.3.2", "resolved": "https://registry.npmmirror.com/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, "bin": { "uuid": "dist/bin/uuid" } @@ -9321,7 +9723,7 @@ "version": "3.0.1", "resolved": "https://registry.npmmirror.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "devOptional": true, + "dev": true, "peer": true }, "node_modules/web3-utils": { @@ -9376,12 +9778,14 @@ "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true }, "node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -9406,6 +9810,7 @@ "version": "1.0.2", "resolved": "https://registry.npmmirror.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, "dependencies": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -9418,6 +9823,7 @@ "version": "1.1.15", "resolved": "https://registry.npmmirror.com/which-typed-array/-/which-typed-array-1.1.15.tgz", "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dev": true, "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.7", @@ -9433,6 +9839,7 @@ "version": "3.1.0", "resolved": "https://registry.npmmirror.com/widest-line/-/widest-line-3.1.0.tgz", "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dev": true, "dependencies": { "string-width": "^4.0.0" }, @@ -9482,12 +9889,14 @@ "node_modules/workerpool": { "version": "6.2.1", "resolved": "https://registry.npmmirror.com/workerpool/-/workerpool-6.2.1.tgz", - "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==" + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", + "dev": true }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -9515,12 +9924,14 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true }, "node_modules/ws": { "version": "8.5.0", "resolved": "https://registry.npmmirror.com/ws/-/ws-8.5.0.tgz", "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "dev": true, "engines": { "node": ">=10.0.0" }, @@ -9550,6 +9961,7 @@ "version": "5.0.8", "resolved": "https://registry.npmmirror.com/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, "engines": { "node": ">=10" } @@ -9564,6 +9976,7 @@ "version": "16.2.0", "resolved": "https://registry.npmmirror.com/yargs/-/yargs-16.2.0.tgz", "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -9581,6 +9994,7 @@ "version": "20.2.4", "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.4.tgz", "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true, "engines": { "node": ">=10" } @@ -9589,6 +10003,7 @@ "version": "2.0.0", "resolved": "https://registry.npmmirror.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz", "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, "dependencies": { "camelcase": "^6.0.0", "decamelize": "^4.0.0", @@ -9603,7 +10018,7 @@ "version": "3.1.1", "resolved": "https://registry.npmmirror.com/yn/-/yn-3.1.1.tgz", "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "devOptional": true, + "dev": true, "peer": true, "engines": { "node": ">=6" @@ -9613,6 +10028,7 @@ "version": "0.1.0", "resolved": "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, "engines": { "node": ">=10" } diff --git a/package.json b/package.json index c8553ec..b5bfc25 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "@matterlabs/hardhat-zksync-upgradable": "^1.2.1", "@matterlabs/hardhat-zksync-verify": "^1.2.0", "@nomicfoundation/hardhat-toolbox": "^4.0.0", + "@openzeppelin/hardhat-upgrades": "^3.0.5", "dotenv": "^16.4.5", "eslint": "^8.30.0", "eslint-config-prettier": "^9.0.0", @@ -40,7 +41,6 @@ }, "dependencies": { "@openzeppelin/contracts": "^4.9.5", - "@openzeppelin/contracts-upgradeable": "^4.9.5", - "@openzeppelin/hardhat-upgrades": "^3.0.5" + "@openzeppelin/contracts-upgradeable": "^4.9.5" } } diff --git a/script/deploy_log_name.ts b/script/deploy_log_name.ts new file mode 100644 index 0000000..595b681 --- /dev/null +++ b/script/deploy_log_name.ts @@ -0,0 +1,19 @@ +// consumed in deploy_portal.ts +export const DEPLOY_PORTAL_LOG = 'deploy_portal'; +export const DEPLOY_LOG_PORTAL_TARGET = 'portalTarget'; +export const DEPLOY_LOG_PORTAL_TARGET_VERIFIED = 'portalTargetVerified'; +export const DEPLOY_LOG_PORTAL_PROXY = 'portalProxy'; +export const DEPLOY_LOG_PORTAL_PROXY_VERIFIED = 'portalProxyVerified'; + +// public +export const DEPLOY_LOG_DEPLOYER = 'deployer'; +export const DEPLOY_LOG_DEPLOY_TX_HASH = 'deployTxHash'; +export const DEPLOY_LOG_DEPLOY_BLOCK_NUMBER = 'deployBlockNumber'; + +// consumed in deploy_mergeToken.ts +export const DEPLOY_MERGETOKEN_LOG_PREFIX = 'deploy_mergeToken'; +export const DEPLOY_LOG_MERGETOKEN = 'mergeToken'; +export const DEPLOY_LOG_MERGETOKEN_NAME = 'mergeToken_NAME'; +export const DEPLOY_LOG_MERGETOKEN_SYMBOL = 'mergeToken_SYMBOL'; +export const DEPLOY_LOG_MERGETOKEN_DECIMALS = 'mergeToken_DECIMALS'; +export const DEPLOY_LOG_MERGETOKEN_VERIFIED = 'mergeTokenVerified'; diff --git a/script/deploy_merge_token.ts b/script/deploy_merge_token.ts new file mode 100644 index 0000000..1fe2e4c --- /dev/null +++ b/script/deploy_merge_token.ts @@ -0,0 +1,90 @@ +import * as fs from 'fs'; +import { + verifyContractCode, + createOrGetDeployLog, + ChainContractDeployer, + getDeployTx, + readDeployContract, +} from './utils'; +import { + DEPLOY_LOG_DEPLOYER, + DEPLOY_PORTAL_LOG, + DEPLOY_LOG_PORTAL_PROXY, + DEPLOY_MERGETOKEN_LOG_PREFIX, + DEPLOY_LOG_MERGETOKEN, + DEPLOY_LOG_MERGETOKEN_NAME, + DEPLOY_LOG_MERGETOKEN_SYMBOL, + DEPLOY_LOG_MERGETOKEN_DECIMALS, + DEPLOY_LOG_MERGETOKEN_VERIFIED, + DEPLOY_LOG_DEPLOY_TX_HASH, + DEPLOY_LOG_DEPLOY_BLOCK_NUMBER, +} from './deploy_log_name'; +import { task, types } from 'hardhat/config'; + +function getContractName() { + return 'ERC20MergeToken'; +} + +task('deployMergeToken', 'Deploy MergeToken') + .addParam('name', 'The merge token name', undefined, types.string, false) + .addParam('symbol', 'The merge token symbol', undefined, types.string, false) + .addParam('decimals', 'The merge token decimals', undefined, types.int, false) + .addParam('portal', 'The portal address (default get from portal deploy log)', undefined, types.string, true) + .addParam('force', 'Fore redeploy all contracts', false, types.boolean, true) + .addParam('skipVerify', 'Skip verify', false, types.boolean, true) + .setAction(async (taskArgs, hardhat) => { + let name = taskArgs.name; + let symbol = taskArgs.symbol; + let decimals = taskArgs.decimals; + console.log('name:', name); + console.log('symbol:', symbol); + console.log('decimals:', decimals); + + let portal = taskArgs.portal; + if (portal === undefined) { + portal = readDeployContract(DEPLOY_PORTAL_LOG, DEPLOY_LOG_PORTAL_PROXY, hardhat.network.name); + } + let force = taskArgs.force; + let skipVerify = taskArgs.skipVerify; + console.log('force redeploy all contracts?', force); + console.log('skip verify contracts?', skipVerify); + console.log('portal address:', portal); + + const contractDeployer = new ChainContractDeployer(hardhat); + await contractDeployer.init(); + const deployerWallet = contractDeployer.deployerWallet; + + const { deployLogPath, deployLog } = createOrGetDeployLog( + DEPLOY_MERGETOKEN_LOG_PREFIX + '_' + symbol, + hardhat.network.name, + ); + const dLog = deployLog as any; + dLog[DEPLOY_LOG_DEPLOYER] = await deployerWallet?.getAddress(); + fs.writeFileSync(deployLogPath, JSON.stringify(dLog, null, 2)); + + // deploy merge token + let mergeTokenAddr; + if (!(DEPLOY_LOG_MERGETOKEN in dLog) || force) { + console.log('deploy merge token...'); + const contractName = getContractName(); + const contract = await contractDeployer.deployContract(contractName, [portal, name, symbol, decimals]); + const transaction = await getDeployTx(contract); + mergeTokenAddr = await contract.getAddress(); + dLog[DEPLOY_LOG_MERGETOKEN] = mergeTokenAddr; + dLog[DEPLOY_LOG_MERGETOKEN_NAME] = name; + dLog[DEPLOY_LOG_MERGETOKEN_SYMBOL] = symbol; + dLog[DEPLOY_LOG_MERGETOKEN_DECIMALS] = decimals; + dLog[DEPLOY_LOG_DEPLOY_TX_HASH] = transaction?.hash; + dLog[DEPLOY_LOG_DEPLOY_BLOCK_NUMBER] = transaction?.blockNumber; + fs.writeFileSync(deployLogPath, JSON.stringify(dLog, null, 2)); + } else { + mergeTokenAddr = dLog[DEPLOY_LOG_MERGETOKEN]; + } + console.log('merge token', mergeTokenAddr); + + if (!skipVerify) { + await verifyContractCode(hardhat, mergeTokenAddr, [portal, name, symbol, decimals]); + dLog[DEPLOY_LOG_MERGETOKEN_VERIFIED] = true; + fs.writeFileSync(deployLogPath, JSON.stringify(dLog, null, 2)); + } + }); diff --git a/script/deploy_portal.ts b/script/deploy_portal.ts new file mode 100644 index 0000000..4b21fe0 --- /dev/null +++ b/script/deploy_portal.ts @@ -0,0 +1,275 @@ +import * as fs from 'fs'; +import { getImplementationAddress } from '@openzeppelin/upgrades-core'; +import { + verifyContractCode, + createOrGetDeployLog, + ChainContractDeployer, + getDeployTx, + readDeployContract, +} from './utils'; +import { + DEPLOY_PORTAL_LOG, + DEPLOY_LOG_DEPLOYER, + DEPLOY_LOG_PORTAL_TARGET, + DEPLOY_LOG_PORTAL_TARGET_VERIFIED, + DEPLOY_LOG_PORTAL_PROXY, + DEPLOY_LOG_PORTAL_PROXY_VERIFIED, + DEPLOY_LOG_DEPLOY_TX_HASH, + DEPLOY_LOG_DEPLOY_BLOCK_NUMBER, +} from './deploy_log_name'; +import { task, types } from 'hardhat/config'; + +function getPortalContractName() { + return 'MergeTokenPortal'; +} + +function getMergeTokenContractName() { + return 'ERC20MergeToken'; +} + +task('deployPortal', 'Deploy portal') + .addParam('force', 'Fore redeploy all contracts', false, types.boolean, true) + .addParam('skipVerify', 'Skip verify', false, types.boolean, true) + .setAction(async (taskArgs, hardhat) => { + let force = taskArgs.force; + let skipVerify = taskArgs.skipVerify; + console.log('force redeploy all contracts?', force); + console.log('skip verify contracts?', skipVerify); + + const contractDeployer = new ChainContractDeployer(hardhat); + await contractDeployer.init(); + const deployerWallet = contractDeployer.deployerWallet; + + const { deployLogPath, deployLog } = createOrGetDeployLog(DEPLOY_PORTAL_LOG, hardhat.network.name); + const dLog = deployLog as any; + dLog[DEPLOY_LOG_DEPLOYER] = await deployerWallet?.getAddress(); + fs.writeFileSync(deployLogPath, JSON.stringify(dLog, null, 2)); + + // deploy portal + let portalAddr; + if (!(DEPLOY_PORTAL_LOG in dLog) || force) { + console.log('deploy portal...'); + const contractName = getPortalContractName(); + const contract = await contractDeployer.deployProxy(contractName, [], { + unsafeAllow: ['constructor'], + }); + const transaction = await getDeployTx(contract); + portalAddr = await contract.getAddress(); + dLog[DEPLOY_LOG_PORTAL_PROXY] = portalAddr; + dLog[DEPLOY_LOG_DEPLOY_TX_HASH] = transaction?.hash; + dLog[DEPLOY_LOG_DEPLOY_BLOCK_NUMBER] = transaction?.blockNumber; + fs.writeFileSync(deployLogPath, JSON.stringify(dLog, null, 2)); + } else { + portalAddr = dLog[DEPLOY_LOG_PORTAL_PROXY]; + } + console.log('portal', portalAddr); + + let portalTargetAddr; + if (!(DEPLOY_LOG_PORTAL_TARGET in dLog) || force) { + console.log('get portal target...'); + portalTargetAddr = await getImplementationAddress(hardhat.ethers.provider, portalAddr); + dLog[DEPLOY_LOG_PORTAL_TARGET] = portalTargetAddr; + fs.writeFileSync(deployLogPath, JSON.stringify(dLog, null, 2)); + } else { + portalTargetAddr = dLog[DEPLOY_LOG_PORTAL_TARGET]; + } + console.log('portal target', portalTargetAddr); + + // verify target contract + if ((!(DEPLOY_LOG_PORTAL_TARGET_VERIFIED in dLog) || force) && !skipVerify) { + await verifyContractCode(hardhat, portalTargetAddr, []); + dLog[DEPLOY_LOG_PORTAL_TARGET_VERIFIED] = true; + fs.writeFileSync(deployLogPath, JSON.stringify(dLog, null, 2)); + } + + // verify proxy contract + if ((!(DEPLOY_LOG_PORTAL_PROXY_VERIFIED in dLog) || force) && !skipVerify) { + await verifyContractCode(hardhat, portalAddr, []); + dLog[DEPLOY_LOG_PORTAL_PROXY_VERIFIED] = true; + fs.writeFileSync(deployLogPath, JSON.stringify(dLog, null, 2)); + } + }); + +task('upgradePortal', 'Upgrade portal') + .addParam('skipVerify', 'Skip verify', false, types.boolean, true) + .setAction(async (taskArgs, hardhat) => { + let skipVerify = taskArgs.skipVerify; + console.log('skipVerify', skipVerify); + + const { deployLogPath, deployLog } = createOrGetDeployLog(DEPLOY_PORTAL_LOG, hardhat.network.name); + const dLog = deployLog as any; + const contractAddr = dLog[DEPLOY_LOG_PORTAL_PROXY]; + if (contractAddr === undefined) { + console.log('portal address not exist'); + return; + } + console.log('portal', contractAddr); + const oldContractTargetAddr = dLog[DEPLOY_LOG_PORTAL_TARGET]; + if (oldContractTargetAddr === undefined) { + console.log('portal target address not exist'); + return; + } + console.log('portal old target', oldContractTargetAddr); + + const contractDeployer = new ChainContractDeployer(hardhat); + await contractDeployer.init(); + + console.log('upgrade portal...'); + const contractName = getPortalContractName(); + const contract = await contractDeployer.upgradeProxy(contractName, contractAddr, { + unsafeAllow: ['constructor'], + }); + const tx = await getDeployTx(contract); + console.log('upgrade tx', tx?.hash); + const newContractTargetAddr = await getImplementationAddress(hardhat.ethers.provider, contractAddr); + dLog[DEPLOY_LOG_PORTAL_TARGET] = newContractTargetAddr; + console.log('portal new target', newContractTargetAddr); + fs.writeFileSync(deployLogPath, JSON.stringify(dLog, null, 2)); + + // verify target contract + if (!skipVerify) { + await verifyContractCode(hardhat, newContractTargetAddr, []); + dLog[DEPLOY_LOG_PORTAL_TARGET_VERIFIED] = true; + fs.writeFileSync(deployLogPath, JSON.stringify(dLog, null, 2)); + } + }); + +task('deployPortalTarget', 'Deploy portal target') + .addOptionalParam('skipVerify', 'Skip verify', false, types.boolean) + .setAction(async (taskArgs, hardhat) => { + let skipVerify = taskArgs.skipVerify; + console.log('skip verify contracts?', skipVerify); + + const contractDeployer = new ChainContractDeployer(hardhat); + await contractDeployer.init(); + const deployerWallet = contractDeployer.deployerWallet; + + const { deployLogPath, deployLog } = createOrGetDeployLog(DEPLOY_PORTAL_LOG, hardhat.network.name); + const dLog = deployLog as any; + dLog[DEPLOY_LOG_DEPLOYER] = await deployerWallet?.getAddress(); + fs.writeFileSync(deployLogPath, JSON.stringify(dLog, null, 2)); + + // deploy portal target + let portalTargetAddr; + console.log('deploy portal target...'); + const contractName = getPortalContractName(); + const contract = await contractDeployer.deployContract(contractName, []); + const transaction = await getDeployTx(contract); + console.log('deploy tx hash', transaction?.hash); + portalTargetAddr = await contract.getAddress(); + dLog[DEPLOY_LOG_PORTAL_TARGET] = portalTargetAddr; + fs.writeFileSync(deployLogPath, JSON.stringify(dLog, null, 2)); + console.log('portal', portalTargetAddr); + + // verify target contract + if (!skipVerify) { + await verifyContractCode(hardhat, portalTargetAddr, []); + dLog[DEPLOY_LOG_PORTAL_TARGET_VERIFIED] = true; + fs.writeFileSync(deployLogPath, JSON.stringify(dLog, null, 2)); + } + }); + +task('encodeAddSourceToken', 'Get the calldata of add source token for portal') + .addParam('source', 'Source token address', undefined, types.string, false) + .addParam('merge', 'Merge token address', undefined, types.string, false) + .addParam('limit', 'The amount of limit with deposit all source token', undefined, types.int, false) + .addParam('portal', 'The portal address (default get from portal deploy log)', undefined, types.string, true) + .setAction(async (taskArgs, hre) => { + let sourceToken = taskArgs.source; + let mergeToken = taskArgs.merge; + let limit = taskArgs.limit; + let portal = taskArgs.portal; + console.log('sourceToken', sourceToken); + console.log('mergeToken', mergeToken); + console.log('limit', limit); + if (portal === undefined) { + portal = readDeployContract(DEPLOY_PORTAL_LOG, DEPLOY_LOG_PORTAL_PROXY, hre.network.name); + } + console.log('portal address', portal); + + const mergeTokenContract = await hre.ethers.getContractAt(getMergeTokenContractName(), mergeToken); + const decimals = await mergeTokenContract.decimals(); + const limitValue = hre.ethers.parseUnits(limit.toString(), decimals); + console.log('limitValue', limitValue.toString()); + + const portalContract = await hre.ethers.getContractAt(getPortalContractName(), portal); + const calldata = portalContract.interface.encodeFunctionData('addSourceToken', [ + sourceToken, + mergeToken, + limitValue, + ]); + console.log('calldata', calldata); + + return calldata; + }); + +task('encodeRemoveSourceToken', 'Get the calldata of remove source token for portal') + .addParam('source', 'Source token address', undefined, types.string, false) + .addParam('portal', 'The portal address (default get from portal deploy log)', undefined, types.string, true) + .setAction(async (taskArgs, hre) => { + let sourceToken = taskArgs.source; + let portal = taskArgs.portal; + console.log('sourceToken', sourceToken); + if (portal === undefined) { + portal = readDeployContract(DEPLOY_PORTAL_LOG, DEPLOY_LOG_PORTAL_PROXY, hre.network.name); + } + console.log('portal address', portal); + + const portalContract = await hre.ethers.getContractAt(getPortalContractName(), portal); + const calldata = portalContract.interface.encodeFunctionData('removeSourceToken', [sourceToken]); + console.log('calldata', calldata); + + return calldata; + }); + +task('encodeUpdateDepositStatus', 'Get the calldata of update deposit status for portal') + .addParam('source', 'Source token address', undefined, types.string, false) + .addParam('lock', 'The lock status of deposit', undefined, types.boolean, false) + .addParam('portal', 'The portal address (default get from portal deploy log)', undefined, types.string, true) + .setAction(async (taskArgs, hre) => { + let sourceToken = taskArgs.source; + let lock = taskArgs.lock; + let portal = taskArgs.portal; + console.log('sourceToken', sourceToken); + console.log('lock status', lock); + if (portal === undefined) { + portal = readDeployContract(DEPLOY_PORTAL_LOG, DEPLOY_LOG_PORTAL_PROXY, hre.network.name); + } + console.log('portal address', portal); + + const portalContract = await hre.ethers.getContractAt(getPortalContractName(), portal); + const calldata = portalContract.interface.encodeFunctionData('updateDepositStatus', [sourceToken, lock]); + console.log('calldata', calldata); + + return calldata; + }); + +task('encodeUpdateDepositLimit', 'Get the calldata of update deposit limit for portal') + .addParam('source', 'Source token address', undefined, types.string, false) + .addParam('limit', 'The amount of limit with deposit all source token', undefined, types.int, false) + .addParam('portal', 'The portal address (default get from portal deploy log)', undefined, types.string, true) + .setAction(async (taskArgs, hre) => { + let sourceToken = taskArgs.source; + let limit = taskArgs.limit; + let portal = taskArgs.portal; + console.log('sourceToken', sourceToken); + console.log('limit', limit); + if (portal === undefined) { + portal = readDeployContract(DEPLOY_PORTAL_LOG, DEPLOY_LOG_PORTAL_PROXY, hre.network.name); + } + console.log('portal address', portal); + + const portalContract = await hre.ethers.getContractAt(getPortalContractName(), portal); + const sourceTokenInfos = await portalContract.getSourceTokenInfos(sourceToken); + const mergeToken = (sourceTokenInfos as any).mergeToken; + + const mergeTokenContract = await hre.ethers.getContractAt(getMergeTokenContractName(), mergeToken); + const decimals = await mergeTokenContract.decimals(); + const limitValue = hre.ethers.parseUnits(limit.toString(), decimals); + console.log('limitValue', limitValue.toString()); + + const calldata = portalContract.interface.encodeFunctionData('setDepositLimit', [sourceToken, limitValue]); + console.log('calldata', calldata); + + return calldata; + }); diff --git a/script/utils.ts b/script/utils.ts new file mode 100644 index 0000000..2451419 --- /dev/null +++ b/script/utils.ts @@ -0,0 +1,208 @@ +import * as fs from 'fs'; +import * as path from 'path'; +import { Wallet, Provider } from 'zksync-ethers'; +import { Deployer } from '@matterlabs/hardhat-zksync-deploy'; +import { HardhatRuntimeEnvironment, Network, HttpNetworkConfig, HardhatNetworkAccountConfig } from 'hardhat/types'; +import { BaseContract, Signer, Contract, ContractTransactionResponse } from 'ethers'; +import { DeployProxyOptions, UpgradeProxyOptions } from '@openzeppelin/hardhat-upgrades/src/utils/options'; +import * as dotenv from 'dotenv'; +dotenv.config(); + +export async function verifyContractCode( + hardhat: HardhatRuntimeEnvironment, + address: string, + constructorArguments: any[], +) { + // contract code may be not exist after tx send to chain + // try every one minutes if verify failed + console.log('verify %s code...', address); + + /*eslint no-constant-condition: ["error", { "checkLoops": false }]*/ + while (true) { + try { + await hardhat.run('verify:verify', { + address: address, + constructorArguments: constructorArguments, + }); + console.log('contract code verified success'); + return; + } catch (e: any) { + if ( + e.message.includes('Already Verified') || + e.message.includes('already verified') || + e.message.includes('Contract source code already verified') || + e.message.includes('Smart-contract already verified') + ) { + console.log('contract code already verified'); + return; + } else { + console.warn('verify code failed: %s', e.message); + } + } + await new Promise(r => setTimeout(r, 60000)); + } +} + +export async function getDeployTx(contract: any) { + if (contract.deployTransaction !== undefined) { + // ethers v5 + return await contract.deployTransaction.wait(); + } else if (contract.deploymentTransaction !== undefined) { + // ethers v6 + return (contract.deploymentTransaction() as ContractTransactionResponse).wait(); + } else { + return undefined; + } +} + +export function createOrGetDeployLog(name: string, network: string) { + const deployLogPath = getDeployLogPath(name, network); + console.log('deploy log path', deployLogPath); + const logPath = path.dirname(deployLogPath); + if (!fs.existsSync(logPath)) { + fs.mkdirSync(logPath, { recursive: true }); + } + + let deployLog = {}; + if (fs.existsSync(deployLogPath)) { + const data = fs.readFileSync(deployLogPath, 'utf8'); + deployLog = JSON.parse(data); + } + return { deployLogPath, deployLog }; +} + +export function getDeployLog(name: string, network: string) { + const deployLogPath = getDeployLogPath(name, network); + console.log('deploy log path', deployLogPath); + if (!fs.existsSync(deployLogPath)) { + throw 'deploy log not exist'; + } + const data = fs.readFileSync(deployLogPath, 'utf8'); + let deployLog = JSON.parse(data); + return { deployLogPath, deployLog }; +} + +export function readDeployContract(logName: string, contractName: string, network: string) { + return readDeployLogField(logName, contractName, network); +} + +export function readDeployLogField(logName: string, fieldName: string, network: string) { + const deployLogPath = getDeployLogPath(logName, network); + if (!fs.existsSync(deployLogPath)) { + throw 'deploy log not exist: ' + deployLogPath; + } + const data = fs.readFileSync(deployLogPath, 'utf8'); + const deployLog = JSON.parse(data); + const fieldValue = deployLog[fieldName]; + if (fieldValue === undefined) { + throw fieldName + ' not exit'; + } + return fieldValue; +} + +export function getLogName(prefix: string, netName: string) { + return prefix + '_' + netName; +} + +export function getDeployLogPath(logName: string, network: string) { + const zkLinkRoot = path.resolve(__dirname, '..'); + return `${zkLinkRoot}/log/${logName}_${network}.log`; +} + +export class ChainContractDeployer { + hardhat: HardhatRuntimeEnvironment; + deployerWallet: Wallet | Signer | undefined; + zkSyncProvider: Provider | undefined; + zkSyncDeployer: Deployer | undefined; + zksync: boolean | undefined; + + constructor(hardhat: HardhatRuntimeEnvironment) { + this.hardhat = hardhat; + } + + async init() { + console.log('init contract deployer...'); + const network: Network = this.hardhat.network; + const networkConfig = network.config; + // a flag to identify if chain is zksync + this.zksync = network.zksync !== undefined && network.zksync; + console.log('deploy on zksync?', this.zksync); + + if (!process.env.WALLET_PRIVATE_KEY) throw "⛔️ Wallet private key wasn't found in .env file!"; + const deployerKey = process.env.WALLET_PRIVATE_KEY; + if (this.zksync) { + this.zkSyncProvider = new Provider((networkConfig as HttpNetworkConfig).url); + this.deployerWallet = new Wallet(deployerKey, this.zkSyncProvider); + this.zkSyncDeployer = new Deployer(this.hardhat, this.deployerWallet as Wallet); + } else { + [this.deployerWallet] = await this.hardhat.ethers.getSigners(); + } + + const deployerAAddr = await this.deployerWallet.getAddress(); + console.log('deployer', deployerAAddr); + const balance = await this.hardhat.ethers.provider.getBalance(deployerAAddr); + console.log('deployer balance', this.hardhat.ethers.formatEther(balance)); + } + + async deployContract(contractName: string, deployArgs: any[]) { + let contract: BaseContract; + if (this.zksync) { + const artifact = await (this.zkSyncDeployer as Deployer).loadArtifact(contractName); + contract = await (this.zkSyncDeployer as Deployer).deploy(artifact, deployArgs); + } else { + const factory = await this.hardhat.ethers.getContractFactory(contractName); + contract = await factory.connect(this.deployerWallet as Signer).deploy(...deployArgs); + } + await contract.waitForDeployment(); + return contract; + } + + async deployProxy(contractName: string, initArgs: any[], opts: DeployProxyOptions) { + let { initializer, constructorArgs, kind } = opts; + if (constructorArgs === undefined) { + constructorArgs = []; + } + if (kind === undefined) { + kind = 'uups'; + } + let contract; + if (this.zksync) { + const artifact = await (this.zkSyncDeployer as Deployer).loadArtifact(contractName); + contract = await this.hardhat.zkUpgrades.deployProxy(this.deployerWallet as Wallet, artifact, initArgs, { + kind: kind, + constructorArgs: constructorArgs, + unsafeAllow: opts.unsafeAllow, + initializer: opts.initializer, + }); + } else { + const factory = await this.hardhat.ethers.getContractFactory(contractName, this.deployerWallet); + contract = await this.hardhat.upgrades.deployProxy(factory, initArgs, { + kind: kind, + constructorArgs: constructorArgs, + unsafeAllow: opts.unsafeAllow, + initializer: opts.initializer, + }); + } + await contract.waitForDeployment(); + return contract; + } + + async upgradeProxy(contractName: string, contractAddr: string, opts: UpgradeProxyOptions) { + let contract; + if (this.zksync) { + const artifact = await (this.zkSyncDeployer as Deployer).loadArtifact(contractName); + contract = await this.hardhat.zkUpgrades.upgradeProxy(this.deployerWallet as Wallet, contractAddr, artifact, { + constructorArgs: opts.constructorArgs, + unsafeAllow: opts.unsafeAllow, + }); + } else { + const factory = await this.hardhat.ethers.getContractFactory(contractName, this.deployerWallet); + contract = await this.hardhat.upgrades.upgradeProxy(contractAddr, factory, { + constructorArgs: opts.constructorArgs, + unsafeAllow: opts.unsafeAllow, + }); + } + await contract.waitForDeployment(); + return contract; + } +} diff --git a/test/MergeTokenPortal.test.js b/test/MergeTokenPortal.test.ts similarity index 56% rename from test/MergeTokenPortal.test.js rename to test/MergeTokenPortal.test.ts index 60d61cf..f0c0e10 100644 --- a/test/MergeTokenPortal.test.js +++ b/test/MergeTokenPortal.test.ts @@ -1,13 +1,30 @@ -const { expect } = require('chai'); -const hre = require('hardhat'); -const { ethers, upgrades } = require('hardhat'); +import { expect } from 'chai'; +import * as hre from 'hardhat'; +import { ethers, upgrades } from 'hardhat'; +import { Signer, Contract } from 'ethers'; +import { MergeTokenPortal, MergeTokenPortal__factory, ERC20MergeToken } from '../typechain'; describe('MergeToeknPortal', function () { - let mergeTokenPortal, erc2OSource0MergenToeken; - let owner, recipient, addr1, addr2, addr3; + let mergeTokenPortal: any; + let erc2OSource0MergenToeken: ERC20MergeToken; + let owner: Signer; + let ownerAddr: string; + let recipient: Signer; + let recipientAddr: string; + let user1: Signer; + let user1Addr: string; + let user2: Signer; + let user2Addr: string; + let user3: Signer; + let user3Addr: string; beforeEach(async function () { - [owner, recipient, addr1, addr2, addr3] = await hre.ethers.getSigners(); + [owner, recipient, user1, user2, user3] = await hre.ethers.getSigners(); + ownerAddr = await owner.getAddress(); + recipientAddr = await recipient.getAddress(); + user1Addr = await user1.getAddress(); + user2Addr = await user2.getAddress(); + user3Addr = await user3.getAddress(); const MergeTokenPortal = await ethers.getContractFactory('MergeTokenPortal'); mergeTokenPortal = await upgrades.deployProxy(MergeTokenPortal, [], { @@ -18,23 +35,28 @@ describe('MergeToeknPortal', function () { }); await mergeTokenPortal.waitForDeployment(); const ERC20SourceToeknFactory = await ethers.getContractFactory('ERC20MergeToken'); - erc2OSource0MergenToeken = await ERC20SourceToeknFactory.deploy(owner.address, 'My Source Token', 'MTK', 18); + erc2OSource0MergenToeken = await ERC20SourceToeknFactory.deploy( + await owner.getAddress(), + 'My Source Token', + 'MTK', + 18, + ); }); describe('Ownership tests', function () { - let ERC20TokenFactory, erc20MergeAddr1Token; + let erc20MergeAddr1Token: ERC20MergeToken; beforeEach(async function () { - ERC20TokenFactory = await ethers.getContractFactory('ERC20MergeToken'); - erc20MergeAddr1Token = await ERC20TokenFactory.deploy(addr1.address, 'addr1', 'ADD1TK', 18); + const ERC20TokenFactory = await ethers.getContractFactory('ERC20MergeToken'); + erc20MergeAddr1Token = await ERC20TokenFactory.deploy(user1Addr, 'user1', 'ADD1TK', 18); }); it('Should set the right owner', async function () { - await expect(await mergeTokenPortal.owner()).to.equal(owner.address); + expect(await mergeTokenPortal.owner()).to.equal(ownerAddr); }); it('Should not allow non-owner to add source token', async function () { await expect( - mergeTokenPortal.connect(recipient).addSourceToken(owner.address, recipient.address, 100), + (mergeTokenPortal as MergeTokenPortal).connect(recipient).addSourceToken(ownerAddr, recipientAddr, 100), ).to.be.revertedWith('Ownable: caller is not the owner'); }); @@ -42,11 +64,11 @@ describe('MergeToeknPortal', function () { await mergeTokenPortal .connect(owner) .addSourceToken(erc20MergeAddr1Token.target, erc2OSource0MergenToeken.target, 10000); - await erc20MergeAddr1Token.connect(addr3).approve(mergeTokenPortal.target, 500); - let sourceInfo = await mergeTokenPortal.getSourceTokenInfos(owner.address); + await erc20MergeAddr1Token.connect(user3).approve(mergeTokenPortal.target, 500); + let sourceInfo = await mergeTokenPortal.getSourceTokenInfos(ownerAddr); if (sourceInfo.balance > 0) { - expect(await mergeTokenPortal.removeSourceTkoen(owner.addrss())).to.be.revertedWith( + expect(await mergeTokenPortal.removeSourceTkoen(ownerAddr)).to.be.revertedWith( 'Ownable: caller is not the owner', ); } @@ -54,30 +76,31 @@ describe('MergeToeknPortal', function () { }); describe('Source Token Management', function () { - let ERC20TokenFactory, erc20MergeAddr1Token, erc20MergeAddr2Token; + let erc20MergeAddr1Token: ERC20MergeToken; + let erc20MergeAddr2Token: ERC20MergeToken; beforeEach(async function () { - ERC20TokenFactory = await ethers.getContractFactory('ERC20MergeToken'); - erc20MergeAddr1Token = await ERC20TokenFactory.deploy(addr1.address, 'addr1', 'ADD1TK', 18); - erc20MergeAddr2Token = await ERC20TokenFactory.deploy(mergeTokenPortal.target, 'addr2', 'ADD2TK', 18); + const ERC20TokenFactory = await ethers.getContractFactory('ERC20MergeToken'); + erc20MergeAddr1Token = await ERC20TokenFactory.deploy(user1Addr, 'user1', 'ADD1TK', 18); + erc20MergeAddr2Token = await ERC20TokenFactory.deploy(mergeTokenPortal.target, 'user2', 'ADD2TK', 18); }); it('Should add source token correctly', async function () { - await mergeTokenPortal.connect(owner).addSourceToken(owner.address, recipient.address, 100); - let sourceTokenInfo = await mergeTokenPortal.connect(owner).getSourceTokenInfos(owner.address); + await mergeTokenPortal.connect(owner).addSourceToken(ownerAddr, recipientAddr, 100); + let sourceTokenInfo = await mergeTokenPortal.connect(owner).getSourceTokenInfos(ownerAddr); expect(sourceTokenInfo.isSupported).to.equal(true); expect(sourceTokenInfo.isLocked).to.equal(false); - expect(sourceTokenInfo.mergeToken).to.equal(recipient.address); + expect(sourceTokenInfo.mergeToken).to.equal(recipientAddr); expect(sourceTokenInfo.balance).to.equal(0n); expect(sourceTokenInfo.depositLimit).to.equal(100n); }); it('Should add source token correctly2', async function () { - await mergeTokenPortal.connect(owner).addSourceToken(owner.address, recipient.address, 100); - await mergeTokenPortal.removeSourceToken(owner.address); - await mergeTokenPortal.connect(owner).addSourceToken(owner.address, recipient.address, 1000); - let sourceTokenInfo = await mergeTokenPortal.connect(owner).getSourceTokenInfos(owner.address); + await mergeTokenPortal.connect(owner).addSourceToken(ownerAddr, recipientAddr, 100); + await mergeTokenPortal.removeSourceToken(ownerAddr); + await mergeTokenPortal.connect(owner).addSourceToken(ownerAddr, recipientAddr, 1000); + let sourceTokenInfo = await mergeTokenPortal.connect(owner).getSourceTokenInfos(ownerAddr); expect(sourceTokenInfo.isSupported).to.equal(true); expect(sourceTokenInfo.isLocked).to.equal(false); - expect(sourceTokenInfo.mergeToken).to.equal(recipient.address); + expect(sourceTokenInfo.mergeToken).to.equal(recipientAddr); expect(sourceTokenInfo.balance).to.equal(0n); expect(sourceTokenInfo.depositLimit).to.equal(1000n); }); @@ -86,14 +109,14 @@ describe('MergeToeknPortal', function () { await expect( mergeTokenPortal .connect(owner) - .addSourceToken('0x0000000000000000000000000000000000000000', recipient.address, 100), + .addSourceToken('0x0000000000000000000000000000000000000000', recipientAddr, 100), ).to.be.revertedWith('Invalid token address'); }); it('Should remove a source token', async function () { - await mergeTokenPortal.connect(owner).addSourceToken(owner.address, recipient.address, 100); - await mergeTokenPortal.connect(owner).removeSourceToken(owner.address); - let sourceTokenInfo = await mergeTokenPortal.getSourceTokenInfos(owner.address); + await mergeTokenPortal.connect(owner).addSourceToken(ownerAddr, recipientAddr, 100); + await mergeTokenPortal.connect(owner).removeSourceToken(ownerAddr); + let sourceTokenInfo = await mergeTokenPortal.getSourceTokenInfos(ownerAddr); expect(sourceTokenInfo.isSupported).to.equal(false); expect(sourceTokenInfo.isLocked).to.equal(false); expect(sourceTokenInfo.balance).to.equal(0n); @@ -101,11 +124,11 @@ describe('MergeToeknPortal', function () { }); it('Should remove a source token2', async function () { - await mergeTokenPortal.connect(owner).addSourceToken(owner.address, recipient.address, 100); - await mergeTokenPortal.connect(owner).removeSourceToken(owner.address); - await mergeTokenPortal.connect(owner).addSourceToken(owner.address, recipient.address, 100); - await mergeTokenPortal.connect(owner).removeSourceToken(owner.address); - let sourceTokenInfo = await mergeTokenPortal.getSourceTokenInfos(owner.address); + await mergeTokenPortal.connect(owner).addSourceToken(ownerAddr, recipientAddr, 100); + await mergeTokenPortal.connect(owner).removeSourceToken(ownerAddr); + await mergeTokenPortal.connect(owner).addSourceToken(ownerAddr, recipientAddr, 100); + await mergeTokenPortal.connect(owner).removeSourceToken(ownerAddr); + let sourceTokenInfo = await mergeTokenPortal.getSourceTokenInfos(ownerAddr); expect(sourceTokenInfo.isSupported).to.equal(false); expect(sourceTokenInfo.isLocked).to.equal(false); expect(sourceTokenInfo.balance).to.equal(0n); @@ -116,12 +139,12 @@ describe('MergeToeknPortal', function () { await mergeTokenPortal .connect(owner) .addSourceToken(erc20MergeAddr1Token.target, erc20MergeAddr2Token.target, 10000); - await erc20MergeAddr1Token.connect(addr2).approve(mergeTokenPortal.target, 1000); - await erc20MergeAddr1Token.connect(addr1).approve(mergeTokenPortal.target, 1000); - await erc20MergeAddr1Token.connect(addr1).mint(addr2.address, 100); - await erc20MergeAddr1Token.connect(addr1).mint(addr1.address, 100); - await mergeTokenPortal.connect(addr1).deposit(erc20MergeAddr1Token.target, 10, addr1.address); - const balance = await erc20MergeAddr1Token.connect(addr1).balanceOf(addr1); + await erc20MergeAddr1Token.connect(user2).approve(mergeTokenPortal.target, 1000); + await erc20MergeAddr1Token.connect(user1).approve(mergeTokenPortal.target, 1000); + await erc20MergeAddr1Token.connect(user1).mint(user2Addr, 100); + await erc20MergeAddr1Token.connect(user1).mint(user1Addr, 100); + await mergeTokenPortal.connect(user1).deposit(erc20MergeAddr1Token.target, 10, user1Addr); + const balance = await erc20MergeAddr1Token.connect(user1).balanceOf(user1); expect(balance).to.equal(90n); await expect(mergeTokenPortal.connect(owner).removeSourceToken(erc20MergeAddr1Token.target)).to.be.revertedWith( 'Source Token balance is not zero', @@ -131,56 +154,57 @@ describe('MergeToeknPortal', function () { describe('Minting and Burning Tests', function () { it('Should mint tokens onlyPortal', async function () { - await expect(erc2OSource0MergenToeken.connect(recipient).mint(recipient.address, 100)).to.be.revertedWith( + await expect(erc2OSource0MergenToeken.connect(recipient).mint(recipientAddr, 100)).to.be.revertedWith( 'Not portal', ); }); it('Should burn tokens onlyPortal', async function () { - await expect(erc2OSource0MergenToeken.connect(recipient).burn(recipient.address, 100)).to.be.revertedWith( + await expect(erc2OSource0MergenToeken.connect(recipient).burn(recipientAddr, 100)).to.be.revertedWith( 'Not portal', ); }); it('Should mint tokens correctly', async function () { - await erc2OSource0MergenToeken.connect(owner).mint(recipient.address, 100); - await erc2OSource0MergenToeken.connect(owner).burn(recipient.address, 10); - await expect(await erc2OSource0MergenToeken.balanceOf(recipient.address)).to.equal(90n); + await erc2OSource0MergenToeken.connect(owner).mint(recipientAddr, 100); + await erc2OSource0MergenToeken.connect(owner).burn(recipientAddr, 10); + await expect(await erc2OSource0MergenToeken.balanceOf(recipientAddr)).to.equal(90n); }); it('Should burn tokens correctly', async function () { - await erc2OSource0MergenToeken.connect(owner).mint(recipient.address, 200); - await erc2OSource0MergenToeken.connect(owner).burn(recipient.address, 100); - await expect(await erc2OSource0MergenToeken.balanceOf(recipient.address)).to.equal(100n); + await erc2OSource0MergenToeken.connect(owner).mint(recipientAddr, 200); + await erc2OSource0MergenToeken.connect(owner).burn(recipientAddr, 100); + await expect(await erc2OSource0MergenToeken.balanceOf(recipientAddr)).to.equal(100n); }); }); describe('Deposit Tests', function () { - let ERC20TokenFactory, erc20MergeAddr1Token, erc20MergeAddr2Token; + let erc20MergeAddr1Token: ERC20MergeToken; + let erc20MergeAddr2Token: ERC20MergeToken; beforeEach(async function () { - ERC20TokenFactory = await ethers.getContractFactory('ERC20MergeToken'); - erc20MergeAddr1Token = await ERC20TokenFactory.deploy(addr1.address, 'addr1', 'ADD1TK', 18); - erc20MergeAddr2Token = await ERC20TokenFactory.deploy(mergeTokenPortal.target, 'addr2', 'ADD2TK', 18); + const ERC20TokenFactory = await ethers.getContractFactory('ERC20MergeToken'); + erc20MergeAddr1Token = await ERC20TokenFactory.deploy(user1Addr, 'user1', 'ADD1TK', 18); + erc20MergeAddr2Token = await ERC20TokenFactory.deploy(mergeTokenPortal.target, 'user2', 'ADD2TK', 18); }); it('should revert when trying to deposit unsupported token', async () => { await expect( - mergeTokenPortal.connect(addr2).deposit(erc20MergeAddr1Token.target, 1000, addr1.address), + mergeTokenPortal.connect(user2).deposit(erc20MergeAddr1Token.target, 1000, user1Addr), ).to.be.revertedWith('Source token is not supported'); }); it('Should disable updateDepositStatus disabledeposit if Source token is not supported', async function () { - await erc20MergeAddr1Token.connect(addr2).approve(mergeTokenPortal.target, 1000); - await erc20MergeAddr1Token.connect(addr1).approve(mergeTokenPortal.target, 1000); - await erc20MergeAddr1Token.connect(addr1).mint(addr2.address, 100); - await erc20MergeAddr1Token.connect(addr1).mint(addr1.address, 100); - const balance1 = await erc20MergeAddr1Token.connect(addr1).balanceOf(addr1); - const balance2 = await erc20MergeAddr1Token.connect(addr1).balanceOf(addr1); + await erc20MergeAddr1Token.connect(user2).approve(mergeTokenPortal.target, 1000); + await erc20MergeAddr1Token.connect(user1).approve(mergeTokenPortal.target, 1000); + await erc20MergeAddr1Token.connect(user1).mint(user2Addr, 100); + await erc20MergeAddr1Token.connect(user1).mint(user1Addr, 100); + const balance1 = await erc20MergeAddr1Token.connect(user1).balanceOf(user1); + const balance2 = await erc20MergeAddr1Token.connect(user1).balanceOf(user1); expect(balance1).to.equal(100n); expect(balance2).to.equal(100n); await expect( mergeTokenPortal.connect(owner).updateDepositStatus(erc20MergeAddr1Token.target, true), ).to.be.revertedWith('Source token is not supported'); await expect( - mergeTokenPortal.connect(addr1).deposit(erc20MergeAddr1Token.target, 10, addr1.address), + mergeTokenPortal.connect(user1).deposit(erc20MergeAddr1Token.target, 10, user1Addr), ).to.be.revertedWith('Source token is not supported'); }); it('Should not allow non-owner to update deposit status when token is supported', async function () { @@ -190,7 +214,7 @@ describe('MergeToeknPortal', function () { let sourceInfo = await mergeTokenPortal.getSourceTokenInfos(erc20MergeAddr1Token.target); if (sourceInfo.isSupported) { await expect( - mergeTokenPortal.connect(addr3).updateDepositStatus(erc20MergeAddr1Token.target, true), + mergeTokenPortal.connect(user3).updateDepositStatus(erc20MergeAddr1Token.target, true), ).to.be.revertedWith('Ownable: caller is not the owner'); } }); @@ -198,7 +222,7 @@ describe('MergeToeknPortal', function () { it('Should not allow non-owner to set deposit limit', async function () { const initialAmount = 100; await expect( - mergeTokenPortal.connect(addr3).setDepositLimit(erc20MergeAddr1Token.target, initialAmount), + mergeTokenPortal.connect(user3).setDepositLimit(erc20MergeAddr1Token.target, initialAmount), ).to.be.revertedWith('Ownable: caller is not the owner'); }); @@ -216,14 +240,14 @@ describe('MergeToeknPortal', function () { await mergeTokenPortal .connect(owner) .addSourceToken(erc20MergeAddr1Token.target, erc20MergeAddr2Token.target, 10000); - await erc20MergeAddr1Token.connect(addr2).approve(mergeTokenPortal.target, 1000); - await erc20MergeAddr1Token.connect(addr1).approve(mergeTokenPortal.target, 1000); - await erc20MergeAddr1Token.connect(addr1).mint(addr2.address, 100); - await erc20MergeAddr1Token.connect(addr1).mint(addr1.address, 100); - await mergeTokenPortal.connect(addr1).deposit(erc20MergeAddr1Token.target, 10, addr2.address); + await erc20MergeAddr1Token.connect(user2).approve(mergeTokenPortal.target, 1000); + await erc20MergeAddr1Token.connect(user1).approve(mergeTokenPortal.target, 1000); + await erc20MergeAddr1Token.connect(user1).mint(user2Addr, 100); + await erc20MergeAddr1Token.connect(user1).mint(user1Addr, 100); + await mergeTokenPortal.connect(user1).deposit(erc20MergeAddr1Token.target, 10, user2Addr); let sourceTokenInfo = await mergeTokenPortal.getSourceTokenInfos(erc20MergeAddr1Token.target); - const balance1 = await erc20MergeAddr1Token.connect(addr1).balanceOf(addr1); - const balance2 = await erc20MergeAddr1Token.connect(addr1).balanceOf(addr2); + const balance1 = await erc20MergeAddr1Token.connect(user1).balanceOf(user1); + const balance2 = await erc20MergeAddr1Token.connect(user1).balanceOf(user2); expect(balance1).to.equal(90n); expect(balance2).to.equal(100n); expect(sourceTokenInfo.balance).to.equal(10n); @@ -233,20 +257,20 @@ describe('MergeToeknPortal', function () { await mergeTokenPortal .connect(owner) .addSourceToken(erc20MergeAddr1Token.target, erc20MergeAddr2Token.target, 10000); - await erc20MergeAddr1Token.connect(addr2).approve(mergeTokenPortal.target, 10000); - await erc20MergeAddr1Token.connect(addr1).mint(addr2.address, 10000); - const balance11 = await erc20MergeAddr1Token.connect(addr1).balanceOf(addr1); - const balance22 = await erc20MergeAddr1Token.connect(addr1).balanceOf(addr2); - const balance33 = await erc20MergeAddr2Token.connect(addr1).balanceOf(addr2); - const balance44 = await erc20MergeAddr2Token.connect(addr1).balanceOf(addr1); - await mergeTokenPortal.connect(addr2).deposit(erc20MergeAddr1Token.target, 1000, addr1.address); - await mergeTokenPortal.connect(addr1).withdraw(erc20MergeAddr1Token.target, 500, addr2.address); - await mergeTokenPortal.connect(addr2).deposit(erc20MergeAddr1Token.target, 1000, addr1.address); + await erc20MergeAddr1Token.connect(user2).approve(mergeTokenPortal.target, 10000); + await erc20MergeAddr1Token.connect(user1).mint(user2Addr, 10000); + const balance11 = await erc20MergeAddr1Token.connect(user1).balanceOf(user1); + const balance22 = await erc20MergeAddr1Token.connect(user1).balanceOf(user2); + const balance33 = await erc20MergeAddr2Token.connect(user1).balanceOf(user2); + const balance44 = await erc20MergeAddr2Token.connect(user1).balanceOf(user1); + await mergeTokenPortal.connect(user2).deposit(erc20MergeAddr1Token.target, 1000, user1Addr); + await mergeTokenPortal.connect(user1).withdraw(erc20MergeAddr1Token.target, 500, user2Addr); + await mergeTokenPortal.connect(user2).deposit(erc20MergeAddr1Token.target, 1000, user1Addr); let sourceTokenInfo = await mergeTokenPortal.getSourceTokenInfos(erc20MergeAddr1Token.target); - const balance1 = await erc20MergeAddr1Token.connect(addr1).balanceOf(addr1); - const balance2 = await erc20MergeAddr1Token.connect(addr1).balanceOf(addr2); - const balance3 = await erc20MergeAddr2Token.connect(addr1).balanceOf(addr2); - const balance4 = await erc20MergeAddr2Token.connect(addr1).balanceOf(addr1); + const balance1 = await erc20MergeAddr1Token.connect(user1).balanceOf(user1); + const balance2 = await erc20MergeAddr1Token.connect(user1).balanceOf(user2); + const balance3 = await erc20MergeAddr2Token.connect(user1).balanceOf(user2); + const balance4 = await erc20MergeAddr2Token.connect(user1).balanceOf(user1); expect(balance1).to.equal(0n); expect(balance2).to.equal(8500n); expect(balance3).to.equal(0n); @@ -259,16 +283,16 @@ describe('MergeToeknPortal', function () { }); it('Should not deposit if Source token is not supported', async function () { - await erc20MergeAddr1Token.connect(addr2).approve(mergeTokenPortal.target, 1000); - await erc20MergeAddr1Token.connect(addr1).approve(mergeTokenPortal.target, 1000); - const balance11 = await erc20MergeAddr1Token.connect(addr1).balanceOf(addr1); - const balance22 = await erc20MergeAddr1Token.connect(addr1).balanceOf(addr2); - await erc20MergeAddr1Token.connect(addr1).mint(addr2.address, 100); - await erc20MergeAddr1Token.connect(addr1).mint(addr1.address, 100); - const balance1 = await erc20MergeAddr1Token.connect(addr1).balanceOf(addr1); - const balance2 = await erc20MergeAddr1Token.connect(addr1).balanceOf(addr2); - const balance3 = await erc20MergeAddr2Token.connect(addr1).balanceOf(addr2); - const balance4 = await erc20MergeAddr2Token.connect(addr1).balanceOf(addr1); + await erc20MergeAddr1Token.connect(user2).approve(mergeTokenPortal.target, 1000); + await erc20MergeAddr1Token.connect(user1).approve(mergeTokenPortal.target, 1000); + const balance11 = await erc20MergeAddr1Token.connect(user1).balanceOf(user1); + const balance22 = await erc20MergeAddr1Token.connect(user1).balanceOf(user2); + await erc20MergeAddr1Token.connect(user1).mint(user2Addr, 100); + await erc20MergeAddr1Token.connect(user1).mint(user1Addr, 100); + const balance1 = await erc20MergeAddr1Token.connect(user1).balanceOf(user1); + const balance2 = await erc20MergeAddr1Token.connect(user1).balanceOf(user2); + const balance3 = await erc20MergeAddr2Token.connect(user1).balanceOf(user2); + const balance4 = await erc20MergeAddr2Token.connect(user1).balanceOf(user1); expect(balance1).to.equal(100n); expect(balance2).to.equal(100n); expect(balance3).to.equal(0n); @@ -276,7 +300,7 @@ describe('MergeToeknPortal', function () { expect(balance11).to.equal(0n); expect(balance22).to.equal(0n); await expect( - mergeTokenPortal.connect(owner).deposit(erc20MergeAddr1Token.target, 10, addr1.address), + mergeTokenPortal.connect(owner).deposit(erc20MergeAddr1Token.target, 10, user1Addr), ).to.be.revertedWith('Source token is not supported'); }); @@ -284,16 +308,16 @@ describe('MergeToeknPortal', function () { await mergeTokenPortal .connect(owner) .addSourceToken(erc20MergeAddr1Token.target, erc20MergeAddr2Token.target, 10000); - await erc20MergeAddr1Token.connect(addr2).approve(mergeTokenPortal.target, 1000); - await erc20MergeAddr1Token.connect(addr1).approve(mergeTokenPortal.target, 1000); - await erc20MergeAddr1Token.connect(addr1).mint(addr2.address, 100); - await erc20MergeAddr1Token.connect(addr1).mint(addr1.address, 100); - const balance1 = await erc20MergeAddr1Token.connect(addr1).balanceOf(addr1); - const balance2 = await erc20MergeAddr1Token.connect(addr1).balanceOf(addr2); + await erc20MergeAddr1Token.connect(user2).approve(mergeTokenPortal.target, 1000); + await erc20MergeAddr1Token.connect(user1).approve(mergeTokenPortal.target, 1000); + await erc20MergeAddr1Token.connect(user1).mint(user2Addr, 100); + await erc20MergeAddr1Token.connect(user1).mint(user1Addr, 100); + const balance1 = await erc20MergeAddr1Token.connect(user1).balanceOf(user1); + const balance2 = await erc20MergeAddr1Token.connect(user1).balanceOf(user2); expect(balance1).to.equal(100n); expect(balance2).to.equal(100n); await expect( - mergeTokenPortal.connect(addr1).deposit(erc20MergeAddr1Token.target, 0, addr1.address), + mergeTokenPortal.connect(user1).deposit(erc20MergeAddr1Token.target, 0, user1Addr), ).to.be.revertedWith('Deposit amount is zero'); }); @@ -311,11 +335,11 @@ describe('MergeToeknPortal', function () { .connect(owner) .addSourceToken(erc20MergeAddr1Token.target, erc20MergeAddr2Token.target, 10000); await mergeTokenPortal.connect(owner).updateDepositStatus(erc20MergeAddr1Token.target, true); - await erc20MergeAddr1Token.connect(addr1).mint(addr1.address, 10000); - const balance1 = await erc20MergeAddr1Token.connect(addr1).balanceOf(addr1); + await erc20MergeAddr1Token.connect(user1).mint(user1Addr, 10000); + const balance1 = await erc20MergeAddr1Token.connect(user1).balanceOf(user1); expect(balance1).to.equal(10000n); await expect( - mergeTokenPortal.connect(addr1).deposit(erc20MergeAddr1Token.target, 1000, owner.address), + mergeTokenPortal.connect(user1).deposit(erc20MergeAddr1Token.target, 1000, ownerAddr), ).to.be.revertedWith('Source token is locked'); }); @@ -324,10 +348,10 @@ describe('MergeToeknPortal', function () { .connect(owner) .addSourceToken(erc20MergeAddr1Token.target, erc2OSource0MergenToeken.target, 10000); await erc20MergeAddr1Token.connect(owner).approve(mergeTokenPortal.target, 1000); - await erc20MergeAddr1Token.connect(addr1).mint(owner.address, 10000); + await erc20MergeAddr1Token.connect(user1).mint(ownerAddr, 10000); await mergeTokenPortal.connect(owner).setDepositLimit(erc20MergeAddr1Token.target, 500); let sourceTokenInfo = await mergeTokenPortal.getSourceTokenInfos(erc20MergeAddr1Token.target); - const balance1 = await erc20MergeAddr1Token.connect(addr1).balanceOf(owner.address); + const balance1 = await erc20MergeAddr1Token.connect(user1).balanceOf(ownerAddr); expect(balance1).to.equal(10000n); expect(sourceTokenInfo.depositLimit).to.equal(500); }); @@ -337,24 +361,25 @@ describe('MergeToeknPortal', function () { .connect(owner) .addSourceToken(erc20MergeAddr1Token.target, erc2OSource0MergenToeken.target, 10000); await erc20MergeAddr1Token.connect(owner).approve(mergeTokenPortal.target, 1000); - await erc20MergeAddr1Token.connect(addr1).mint(owner.address, 10000); + await erc20MergeAddr1Token.connect(user1).mint(ownerAddr, 10000); await mergeTokenPortal.connect(owner).setDepositLimit(erc20MergeAddr1Token.target, 500); - await expect( - mergeTokenPortal.connect(owner).deposit(erc20MergeAddr1Token, 1000, owner.address), - ).to.be.revertedWith('Source token deposit limit exceeded'); + await expect(mergeTokenPortal.connect(owner).deposit(erc20MergeAddr1Token, 1000, ownerAddr)).to.be.revertedWith( + 'Source token deposit limit exceeded', + ); }); }); describe('Withdrawal Tests ', function () { - let ERC20TokenFactory, erc20MergeAddr1Token, erc20MergeAddr2Token; + let erc20MergeAddr1Token: ERC20MergeToken; + let erc20MergeAddr2Token: ERC20MergeToken; beforeEach(async function () { - ERC20TokenFactory = await ethers.getContractFactory('ERC20MergeToken'); - erc20MergeAddr1Token = await ERC20TokenFactory.deploy(addr1.address, 'addr1', 'ADD1TK', 18); - erc20MergeAddr2Token = await ERC20TokenFactory.deploy(mergeTokenPortal.target, 'addr2', 'ADD2TK', 18); + const ERC20TokenFactory = await ethers.getContractFactory('ERC20MergeToken'); + erc20MergeAddr1Token = await ERC20TokenFactory.deploy(user1Addr, 'user1', 'ADD1TK', 18); + erc20MergeAddr2Token = await ERC20TokenFactory.deploy(mergeTokenPortal.target, 'user2', 'ADD2TK', 18); }); it('should revert when trying to deposit zero amount', async () => { await expect( - mergeTokenPortal.connect(addr2).deposit(erc20MergeAddr1Token.target, 0, addr1.address), + mergeTokenPortal.connect(user2).deposit(erc20MergeAddr1Token.target, 0, user1Addr), ).to.be.revertedWith('Deposit amount is zero'); }); @@ -362,13 +387,13 @@ describe('MergeToeknPortal', function () { await mergeTokenPortal .connect(owner) .addSourceToken(erc20MergeAddr1Token.target, erc20MergeAddr2Token.target, 10000); - await erc20MergeAddr1Token.connect(addr2).approve(mergeTokenPortal.target, 1000); - await erc20MergeAddr1Token.connect(addr1).mint(addr2.address, 10000); - await mergeTokenPortal.connect(addr2).deposit(erc20MergeAddr1Token.target, 1000, addr1.address); - await mergeTokenPortal.connect(addr1).withdraw(erc20MergeAddr1Token.target, 500, addr2.address); + await erc20MergeAddr1Token.connect(user2).approve(mergeTokenPortal.target, 1000); + await erc20MergeAddr1Token.connect(user1).mint(user2Addr, 10000); + await mergeTokenPortal.connect(user2).deposit(erc20MergeAddr1Token.target, 1000, user1Addr); + await mergeTokenPortal.connect(user1).withdraw(erc20MergeAddr1Token.target, 500, user2Addr); let sourceTokenInfo = await mergeTokenPortal.getSourceTokenInfos(erc20MergeAddr1Token.target); - const balance1 = await erc20MergeAddr1Token.connect(addr1).balanceOf(addr1); - const balance2 = await erc20MergeAddr1Token.connect(addr1).balanceOf(addr2); + const balance1 = await erc20MergeAddr1Token.connect(user1).balanceOf(user1); + const balance2 = await erc20MergeAddr1Token.connect(user1).balanceOf(user2); expect(balance1).to.equal(0n); expect(balance2).to.equal(9500n); expect(sourceTokenInfo.balance).to.equal(500); @@ -378,21 +403,21 @@ describe('MergeToeknPortal', function () { await mergeTokenPortal .connect(owner) .addSourceToken(erc20MergeAddr1Token.target, erc20MergeAddr2Token.target, 10000); - await erc20MergeAddr1Token.connect(addr2).approve(mergeTokenPortal.target, 10000); - await erc20MergeAddr1Token.connect(addr1).mint(addr2.address, 10000); - const balance11 = await erc20MergeAddr1Token.connect(addr1).balanceOf(addr1); - const balance22 = await erc20MergeAddr1Token.connect(addr1).balanceOf(addr2); - const balance33 = await erc20MergeAddr2Token.connect(addr1).balanceOf(addr1); - const balance44 = await erc20MergeAddr2Token.connect(addr1).balanceOf(addr2); - await mergeTokenPortal.connect(addr2).deposit(erc20MergeAddr1Token.target, 1000, addr1.address); - await mergeTokenPortal.connect(addr1).withdraw(erc20MergeAddr1Token.target, 500, addr2.address); - await mergeTokenPortal.connect(addr2).deposit(erc20MergeAddr1Token.target, 1000, addr1.address); - await mergeTokenPortal.connect(addr1).withdraw(erc20MergeAddr1Token.target, 500, addr2.address); + await erc20MergeAddr1Token.connect(user2).approve(mergeTokenPortal.target, 10000); + await erc20MergeAddr1Token.connect(user1).mint(user2Addr, 10000); + const balance11 = await erc20MergeAddr1Token.connect(user1).balanceOf(user1); + const balance22 = await erc20MergeAddr1Token.connect(user1).balanceOf(user2); + const balance33 = await erc20MergeAddr2Token.connect(user1).balanceOf(user1); + const balance44 = await erc20MergeAddr2Token.connect(user1).balanceOf(user2); + await mergeTokenPortal.connect(user2).deposit(erc20MergeAddr1Token.target, 1000, user1Addr); + await mergeTokenPortal.connect(user1).withdraw(erc20MergeAddr1Token.target, 500, user2Addr); + await mergeTokenPortal.connect(user2).deposit(erc20MergeAddr1Token.target, 1000, user1Addr); + await mergeTokenPortal.connect(user1).withdraw(erc20MergeAddr1Token.target, 500, user2Addr); let sourceTokenInfo = await mergeTokenPortal.getSourceTokenInfos(erc20MergeAddr1Token.target); - const balance1 = await erc20MergeAddr1Token.connect(addr1).balanceOf(addr1); - const balance2 = await erc20MergeAddr1Token.connect(addr1).balanceOf(addr2); - const balance3 = await erc20MergeAddr2Token.connect(addr1).balanceOf(addr1); - const balance4 = await erc20MergeAddr2Token.connect(addr1).balanceOf(addr2); + const balance1 = await erc20MergeAddr1Token.connect(user1).balanceOf(user1); + const balance2 = await erc20MergeAddr1Token.connect(user1).balanceOf(user2); + const balance3 = await erc20MergeAddr2Token.connect(user1).balanceOf(user1); + const balance4 = await erc20MergeAddr2Token.connect(user1).balanceOf(user2); expect(balance1).to.equal(0n); expect(balance2).to.equal(9000n); expect(balance3).to.equal(1000n); @@ -408,11 +433,11 @@ describe('MergeToeknPortal', function () { await mergeTokenPortal .connect(owner) .addSourceToken(erc20MergeAddr1Token.target, erc20MergeAddr2Token.target, 10000); - await erc20MergeAddr1Token.connect(addr2).approve(mergeTokenPortal.target, 1000); - await erc20MergeAddr1Token.connect(addr1).mint(addr2.address, 10000); - await mergeTokenPortal.connect(addr2).deposit(erc20MergeAddr1Token.target, 1000, addr1.address); + await erc20MergeAddr1Token.connect(user2).approve(mergeTokenPortal.target, 1000); + await erc20MergeAddr1Token.connect(user1).mint(user2Addr, 10000); + await mergeTokenPortal.connect(user2).deposit(erc20MergeAddr1Token.target, 1000, user1Addr); expect( - mergeTokenPortal.connect(addr1).withdraw(erc20MergeAddr1Token.target, 50000, addr2.address), + mergeTokenPortal.connect(user1).withdraw(erc20MergeAddr1Token.target, 50000, user2Addr), ).to.be.revertedWith('Source Token balance is not enough'); }); @@ -420,11 +445,11 @@ describe('MergeToeknPortal', function () { await mergeTokenPortal .connect(owner) .addSourceToken(erc20MergeAddr1Token.target, erc20MergeAddr2Token.target, 10000); - await erc20MergeAddr1Token.connect(addr2).approve(mergeTokenPortal.target, 1000); - await erc20MergeAddr1Token.connect(addr1).mint(addr2.address, 10000); - await mergeTokenPortal.connect(addr2).deposit(erc20MergeAddr1Token.target, 1000, addr1.address); + await erc20MergeAddr1Token.connect(user2).approve(mergeTokenPortal.target, 1000); + await erc20MergeAddr1Token.connect(user1).mint(user2Addr, 10000); + await mergeTokenPortal.connect(user2).deposit(erc20MergeAddr1Token.target, 1000, user1Addr); await expect( - mergeTokenPortal.connect(recipient).withdraw(erc20MergeAddr1Token.target, 1500, owner.address), + mergeTokenPortal.connect(recipient).withdraw(erc20MergeAddr1Token.target, 1500, ownerAddr), ).to.be.revertedWith('Source Token balance is not enough'); }); @@ -432,11 +457,11 @@ describe('MergeToeknPortal', function () { await mergeTokenPortal .connect(owner) .addSourceToken(erc20MergeAddr1Token.target, erc20MergeAddr2Token.target, 10000); - await erc20MergeAddr1Token.connect(addr2).approve(mergeTokenPortal.target, 1000); - await erc20MergeAddr1Token.connect(addr1).mint(addr2.address, 10000); - await mergeTokenPortal.connect(addr2).deposit(erc20MergeAddr1Token.target, 1000, addr1.address); + await erc20MergeAddr1Token.connect(user2).approve(mergeTokenPortal.target, 1000); + await erc20MergeAddr1Token.connect(user1).mint(user2Addr, 10000); + await mergeTokenPortal.connect(user2).deposit(erc20MergeAddr1Token.target, 1000, user1Addr); expect( - mergeTokenPortal.connect(recipient).withdraw(erc20MergeAddr1Token.target, 0, owner.address), + mergeTokenPortal.connect(recipient).withdraw(erc20MergeAddr1Token.target, 0, ownerAddr), ).to.be.revertedWith('Withdraw amount is zero'); }); }); diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..4e44a26 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "target": "es2020", + "module": "commonjs", + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "strict": true, + "skipLibCheck": true, + "resolveJsonModule": true + } +} \ No newline at end of file From c00b100fb7ec99d8c69920843bcb5d2991efd73d Mon Sep 17 00:00:00 2001 From: zkJoaquin Date: Thu, 28 Mar 2024 18:53:42 +0800 Subject: [PATCH 2/4] fix lint --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b5bfc25..e16d8a2 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "lint": "npm run lint:js && npm run lint:sol", "lint:fix": "npm run lint:js:fix && npm run lint:sol:fix", "lint:js": "prettier --log-level warn --ignore-path .gitignore '**/*.{js,ts}' --check && eslint --ignore-path .gitignore .", - "lint:js:fix": "prettier --log-level warn --ignore-path .gitignore '**/*.{js,ts}' --write && eslint --ignore-path .gitignore . --fix", + "lint:js:fix": "prettier --log-level warn --ignore-path .gitignore '**/*.{js,ts}' --write && eslint --no-error-on-unmatched-pattern --ignore-path .gitignore . --fix", "lint:sol": "prettier --log-level warn --ignore-path .gitignore 'contracts/**/*.sol' --check && solhint 'contracts/**/*.sol'", "lint:sol:fix": "prettier --log-level warn --ignore-path .gitignore 'contracts/**/*.sol' --write" }, From 3457a10149c9669955d3862f6bf8dba204688608 Mon Sep 17 00:00:00 2001 From: zkJoaquin Date: Thu, 28 Mar 2024 19:06:54 +0800 Subject: [PATCH 3/4] del force param --- hardhat.config.ts | 3 --- script/deploy_merge_token.ts | 5 +---- script/deploy_portal.ts | 11 ++++------- 3 files changed, 5 insertions(+), 14 deletions(-) diff --git a/hardhat.config.ts b/hardhat.config.ts index a8ff0a1..f35b883 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -7,12 +7,9 @@ import '@matterlabs/hardhat-zksync-verify'; import '@matterlabs/hardhat-zksync-upgradable'; import 'solidity-coverage'; import 'hardhat-abi-exporter'; -import * as dotenv from 'dotenv'; import './script/deploy_portal'; import './script/deploy_merge_token'; -dotenv.config(); - /** * @type import('hardhat/config').HardhatUserConfig */ diff --git a/script/deploy_merge_token.ts b/script/deploy_merge_token.ts index 1fe2e4c..b74e033 100644 --- a/script/deploy_merge_token.ts +++ b/script/deploy_merge_token.ts @@ -30,7 +30,6 @@ task('deployMergeToken', 'Deploy MergeToken') .addParam('symbol', 'The merge token symbol', undefined, types.string, false) .addParam('decimals', 'The merge token decimals', undefined, types.int, false) .addParam('portal', 'The portal address (default get from portal deploy log)', undefined, types.string, true) - .addParam('force', 'Fore redeploy all contracts', false, types.boolean, true) .addParam('skipVerify', 'Skip verify', false, types.boolean, true) .setAction(async (taskArgs, hardhat) => { let name = taskArgs.name; @@ -44,9 +43,7 @@ task('deployMergeToken', 'Deploy MergeToken') if (portal === undefined) { portal = readDeployContract(DEPLOY_PORTAL_LOG, DEPLOY_LOG_PORTAL_PROXY, hardhat.network.name); } - let force = taskArgs.force; let skipVerify = taskArgs.skipVerify; - console.log('force redeploy all contracts?', force); console.log('skip verify contracts?', skipVerify); console.log('portal address:', portal); @@ -64,7 +61,7 @@ task('deployMergeToken', 'Deploy MergeToken') // deploy merge token let mergeTokenAddr; - if (!(DEPLOY_LOG_MERGETOKEN in dLog) || force) { + if (!(DEPLOY_LOG_MERGETOKEN in dLog)) { console.log('deploy merge token...'); const contractName = getContractName(); const contract = await contractDeployer.deployContract(contractName, [portal, name, symbol, decimals]); diff --git a/script/deploy_portal.ts b/script/deploy_portal.ts index 4b21fe0..c99cbd3 100644 --- a/script/deploy_portal.ts +++ b/script/deploy_portal.ts @@ -28,12 +28,9 @@ function getMergeTokenContractName() { } task('deployPortal', 'Deploy portal') - .addParam('force', 'Fore redeploy all contracts', false, types.boolean, true) .addParam('skipVerify', 'Skip verify', false, types.boolean, true) .setAction(async (taskArgs, hardhat) => { - let force = taskArgs.force; let skipVerify = taskArgs.skipVerify; - console.log('force redeploy all contracts?', force); console.log('skip verify contracts?', skipVerify); const contractDeployer = new ChainContractDeployer(hardhat); @@ -47,7 +44,7 @@ task('deployPortal', 'Deploy portal') // deploy portal let portalAddr; - if (!(DEPLOY_PORTAL_LOG in dLog) || force) { + if (!(DEPLOY_PORTAL_LOG in dLog)) { console.log('deploy portal...'); const contractName = getPortalContractName(); const contract = await contractDeployer.deployProxy(contractName, [], { @@ -65,7 +62,7 @@ task('deployPortal', 'Deploy portal') console.log('portal', portalAddr); let portalTargetAddr; - if (!(DEPLOY_LOG_PORTAL_TARGET in dLog) || force) { + if (!(DEPLOY_LOG_PORTAL_TARGET in dLog)) { console.log('get portal target...'); portalTargetAddr = await getImplementationAddress(hardhat.ethers.provider, portalAddr); dLog[DEPLOY_LOG_PORTAL_TARGET] = portalTargetAddr; @@ -76,14 +73,14 @@ task('deployPortal', 'Deploy portal') console.log('portal target', portalTargetAddr); // verify target contract - if ((!(DEPLOY_LOG_PORTAL_TARGET_VERIFIED in dLog) || force) && !skipVerify) { + if ((!(DEPLOY_LOG_PORTAL_TARGET_VERIFIED in dLog)) && !skipVerify) { await verifyContractCode(hardhat, portalTargetAddr, []); dLog[DEPLOY_LOG_PORTAL_TARGET_VERIFIED] = true; fs.writeFileSync(deployLogPath, JSON.stringify(dLog, null, 2)); } // verify proxy contract - if ((!(DEPLOY_LOG_PORTAL_PROXY_VERIFIED in dLog) || force) && !skipVerify) { + if ((!(DEPLOY_LOG_PORTAL_PROXY_VERIFIED in dLog)) && !skipVerify) { await verifyContractCode(hardhat, portalAddr, []); dLog[DEPLOY_LOG_PORTAL_PROXY_VERIFIED] = true; fs.writeFileSync(deployLogPath, JSON.stringify(dLog, null, 2)); From f5518722b20f8f3c23cbe7bec41583b1e511dc13 Mon Sep 17 00:00:00 2001 From: zkJoaquin Date: Thu, 28 Mar 2024 19:15:40 +0800 Subject: [PATCH 4/4] modify limit type --- script/deploy_portal.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/script/deploy_portal.ts b/script/deploy_portal.ts index c99cbd3..755694d 100644 --- a/script/deploy_portal.ts +++ b/script/deploy_portal.ts @@ -73,14 +73,14 @@ task('deployPortal', 'Deploy portal') console.log('portal target', portalTargetAddr); // verify target contract - if ((!(DEPLOY_LOG_PORTAL_TARGET_VERIFIED in dLog)) && !skipVerify) { + if (!(DEPLOY_LOG_PORTAL_TARGET_VERIFIED in dLog) && !skipVerify) { await verifyContractCode(hardhat, portalTargetAddr, []); dLog[DEPLOY_LOG_PORTAL_TARGET_VERIFIED] = true; fs.writeFileSync(deployLogPath, JSON.stringify(dLog, null, 2)); } // verify proxy contract - if ((!(DEPLOY_LOG_PORTAL_PROXY_VERIFIED in dLog)) && !skipVerify) { + if (!(DEPLOY_LOG_PORTAL_PROXY_VERIFIED in dLog) && !skipVerify) { await verifyContractCode(hardhat, portalAddr, []); dLog[DEPLOY_LOG_PORTAL_PROXY_VERIFIED] = true; fs.writeFileSync(deployLogPath, JSON.stringify(dLog, null, 2)); @@ -169,7 +169,7 @@ task('deployPortalTarget', 'Deploy portal target') task('encodeAddSourceToken', 'Get the calldata of add source token for portal') .addParam('source', 'Source token address', undefined, types.string, false) .addParam('merge', 'Merge token address', undefined, types.string, false) - .addParam('limit', 'The amount of limit with deposit all source token', undefined, types.int, false) + .addParam('limit', 'The amount(unit: ether) of limit with deposit all source token', undefined, types.string, false) .addParam('portal', 'The portal address (default get from portal deploy log)', undefined, types.string, true) .setAction(async (taskArgs, hre) => { let sourceToken = taskArgs.source; @@ -186,7 +186,7 @@ task('encodeAddSourceToken', 'Get the calldata of add source token for portal') const mergeTokenContract = await hre.ethers.getContractAt(getMergeTokenContractName(), mergeToken); const decimals = await mergeTokenContract.decimals(); - const limitValue = hre.ethers.parseUnits(limit.toString(), decimals); + const limitValue = hre.ethers.parseUnits(limit, decimals); console.log('limitValue', limitValue.toString()); const portalContract = await hre.ethers.getContractAt(getPortalContractName(), portal); @@ -243,7 +243,7 @@ task('encodeUpdateDepositStatus', 'Get the calldata of update deposit status for task('encodeUpdateDepositLimit', 'Get the calldata of update deposit limit for portal') .addParam('source', 'Source token address', undefined, types.string, false) - .addParam('limit', 'The amount of limit with deposit all source token', undefined, types.int, false) + .addParam('limit', 'The amount(unit: ether) of limit with deposit all source token', undefined, types.string, false) .addParam('portal', 'The portal address (default get from portal deploy log)', undefined, types.string, true) .setAction(async (taskArgs, hre) => { let sourceToken = taskArgs.source; @@ -262,7 +262,7 @@ task('encodeUpdateDepositLimit', 'Get the calldata of update deposit limit for p const mergeTokenContract = await hre.ethers.getContractAt(getMergeTokenContractName(), mergeToken); const decimals = await mergeTokenContract.decimals(); - const limitValue = hre.ethers.parseUnits(limit.toString(), decimals); + const limitValue = hre.ethers.parseUnits(limit, decimals); console.log('limitValue', limitValue.toString()); const calldata = portalContract.interface.encodeFunctionData('setDepositLimit', [sourceToken, limitValue]);