Przeglądaj źródła

Remove dotenv in favor of configuration variables (#178)

* convert env variables to configuration variables

* modify docs and re-add env variable for test scenario

* update lock file

* add infura api key in ci

* update solidity-coverage package

* update readme with GitHub secrets

* remove quotes from mnemonic command

* Remove dotenv

* Run typechain in postcompile instead of postinstall

* Update ci.yml

* docs: polish README

---------

Co-authored-by: Christopher Dedominici <18092467+ChristopherDedominici@users.noreply.github.com>
Co-authored-by: Paul Razvan Berg <paul.razvan.berg@gmail.com>
Franco Victorio 1 rok temu
rodzic
commit
1e00b9449a
7 zmienionych plików z 269 dodań i 207 usunięć
  1. 0 10
      .env.example
  2. 12 1
      .github/workflows/ci.yml
  3. 0 3
      .solcover.js
  4. 18 5
      README.md
  5. 12 22
      hardhat.config.ts
  6. 3 4
      package.json
  7. 224 162
      pnpm-lock.yaml

+ 0 - 10
.env.example

@@ -1,10 +0,0 @@
-export INFURA_API_KEY="zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"
-export MNEMONIC="here is where your twelve words mnemonic should be put my friend"
-
-# Block explorer API keys
-export ARBISCAN_API_KEY="zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"
-export BSCSCAN_API_KEY="zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"
-export ETHERSCAN_API_KEY="zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"
-export OPTIMISM_API_KEY="zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"
-export POLYGONSCAN_API_KEY="zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"
-export SNOWTRACE_API_KEY="zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"

+ 12 - 1
.github/workflows/ci.yml

@@ -1,7 +1,18 @@
 name: "CI"
 name: "CI"
 
 
 env:
 env:
-  DOTENV_CONFIG_PATH: "./.env.example"
+  HARDHAT_VAR_MNEMONIC: "test test test test test test test test test test test junk"
+  HARDHAT_VAR_INFURA_API_KEY: "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"
+# Uncomment the following lines to set your configuration variables using
+# GitHub secrets (https://docs.github.com/en/actions/security-guides/using-secrets-in-github-actions)
+#   HARDHAT_VAR_MNEMONIC: ${{ secrets.Mnemonic }}
+#   HARDHAT_VAR_INFURA_API_KEY: ${{ secrets.InfuraApiKey }}
+#   HARDHAT_VAR_ARBISCAN_API_KEY: ${{ secrets.ArbiscanApiKey }}
+#   HARDHAT_VAR_BSCSCAN_API_KEY: ${{ secrets.BscscanApiKey }}
+#   HARDHAT_VAR_ETHERSCAN_API_KEY: ${{ secrets.EtherscanApiKey }}
+#   HARDHAT_VAR_OPTIMISM_API_KEY: ${{ secrets.OptimismApiKey }}
+#   HARDHAT_VAR_POLYGONSCAN_API_KEY: ${{ secrets.PolygonscanApiKey }}
+#   HARDHAT_VAR_SNOWTRACE_API_KEY: ${{ secrets.SnowtraceApiKey }}
 
 
 on:
 on:
   workflow_dispatch:
   workflow_dispatch:

+ 0 - 3
.solcover.js

@@ -1,7 +1,4 @@
 module.exports = {
 module.exports = {
   istanbulReporter: ["html", "lcov"],
   istanbulReporter: ["html", "lcov"],
-  providerOptions: {
-    mnemonic: process.env.MNEMONIC,
-  },
   skipFiles: ["test"],
   skipFiles: ["test"],
 };
 };

+ 18 - 5
README.md

@@ -60,22 +60,35 @@ request made to the `main` branch.
 
 
 Note though that to make this work, you must use your `INFURA_API_KEY` and your `MNEMONIC` as GitHub secrets.
 Note though that to make this work, you must use your `INFURA_API_KEY` and your `MNEMONIC` as GitHub secrets.
 
 
+For more information on how to set up GitHub secrets, check out the
+[docs](https://docs.github.com/en/actions/security-guides/using-secrets-in-github-actions).
+
 You can edit the CI script in [.github/workflows/ci.yml](./.github/workflows/ci.yml).
 You can edit the CI script in [.github/workflows/ci.yml](./.github/workflows/ci.yml).
 
 
 ## Usage
 ## Usage
 
 
 ### Pre Requisites
 ### Pre Requisites
 
 
-Before being able to run any command, you need to create a `.env` file and set a BIP-39 compatible mnemonic as an
-environment variable. You can follow the example in `.env.example`. If you don't already have a mnemonic, you can use
-this [website](https://iancoleman.io/bip39/) to generate one.
-
-Then, proceed with installing dependencies:
+First, you need to install the dependencies:
 
 
 ```sh
 ```sh
 $ pnpm install
 $ pnpm install
 ```
 ```
 
 
+Then, you need to set up all the required
+[Hardhat Configuration Variables](https://hardhat.org/hardhat-runner/docs/guides/configuration-variables). You might
+also want to install some that are optional.
+
+To assist with the setup process, run `pnpm dlx hardhat vars setup`. To set a particular value, such as a BIP-39
+mnemonic variable, execute this:
+
+```sh
+$ pnpm dlx hardhat vars set MNEMONIC
+? Enter value: ‣ here is where your twelve words mnemonic should be put my friend
+```
+
+If you do not already have a mnemonic, you can generate one using this [website](https://iancoleman.io/bip39/).
+
 ### Compile
 ### Compile
 
 
 Compile the smart contracts with Hardhat:
 Compile the smart contracts with Hardhat:

+ 12 - 22
hardhat.config.ts

@@ -1,27 +1,17 @@
 import "@nomicfoundation/hardhat-toolbox";
 import "@nomicfoundation/hardhat-toolbox";
-import { config as dotenvConfig } from "dotenv";
 import "hardhat-deploy";
 import "hardhat-deploy";
 import type { HardhatUserConfig } from "hardhat/config";
 import type { HardhatUserConfig } from "hardhat/config";
+import { vars } from "hardhat/config";
 import type { NetworkUserConfig } from "hardhat/types";
 import type { NetworkUserConfig } from "hardhat/types";
-import { resolve } from "path";
 
 
 import "./tasks/accounts";
 import "./tasks/accounts";
 import "./tasks/greet";
 import "./tasks/greet";
 import "./tasks/taskDeploy";
 import "./tasks/taskDeploy";
 
 
-const dotenvConfigPath: string = process.env.DOTENV_CONFIG_PATH || "./.env";
-dotenvConfig({ path: resolve(__dirname, dotenvConfigPath) });
+// Run 'npx hardhat vars setup' to see the list of variables that need to be set
 
 
-// Ensure that we have all the environment variables we need.
-const mnemonic: string | undefined = process.env.MNEMONIC;
-if (!mnemonic) {
-  throw new Error("Please set your MNEMONIC in a .env file");
-}
-
-const infuraApiKey: string | undefined = process.env.INFURA_API_KEY;
-if (!infuraApiKey) {
-  throw new Error("Please set your INFURA_API_KEY in a .env file");
-}
+const mnemonic: string = vars.get("MNEMONIC");
+const infuraApiKey: string = vars.get("INFURA_API_KEY");
 
 
 const chainIds = {
 const chainIds = {
   "arbitrum-mainnet": 42161,
   "arbitrum-mainnet": 42161,
@@ -66,14 +56,14 @@ const config: HardhatUserConfig = {
   },
   },
   etherscan: {
   etherscan: {
     apiKey: {
     apiKey: {
-      arbitrumOne: process.env.ARBISCAN_API_KEY || "",
-      avalanche: process.env.SNOWTRACE_API_KEY || "",
-      bsc: process.env.BSCSCAN_API_KEY || "",
-      mainnet: process.env.ETHERSCAN_API_KEY || "",
-      optimisticEthereum: process.env.OPTIMISM_API_KEY || "",
-      polygon: process.env.POLYGONSCAN_API_KEY || "",
-      polygonMumbai: process.env.POLYGONSCAN_API_KEY || "",
-      sepolia: process.env.ETHERSCAN_API_KEY || "",
+      arbitrumOne: vars.get("ARBISCAN_API_KEY", ""),
+      avalanche: vars.get("SNOWTRACE_API_KEY", ""),
+      bsc: vars.get("BSCSCAN_API_KEY", ""),
+      mainnet: vars.get("ETHERSCAN_API_KEY", ""),
+      optimisticEthereum: vars.get("OPTIMISM_API_KEY", ""),
+      polygon: vars.get("POLYGONSCAN_API_KEY", ""),
+      polygonMumbai: vars.get("POLYGONSCAN_API_KEY", ""),
+      sepolia: vars.get("ETHERSCAN_API_KEY", ""),
     },
     },
   },
   },
   gasReporter: {
   gasReporter: {

+ 3 - 4
package.json

@@ -23,12 +23,11 @@
     "@typescript-eslint/parser": "^5.44.0",
     "@typescript-eslint/parser": "^5.44.0",
     "chai": "^4.3.7",
     "chai": "^4.3.7",
     "cross-env": "^7.0.3",
     "cross-env": "^7.0.3",
-    "dotenv": "^16.0.3",
     "eslint": "^8.28.0",
     "eslint": "^8.28.0",
     "eslint-config-prettier": "^8.5.0",
     "eslint-config-prettier": "^8.5.0",
     "ethers": "^6.4.0",
     "ethers": "^6.4.0",
     "fs-extra": "^10.1.0",
     "fs-extra": "^10.1.0",
-    "hardhat": "^2.12.2",
+    "hardhat": "^2.19.0",
     "hardhat-deploy": "^0.11.29",
     "hardhat-deploy": "^0.11.29",
     "hardhat-gas-reporter": "^1.0.9",
     "hardhat-gas-reporter": "^1.0.9",
     "lodash": "^4.17.21",
     "lodash": "^4.17.21",
@@ -38,7 +37,7 @@
     "rimraf": "^4.1.2",
     "rimraf": "^4.1.2",
     "solhint": "^3.4.0",
     "solhint": "^3.4.0",
     "solhint-plugin-prettier": "^0.0.5",
     "solhint-plugin-prettier": "^0.0.5",
-    "solidity-coverage": "^0.8.2",
+    "solidity-coverage": "^0.8.5",
     "ts-generator": "^0.1.1",
     "ts-generator": "^0.1.1",
     "ts-node": "^10.9.1",
     "ts-node": "^10.9.1",
     "typechain": "^8.2.0",
     "typechain": "^8.2.0",
@@ -69,7 +68,7 @@
     "lint": "pnpm lint:sol && pnpm lint:ts && pnpm prettier:check",
     "lint": "pnpm lint:sol && pnpm lint:ts && pnpm prettier:check",
     "lint:sol": "solhint --max-warnings 0 \"contracts/**/*.sol\"",
     "lint:sol": "solhint --max-warnings 0 \"contracts/**/*.sol\"",
     "lint:ts": "eslint --ignore-path ./.eslintignore --ext .js,.ts .",
     "lint:ts": "eslint --ignore-path ./.eslintignore --ext .js,.ts .",
-    "postinstall": "DOTENV_CONFIG_PATH=./.env.example pnpm typechain",
+    "postcompile": "pnpm typechain",
     "prettier:check": "prettier --check \"**/*.{js,json,md,sol,ts,yml}\"",
     "prettier:check": "prettier --check \"**/*.{js,json,md,sol,ts,yml}\"",
     "prettier:write": "prettier --write \"**/*.{js,json,md,sol,ts,yml}\"",
     "prettier:write": "prettier --write \"**/*.{js,json,md,sol,ts,yml}\"",
     "task:deployGreeter": "hardhat task:deployGreeter",
     "task:deployGreeter": "hardhat task:deployGreeter",

+ 224 - 162
pnpm-lock.yaml

@@ -3,19 +3,19 @@ lockfileVersion: '6.0'
 devDependencies:
 devDependencies:
   '@nomicfoundation/hardhat-chai-matchers':
   '@nomicfoundation/hardhat-chai-matchers':
     specifier: ^2.0.0
     specifier: ^2.0.0
-    version: 2.0.0(@nomicfoundation/hardhat-ethers@3.0.0)(chai@4.3.7)(ethers@6.4.0)(hardhat@2.12.2)
+    version: 2.0.0(@nomicfoundation/hardhat-ethers@3.0.0)(chai@4.3.7)(ethers@6.4.0)(hardhat@2.19.0)
   '@nomicfoundation/hardhat-ethers':
   '@nomicfoundation/hardhat-ethers':
     specifier: ^3.0.0
     specifier: ^3.0.0
-    version: 3.0.0(ethers@6.4.0)(hardhat@2.12.2)
+    version: 3.0.0(ethers@6.4.0)(hardhat@2.19.0)
   '@nomicfoundation/hardhat-network-helpers':
   '@nomicfoundation/hardhat-network-helpers':
     specifier: ^1.0.6
     specifier: ^1.0.6
-    version: 1.0.6(hardhat@2.12.2)
+    version: 1.0.6(hardhat@2.19.0)
   '@nomicfoundation/hardhat-toolbox':
   '@nomicfoundation/hardhat-toolbox':
     specifier: ^3.0.0
     specifier: ^3.0.0
-    version: 3.0.0(@nomicfoundation/hardhat-chai-matchers@2.0.0)(@nomicfoundation/hardhat-ethers@3.0.0)(@nomicfoundation/hardhat-network-helpers@1.0.6)(@nomicfoundation/hardhat-verify@1.0.0)(@typechain/ethers-v6@0.4.0)(@typechain/hardhat@8.0.0)(@types/chai@4.3.4)(@types/mocha@10.0.0)(@types/node@18.11.9)(chai@4.3.7)(ethers@6.4.0)(hardhat-gas-reporter@1.0.9)(hardhat@2.12.2)(solidity-coverage@0.8.2)(ts-node@10.9.1)(typechain@8.2.0)(typescript@4.9.3)
+    version: 3.0.0(@nomicfoundation/hardhat-chai-matchers@2.0.0)(@nomicfoundation/hardhat-ethers@3.0.0)(@nomicfoundation/hardhat-network-helpers@1.0.6)(@nomicfoundation/hardhat-verify@1.0.0)(@typechain/ethers-v6@0.4.0)(@typechain/hardhat@8.0.0)(@types/chai@4.3.4)(@types/mocha@10.0.0)(@types/node@18.11.9)(chai@4.3.7)(ethers@6.4.0)(hardhat-gas-reporter@1.0.9)(hardhat@2.19.0)(solidity-coverage@0.8.5)(ts-node@10.9.1)(typechain@8.2.0)(typescript@4.9.3)
   '@nomicfoundation/hardhat-verify':
   '@nomicfoundation/hardhat-verify':
     specifier: ^1.0.0
     specifier: ^1.0.0
-    version: 1.0.0(hardhat@2.12.2)
+    version: 1.0.0(hardhat@2.19.0)
   '@trivago/prettier-plugin-sort-imports':
   '@trivago/prettier-plugin-sort-imports':
     specifier: ^4.0.0
     specifier: ^4.0.0
     version: 4.0.0(@vue/compiler-sfc@3.3.4)(prettier@2.8.4)
     version: 4.0.0(@vue/compiler-sfc@3.3.4)(prettier@2.8.4)
@@ -24,7 +24,7 @@ devDependencies:
     version: 0.4.0(ethers@6.4.0)(typechain@8.2.0)(typescript@4.9.3)
     version: 0.4.0(ethers@6.4.0)(typechain@8.2.0)(typescript@4.9.3)
   '@typechain/hardhat':
   '@typechain/hardhat':
     specifier: ^8.0.0
     specifier: ^8.0.0
-    version: 8.0.0(@typechain/ethers-v6@0.4.0)(ethers@6.4.0)(hardhat@2.12.2)(typechain@8.2.0)
+    version: 8.0.0(@typechain/ethers-v6@0.4.0)(ethers@6.4.0)(hardhat@2.19.0)(typechain@8.2.0)
   '@types/chai':
   '@types/chai':
     specifier: ^4.3.4
     specifier: ^4.3.4
     version: 4.3.4
     version: 4.3.4
@@ -49,9 +49,6 @@ devDependencies:
   cross-env:
   cross-env:
     specifier: ^7.0.3
     specifier: ^7.0.3
     version: 7.0.3
     version: 7.0.3
-  dotenv:
-    specifier: ^16.0.3
-    version: 16.0.3
   eslint:
   eslint:
     specifier: ^8.28.0
     specifier: ^8.28.0
     version: 8.28.0
     version: 8.28.0
@@ -65,14 +62,14 @@ devDependencies:
     specifier: ^10.1.0
     specifier: ^10.1.0
     version: 10.1.0
     version: 10.1.0
   hardhat:
   hardhat:
-    specifier: ^2.12.2
-    version: 2.12.2(ts-node@10.9.1)(typescript@4.9.3)
+    specifier: ^2.19.0
+    version: 2.19.0(ts-node@10.9.1)(typescript@4.9.3)
   hardhat-deploy:
   hardhat-deploy:
     specifier: ^0.11.29
     specifier: ^0.11.29
     version: 0.11.29
     version: 0.11.29
   hardhat-gas-reporter:
   hardhat-gas-reporter:
     specifier: ^1.0.9
     specifier: ^1.0.9
-    version: 1.0.9(hardhat@2.12.2)
+    version: 1.0.9(hardhat@2.19.0)
   lodash:
   lodash:
     specifier: ^4.17.21
     specifier: ^4.17.21
     version: 4.17.21
     version: 4.17.21
@@ -95,8 +92,8 @@ devDependencies:
     specifier: ^0.0.5
     specifier: ^0.0.5
     version: 0.0.5(prettier-plugin-solidity@1.1.2)(prettier@2.8.4)
     version: 0.0.5(prettier-plugin-solidity@1.1.2)(prettier@2.8.4)
   solidity-coverage:
   solidity-coverage:
-    specifier: ^0.8.2
-    version: 0.8.2(hardhat@2.12.2)
+    specifier: ^0.8.5
+    version: 0.8.5(hardhat@2.19.0)
   ts-generator:
   ts-generator:
     specifier: ^0.1.1
     specifier: ^0.1.1
     version: 0.1.1
     version: 0.1.1
@@ -358,6 +355,37 @@ packages:
       to-fast-properties: 2.0.0
       to-fast-properties: 2.0.0
     dev: true
     dev: true
 
 
+  /@chainsafe/as-sha256@0.3.1:
+    resolution: {integrity: sha512-hldFFYuf49ed7DAakWVXSJODuq3pzJEguD8tQ7h+sGkM18vja+OFoJI9krnGmgzyuZC2ETX0NOIcCTy31v2Mtg==}
+    dev: true
+
+  /@chainsafe/persistent-merkle-tree@0.4.2:
+    resolution: {integrity: sha512-lLO3ihKPngXLTus/L7WHKaw9PnNJWizlOF1H9NNzHP6Xvh82vzg9F2bzkXhYIFshMZ2gTCEz8tq6STe7r5NDfQ==}
+    dependencies:
+      '@chainsafe/as-sha256': 0.3.1
+    dev: true
+
+  /@chainsafe/persistent-merkle-tree@0.5.0:
+    resolution: {integrity: sha512-l0V1b5clxA3iwQLXP40zYjyZYospQLZXzBVIhhr9kDg/1qHZfzzHw0jj4VPBijfYCArZDlPkRi1wZaV2POKeuw==}
+    dependencies:
+      '@chainsafe/as-sha256': 0.3.1
+    dev: true
+
+  /@chainsafe/ssz@0.10.2:
+    resolution: {integrity: sha512-/NL3Lh8K+0q7A3LsiFq09YXS9fPE+ead2rr7vM2QK8PLzrNsw3uqrif9bpRX5UxgeRjM+vYi+boCM3+GM4ovXg==}
+    dependencies:
+      '@chainsafe/as-sha256': 0.3.1
+      '@chainsafe/persistent-merkle-tree': 0.5.0
+    dev: true
+
+  /@chainsafe/ssz@0.9.4:
+    resolution: {integrity: sha512-77Qtg2N1ayqs4Bg/wvnWfg5Bta7iy7IRh8XqXh7oNMeP2HBbBwx8m6yTpA8p0EHItWPEBkgZd5S5/LSlp3GXuQ==}
+    dependencies:
+      '@chainsafe/as-sha256': 0.3.1
+      '@chainsafe/persistent-merkle-tree': 0.4.2
+      case: 1.6.3
+    dev: true
+
   /@cspotcode/source-map-support@0.8.1:
   /@cspotcode/source-map-support@0.8.1:
     resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
     resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
     engines: {node: '>=12'}
     engines: {node: '>=12'}
@@ -824,28 +852,33 @@ packages:
       fastq: 1.15.0
       fastq: 1.15.0
     dev: true
     dev: true
 
 
-  /@nomicfoundation/ethereumjs-block@4.2.2:
-    resolution: {integrity: sha512-atjpt4gc6ZGZUPHBAQaUJsm1l/VCo7FmyQ780tMGO8QStjLdhz09dXynmhwVTy5YbRr0FOh/uX3QaEM0yIB2Zg==}
+  /@nomicfoundation/ethereumjs-block@5.0.2:
+    resolution: {integrity: sha512-hSe6CuHI4SsSiWWjHDIzWhSiAVpzMUcDRpWYzN0T9l8/Rz7xNn3elwVOJ/tAyS0LqL6vitUD78Uk7lQDXZun7Q==}
     engines: {node: '>=14'}
     engines: {node: '>=14'}
     dependencies:
     dependencies:
-      '@nomicfoundation/ethereumjs-common': 3.1.2
-      '@nomicfoundation/ethereumjs-rlp': 4.0.3
-      '@nomicfoundation/ethereumjs-trie': 5.0.5
-      '@nomicfoundation/ethereumjs-tx': 4.1.2
-      '@nomicfoundation/ethereumjs-util': 8.0.6
+      '@nomicfoundation/ethereumjs-common': 4.0.2
+      '@nomicfoundation/ethereumjs-rlp': 5.0.2
+      '@nomicfoundation/ethereumjs-trie': 6.0.2
+      '@nomicfoundation/ethereumjs-tx': 5.0.2
+      '@nomicfoundation/ethereumjs-util': 9.0.2
       ethereum-cryptography: 0.1.3
       ethereum-cryptography: 0.1.3
+      ethers: 5.7.2
+    transitivePeerDependencies:
+      - bufferutil
+      - utf-8-validate
     dev: true
     dev: true
 
 
-  /@nomicfoundation/ethereumjs-blockchain@6.2.2:
-    resolution: {integrity: sha512-6AIB2MoTEPZJLl6IRKcbd8mUmaBAQ/NMe3O7OsAOIiDjMNPPH5KaUQiLfbVlegT4wKIg/GOsFH7XlH2KDVoJNg==}
+  /@nomicfoundation/ethereumjs-blockchain@7.0.2:
+    resolution: {integrity: sha512-8UUsSXJs+MFfIIAKdh3cG16iNmWzWC/91P40sazNvrqhhdR/RtGDlFk2iFTGbBAZPs2+klZVzhRX8m2wvuvz3w==}
     engines: {node: '>=14'}
     engines: {node: '>=14'}
     dependencies:
     dependencies:
-      '@nomicfoundation/ethereumjs-block': 4.2.2
-      '@nomicfoundation/ethereumjs-common': 3.1.2
-      '@nomicfoundation/ethereumjs-ethash': 2.0.5
-      '@nomicfoundation/ethereumjs-rlp': 4.0.3
-      '@nomicfoundation/ethereumjs-trie': 5.0.5
-      '@nomicfoundation/ethereumjs-util': 8.0.6
+      '@nomicfoundation/ethereumjs-block': 5.0.2
+      '@nomicfoundation/ethereumjs-common': 4.0.2
+      '@nomicfoundation/ethereumjs-ethash': 3.0.2
+      '@nomicfoundation/ethereumjs-rlp': 5.0.2
+      '@nomicfoundation/ethereumjs-trie': 6.0.2
+      '@nomicfoundation/ethereumjs-tx': 5.0.2
+      '@nomicfoundation/ethereumjs-util': 9.0.2
       abstract-level: 1.0.3
       abstract-level: 1.0.3
       debug: 4.3.4(supports-color@8.1.1)
       debug: 4.3.4(supports-color@8.1.1)
       ethereum-cryptography: 0.1.3
       ethereum-cryptography: 0.1.3
@@ -853,117 +886,131 @@ packages:
       lru-cache: 5.1.1
       lru-cache: 5.1.1
       memory-level: 1.0.0
       memory-level: 1.0.0
     transitivePeerDependencies:
     transitivePeerDependencies:
+      - bufferutil
       - supports-color
       - supports-color
+      - utf-8-validate
     dev: true
     dev: true
 
 
-  /@nomicfoundation/ethereumjs-common@3.1.2:
-    resolution: {integrity: sha512-JAEBpIua62dyObHM9KI2b4wHZcRQYYge9gxiygTWa3lNCr2zo+K0TbypDpgiNij5MCGNWP1eboNfNfx1a3vkvA==}
+  /@nomicfoundation/ethereumjs-common@4.0.2:
+    resolution: {integrity: sha512-I2WGP3HMGsOoycSdOTSqIaES0ughQTueOsddJ36aYVpI3SN8YSusgRFLwzDJwRFVIYDKx/iJz0sQ5kBHVgdDwg==}
     dependencies:
     dependencies:
-      '@nomicfoundation/ethereumjs-util': 8.0.6
+      '@nomicfoundation/ethereumjs-util': 9.0.2
       crc-32: 1.2.2
       crc-32: 1.2.2
     dev: true
     dev: true
 
 
-  /@nomicfoundation/ethereumjs-ethash@2.0.5:
-    resolution: {integrity: sha512-xlLdcICGgAYyYmnI3r1t0R5fKGBJNDQSOQxXNjVO99JmxJIdXR5MgPo5CSJO1RpyzKOgzi3uIFn8agv564dZEQ==}
+  /@nomicfoundation/ethereumjs-ethash@3.0.2:
+    resolution: {integrity: sha512-8PfoOQCcIcO9Pylq0Buijuq/O73tmMVURK0OqdjhwqcGHYC2PwhbajDh7GZ55ekB0Px197ajK3PQhpKoiI/UPg==}
     engines: {node: '>=14'}
     engines: {node: '>=14'}
     dependencies:
     dependencies:
-      '@nomicfoundation/ethereumjs-block': 4.2.2
-      '@nomicfoundation/ethereumjs-rlp': 4.0.3
-      '@nomicfoundation/ethereumjs-util': 8.0.6
+      '@nomicfoundation/ethereumjs-block': 5.0.2
+      '@nomicfoundation/ethereumjs-rlp': 5.0.2
+      '@nomicfoundation/ethereumjs-util': 9.0.2
       abstract-level: 1.0.3
       abstract-level: 1.0.3
       bigint-crypto-utils: 3.2.2
       bigint-crypto-utils: 3.2.2
       ethereum-cryptography: 0.1.3
       ethereum-cryptography: 0.1.3
+    transitivePeerDependencies:
+      - bufferutil
+      - utf-8-validate
     dev: true
     dev: true
 
 
-  /@nomicfoundation/ethereumjs-evm@1.3.2:
-    resolution: {integrity: sha512-I00d4MwXuobyoqdPe/12dxUQxTYzX8OckSaWsMcWAfQhgVDvBx6ffPyP/w1aL0NW7MjyerySPcSVfDJAMHjilw==}
+  /@nomicfoundation/ethereumjs-evm@2.0.2:
+    resolution: {integrity: sha512-rBLcUaUfANJxyOx9HIdMX6uXGin6lANCulIm/pjMgRqfiCRMZie3WKYxTSd8ZE/d+qT+zTedBF4+VHTdTSePmQ==}
     engines: {node: '>=14'}
     engines: {node: '>=14'}
     dependencies:
     dependencies:
-      '@nomicfoundation/ethereumjs-common': 3.1.2
-      '@nomicfoundation/ethereumjs-util': 8.0.6
-      '@types/async-eventemitter': 0.2.1
-      async-eventemitter: 0.2.4
+      '@ethersproject/providers': 5.7.2
+      '@nomicfoundation/ethereumjs-common': 4.0.2
+      '@nomicfoundation/ethereumjs-tx': 5.0.2
+      '@nomicfoundation/ethereumjs-util': 9.0.2
       debug: 4.3.4(supports-color@8.1.1)
       debug: 4.3.4(supports-color@8.1.1)
       ethereum-cryptography: 0.1.3
       ethereum-cryptography: 0.1.3
       mcl-wasm: 0.7.9
       mcl-wasm: 0.7.9
       rustbn.js: 0.2.0
       rustbn.js: 0.2.0
     transitivePeerDependencies:
     transitivePeerDependencies:
+      - bufferutil
       - supports-color
       - supports-color
+      - utf-8-validate
     dev: true
     dev: true
 
 
-  /@nomicfoundation/ethereumjs-rlp@4.0.3:
-    resolution: {integrity: sha512-DZMzB/lqPK78T6MluyXqtlRmOMcsZbTTbbEyAjo0ncaff2mqu/k8a79PBcyvpgAhWD/R59Fjq/x3ro5Lof0AtA==}
+  /@nomicfoundation/ethereumjs-rlp@5.0.2:
+    resolution: {integrity: sha512-QwmemBc+MMsHJ1P1QvPl8R8p2aPvvVcKBbvHnQOKBpBztEo0omN0eaob6FeZS/e3y9NSe+mfu3nNFBHszqkjTA==}
     engines: {node: '>=14'}
     engines: {node: '>=14'}
     hasBin: true
     hasBin: true
     dev: true
     dev: true
 
 
-  /@nomicfoundation/ethereumjs-statemanager@1.0.5:
-    resolution: {integrity: sha512-CAhzpzTR5toh/qOJIZUUOnWekUXuRqkkzaGAQrVcF457VhtCmr+ddZjjK50KNZ524c1XP8cISguEVNqJ6ij1sA==}
+  /@nomicfoundation/ethereumjs-statemanager@2.0.2:
+    resolution: {integrity: sha512-dlKy5dIXLuDubx8Z74sipciZnJTRSV/uHG48RSijhgm1V7eXYFC567xgKtsKiVZB1ViTP9iFL4B6Je0xD6X2OA==}
     dependencies:
     dependencies:
-      '@nomicfoundation/ethereumjs-common': 3.1.2
-      '@nomicfoundation/ethereumjs-rlp': 4.0.3
-      '@nomicfoundation/ethereumjs-trie': 5.0.5
-      '@nomicfoundation/ethereumjs-util': 8.0.6
+      '@nomicfoundation/ethereumjs-common': 4.0.2
+      '@nomicfoundation/ethereumjs-rlp': 5.0.2
       debug: 4.3.4(supports-color@8.1.1)
       debug: 4.3.4(supports-color@8.1.1)
       ethereum-cryptography: 0.1.3
       ethereum-cryptography: 0.1.3
-      functional-red-black-tree: 1.0.1
+      ethers: 5.7.2
+      js-sdsl: 4.4.0
     transitivePeerDependencies:
     transitivePeerDependencies:
+      - bufferutil
       - supports-color
       - supports-color
+      - utf-8-validate
     dev: true
     dev: true
 
 
-  /@nomicfoundation/ethereumjs-trie@5.0.5:
-    resolution: {integrity: sha512-+8sNZrXkzvA1NH5F4kz5RSYl1I6iaRz7mAZRsyxOm0IVY4UaP43Ofvfp/TwOalFunurQrYB5pRO40+8FBcxFMA==}
+  /@nomicfoundation/ethereumjs-trie@6.0.2:
+    resolution: {integrity: sha512-yw8vg9hBeLYk4YNg5MrSJ5H55TLOv2FSWUTROtDtTMMmDGROsAu+0tBjiNGTnKRi400M6cEzoFfa89Fc5k8NTQ==}
     engines: {node: '>=14'}
     engines: {node: '>=14'}
     dependencies:
     dependencies:
-      '@nomicfoundation/ethereumjs-rlp': 4.0.3
-      '@nomicfoundation/ethereumjs-util': 8.0.6
+      '@nomicfoundation/ethereumjs-rlp': 5.0.2
+      '@nomicfoundation/ethereumjs-util': 9.0.2
+      '@types/readable-stream': 2.3.15
       ethereum-cryptography: 0.1.3
       ethereum-cryptography: 0.1.3
       readable-stream: 3.6.2
       readable-stream: 3.6.2
     dev: true
     dev: true
 
 
-  /@nomicfoundation/ethereumjs-tx@4.1.2:
-    resolution: {integrity: sha512-emJBJZpmTdUa09cqxQqHaysbBI9Od353ZazeH7WgPb35miMgNY6mb7/3vBA98N5lUW/rgkiItjX0KZfIzihSoQ==}
+  /@nomicfoundation/ethereumjs-tx@5.0.2:
+    resolution: {integrity: sha512-T+l4/MmTp7VhJeNloMkM+lPU3YMUaXdcXgTGCf8+ZFvV9NYZTRLFekRwlG6/JMmVfIfbrW+dRRJ9A6H5Q/Z64g==}
     engines: {node: '>=14'}
     engines: {node: '>=14'}
     dependencies:
     dependencies:
-      '@nomicfoundation/ethereumjs-common': 3.1.2
-      '@nomicfoundation/ethereumjs-rlp': 4.0.3
-      '@nomicfoundation/ethereumjs-util': 8.0.6
+      '@chainsafe/ssz': 0.9.4
+      '@ethersproject/providers': 5.7.2
+      '@nomicfoundation/ethereumjs-common': 4.0.2
+      '@nomicfoundation/ethereumjs-rlp': 5.0.2
+      '@nomicfoundation/ethereumjs-util': 9.0.2
       ethereum-cryptography: 0.1.3
       ethereum-cryptography: 0.1.3
+    transitivePeerDependencies:
+      - bufferutil
+      - utf-8-validate
     dev: true
     dev: true
 
 
-  /@nomicfoundation/ethereumjs-util@8.0.6:
-    resolution: {integrity: sha512-jOQfF44laa7xRfbfLXojdlcpkvxeHrE2Xu7tSeITsWFgoII163MzjOwFEzSNozHYieFysyoEMhCdP+NY5ikstw==}
+  /@nomicfoundation/ethereumjs-util@9.0.2:
+    resolution: {integrity: sha512-4Wu9D3LykbSBWZo8nJCnzVIYGvGCuyiYLIJa9XXNVt1q1jUzHdB+sJvx95VGCpPkCT+IbLecW6yfzy3E1bQrwQ==}
     engines: {node: '>=14'}
     engines: {node: '>=14'}
     dependencies:
     dependencies:
-      '@nomicfoundation/ethereumjs-rlp': 4.0.3
+      '@chainsafe/ssz': 0.10.2
+      '@nomicfoundation/ethereumjs-rlp': 5.0.2
       ethereum-cryptography: 0.1.3
       ethereum-cryptography: 0.1.3
     dev: true
     dev: true
 
 
-  /@nomicfoundation/ethereumjs-vm@6.4.2:
-    resolution: {integrity: sha512-PRTyxZMP6kx+OdAzBhuH1LD2Yw+hrSpaytftvaK//thDy2OI07S0nrTdbrdk7b8ZVPAc9H9oTwFBl3/wJ3w15g==}
+  /@nomicfoundation/ethereumjs-vm@7.0.2:
+    resolution: {integrity: sha512-Bj3KZT64j54Tcwr7Qm/0jkeZXJMfdcAtRBedou+Hx0dPOSIgqaIr0vvLwP65TpHbak2DmAq+KJbW2KNtIoFwvA==}
     engines: {node: '>=14'}
     engines: {node: '>=14'}
     dependencies:
     dependencies:
-      '@nomicfoundation/ethereumjs-block': 4.2.2
-      '@nomicfoundation/ethereumjs-blockchain': 6.2.2
-      '@nomicfoundation/ethereumjs-common': 3.1.2
-      '@nomicfoundation/ethereumjs-evm': 1.3.2
-      '@nomicfoundation/ethereumjs-rlp': 4.0.3
-      '@nomicfoundation/ethereumjs-statemanager': 1.0.5
-      '@nomicfoundation/ethereumjs-trie': 5.0.5
-      '@nomicfoundation/ethereumjs-tx': 4.1.2
-      '@nomicfoundation/ethereumjs-util': 8.0.6
-      '@types/async-eventemitter': 0.2.1
-      async-eventemitter: 0.2.4
+      '@nomicfoundation/ethereumjs-block': 5.0.2
+      '@nomicfoundation/ethereumjs-blockchain': 7.0.2
+      '@nomicfoundation/ethereumjs-common': 4.0.2
+      '@nomicfoundation/ethereumjs-evm': 2.0.2
+      '@nomicfoundation/ethereumjs-rlp': 5.0.2
+      '@nomicfoundation/ethereumjs-statemanager': 2.0.2
+      '@nomicfoundation/ethereumjs-trie': 6.0.2
+      '@nomicfoundation/ethereumjs-tx': 5.0.2
+      '@nomicfoundation/ethereumjs-util': 9.0.2
       debug: 4.3.4(supports-color@8.1.1)
       debug: 4.3.4(supports-color@8.1.1)
       ethereum-cryptography: 0.1.3
       ethereum-cryptography: 0.1.3
-      functional-red-black-tree: 1.0.1
       mcl-wasm: 0.7.9
       mcl-wasm: 0.7.9
       rustbn.js: 0.2.0
       rustbn.js: 0.2.0
     transitivePeerDependencies:
     transitivePeerDependencies:
+      - bufferutil
       - supports-color
       - supports-color
+      - utf-8-validate
     dev: true
     dev: true
 
 
-  /@nomicfoundation/hardhat-chai-matchers@2.0.0(@nomicfoundation/hardhat-ethers@3.0.0)(chai@4.3.7)(ethers@6.4.0)(hardhat@2.12.2):
+  /@nomicfoundation/hardhat-chai-matchers@2.0.0(@nomicfoundation/hardhat-ethers@3.0.0)(chai@4.3.7)(ethers@6.4.0)(hardhat@2.19.0):
     resolution: {integrity: sha512-e2ZFunJBIWDcFKIxQt6GpFRRKUn8ZshoiZ5cmgaKOR1S9XwimiCs2aLUCZ/xjNrdl049kPqdVKYDj6aYeR6WuQ==}
     resolution: {integrity: sha512-e2ZFunJBIWDcFKIxQt6GpFRRKUn8ZshoiZ5cmgaKOR1S9XwimiCs2aLUCZ/xjNrdl049kPqdVKYDj6aYeR6WuQ==}
     peerDependencies:
     peerDependencies:
       '@nomicfoundation/hardhat-ethers': ^3.0.0
       '@nomicfoundation/hardhat-ethers': ^3.0.0
@@ -972,36 +1019,36 @@ packages:
       hardhat: ^2.9.4
       hardhat: ^2.9.4
     dependencies:
     dependencies:
       '@ethersproject/abi': 5.7.0
       '@ethersproject/abi': 5.7.0
-      '@nomicfoundation/hardhat-ethers': 3.0.0(ethers@6.4.0)(hardhat@2.12.2)
+      '@nomicfoundation/hardhat-ethers': 3.0.0(ethers@6.4.0)(hardhat@2.19.0)
       '@types/chai-as-promised': 7.1.5
       '@types/chai-as-promised': 7.1.5
       chai: 4.3.7
       chai: 4.3.7
       chai-as-promised: 7.1.1(chai@4.3.7)
       chai-as-promised: 7.1.1(chai@4.3.7)
       deep-eql: 4.1.3
       deep-eql: 4.1.3
       ethers: 6.4.0
       ethers: 6.4.0
-      hardhat: 2.12.2(ts-node@10.9.1)(typescript@4.9.3)
+      hardhat: 2.19.0(ts-node@10.9.1)(typescript@4.9.3)
       ordinal: 1.0.3
       ordinal: 1.0.3
     dev: true
     dev: true
 
 
-  /@nomicfoundation/hardhat-ethers@3.0.0(ethers@6.4.0)(hardhat@2.12.2):
+  /@nomicfoundation/hardhat-ethers@3.0.0(ethers@6.4.0)(hardhat@2.19.0):
     resolution: {integrity: sha512-0A2hs39YUta//O9EcITnFw/iGzUztJ4FB4UIc2mgdZ2nXvDZUmkQO+Vtdt/guJ6gP66EPbwvFW7t1SRReMGrvg==}
     resolution: {integrity: sha512-0A2hs39YUta//O9EcITnFw/iGzUztJ4FB4UIc2mgdZ2nXvDZUmkQO+Vtdt/guJ6gP66EPbwvFW7t1SRReMGrvg==}
     peerDependencies:
     peerDependencies:
       ethers: ^6.1.0
       ethers: ^6.1.0
       hardhat: ^2.0.0
       hardhat: ^2.0.0
     dependencies:
     dependencies:
       ethers: 6.4.0
       ethers: 6.4.0
-      hardhat: 2.12.2(ts-node@10.9.1)(typescript@4.9.3)
+      hardhat: 2.19.0(ts-node@10.9.1)(typescript@4.9.3)
     dev: true
     dev: true
 
 
-  /@nomicfoundation/hardhat-network-helpers@1.0.6(hardhat@2.12.2):
+  /@nomicfoundation/hardhat-network-helpers@1.0.6(hardhat@2.19.0):
     resolution: {integrity: sha512-a35iVD4ycF6AoTfllAnKm96IPIzzHpgKX/ep4oKc2bsUKFfMlacWdyntgC/7d5blyCTXfFssgNAvXDZfzNWVGQ==}
     resolution: {integrity: sha512-a35iVD4ycF6AoTfllAnKm96IPIzzHpgKX/ep4oKc2bsUKFfMlacWdyntgC/7d5blyCTXfFssgNAvXDZfzNWVGQ==}
     peerDependencies:
     peerDependencies:
       hardhat: ^2.9.5
       hardhat: ^2.9.5
     dependencies:
     dependencies:
       ethereumjs-util: 7.1.5
       ethereumjs-util: 7.1.5
-      hardhat: 2.12.2(ts-node@10.9.1)(typescript@4.9.3)
+      hardhat: 2.19.0(ts-node@10.9.1)(typescript@4.9.3)
     dev: true
     dev: true
 
 
-  /@nomicfoundation/hardhat-toolbox@3.0.0(@nomicfoundation/hardhat-chai-matchers@2.0.0)(@nomicfoundation/hardhat-ethers@3.0.0)(@nomicfoundation/hardhat-network-helpers@1.0.6)(@nomicfoundation/hardhat-verify@1.0.0)(@typechain/ethers-v6@0.4.0)(@typechain/hardhat@8.0.0)(@types/chai@4.3.4)(@types/mocha@10.0.0)(@types/node@18.11.9)(chai@4.3.7)(ethers@6.4.0)(hardhat-gas-reporter@1.0.9)(hardhat@2.12.2)(solidity-coverage@0.8.2)(ts-node@10.9.1)(typechain@8.2.0)(typescript@4.9.3):
+  /@nomicfoundation/hardhat-toolbox@3.0.0(@nomicfoundation/hardhat-chai-matchers@2.0.0)(@nomicfoundation/hardhat-ethers@3.0.0)(@nomicfoundation/hardhat-network-helpers@1.0.6)(@nomicfoundation/hardhat-verify@1.0.0)(@typechain/ethers-v6@0.4.0)(@typechain/hardhat@8.0.0)(@types/chai@4.3.4)(@types/mocha@10.0.0)(@types/node@18.11.9)(chai@4.3.7)(ethers@6.4.0)(hardhat-gas-reporter@1.0.9)(hardhat@2.19.0)(solidity-coverage@0.8.5)(ts-node@10.9.1)(typechain@8.2.0)(typescript@4.9.3):
     resolution: {integrity: sha512-MsteDXd0UagMksqm9KvcFG6gNKYNa3GGNCy73iQ6bEasEgg2v8Qjl6XA5hjs8o5UD5A3153B6W2BIVJ8SxYUtA==}
     resolution: {integrity: sha512-MsteDXd0UagMksqm9KvcFG6gNKYNa3GGNCy73iQ6bEasEgg2v8Qjl6XA5hjs8o5UD5A3153B6W2BIVJ8SxYUtA==}
     peerDependencies:
     peerDependencies:
       '@nomicfoundation/hardhat-chai-matchers': ^2.0.0
       '@nomicfoundation/hardhat-chai-matchers': ^2.0.0
@@ -1022,26 +1069,26 @@ packages:
       typechain: ^8.2.0
       typechain: ^8.2.0
       typescript: '>=4.5.0'
       typescript: '>=4.5.0'
     dependencies:
     dependencies:
-      '@nomicfoundation/hardhat-chai-matchers': 2.0.0(@nomicfoundation/hardhat-ethers@3.0.0)(chai@4.3.7)(ethers@6.4.0)(hardhat@2.12.2)
-      '@nomicfoundation/hardhat-ethers': 3.0.0(ethers@6.4.0)(hardhat@2.12.2)
-      '@nomicfoundation/hardhat-network-helpers': 1.0.6(hardhat@2.12.2)
-      '@nomicfoundation/hardhat-verify': 1.0.0(hardhat@2.12.2)
+      '@nomicfoundation/hardhat-chai-matchers': 2.0.0(@nomicfoundation/hardhat-ethers@3.0.0)(chai@4.3.7)(ethers@6.4.0)(hardhat@2.19.0)
+      '@nomicfoundation/hardhat-ethers': 3.0.0(ethers@6.4.0)(hardhat@2.19.0)
+      '@nomicfoundation/hardhat-network-helpers': 1.0.6(hardhat@2.19.0)
+      '@nomicfoundation/hardhat-verify': 1.0.0(hardhat@2.19.0)
       '@typechain/ethers-v6': 0.4.0(ethers@6.4.0)(typechain@8.2.0)(typescript@4.9.3)
       '@typechain/ethers-v6': 0.4.0(ethers@6.4.0)(typechain@8.2.0)(typescript@4.9.3)
-      '@typechain/hardhat': 8.0.0(@typechain/ethers-v6@0.4.0)(ethers@6.4.0)(hardhat@2.12.2)(typechain@8.2.0)
+      '@typechain/hardhat': 8.0.0(@typechain/ethers-v6@0.4.0)(ethers@6.4.0)(hardhat@2.19.0)(typechain@8.2.0)
       '@types/chai': 4.3.4
       '@types/chai': 4.3.4
       '@types/mocha': 10.0.0
       '@types/mocha': 10.0.0
       '@types/node': 18.11.9
       '@types/node': 18.11.9
       chai: 4.3.7
       chai: 4.3.7
       ethers: 6.4.0
       ethers: 6.4.0
-      hardhat: 2.12.2(ts-node@10.9.1)(typescript@4.9.3)
-      hardhat-gas-reporter: 1.0.9(hardhat@2.12.2)
-      solidity-coverage: 0.8.2(hardhat@2.12.2)
+      hardhat: 2.19.0(ts-node@10.9.1)(typescript@4.9.3)
+      hardhat-gas-reporter: 1.0.9(hardhat@2.19.0)
+      solidity-coverage: 0.8.5(hardhat@2.19.0)
       ts-node: 10.9.1(@types/node@18.11.9)(typescript@4.9.3)
       ts-node: 10.9.1(@types/node@18.11.9)(typescript@4.9.3)
       typechain: 8.2.0(typescript@4.9.3)
       typechain: 8.2.0(typescript@4.9.3)
       typescript: 4.9.3
       typescript: 4.9.3
     dev: true
     dev: true
 
 
-  /@nomicfoundation/hardhat-verify@1.0.0(hardhat@2.12.2):
+  /@nomicfoundation/hardhat-verify@1.0.0(hardhat@2.19.0):
     resolution: {integrity: sha512-R3UM/w2+e4D9PZRaeJHbC0caHSu/FV3ykAFBFg+RPNsfSzNgtHeRJXS+V+2HnVJYPaucBUD0v/6qtU8BZAouoQ==}
     resolution: {integrity: sha512-R3UM/w2+e4D9PZRaeJHbC0caHSu/FV3ykAFBFg+RPNsfSzNgtHeRJXS+V+2HnVJYPaucBUD0v/6qtU8BZAouoQ==}
     peerDependencies:
     peerDependencies:
       hardhat: ^2.0.4
       hardhat: ^2.0.4
@@ -1051,7 +1098,7 @@ packages:
       cbor: 8.1.0
       cbor: 8.1.0
       chalk: 2.4.2
       chalk: 2.4.2
       debug: 4.3.4(supports-color@8.1.1)
       debug: 4.3.4(supports-color@8.1.1)
-      hardhat: 2.12.2(ts-node@10.9.1)(typescript@4.9.3)
+      hardhat: 2.19.0(ts-node@10.9.1)(typescript@4.9.3)
       lodash.clonedeep: 4.5.0
       lodash.clonedeep: 4.5.0
       semver: 6.3.0
       semver: 6.3.0
       table: 6.8.1
       table: 6.8.1
@@ -1267,6 +1314,12 @@ packages:
       antlr4ts: 0.5.0-alpha.4
       antlr4ts: 0.5.0-alpha.4
     dev: true
     dev: true
 
 
+  /@solidity-parser/parser@0.16.1:
+    resolution: {integrity: sha512-PdhRFNhbTtu3x8Axm0uYpqOy/lODYQK+MlYSgqIsq2L8SFYEHJPHNUiOTAJbDGzNjjr1/n9AcIayxafR/fWmYw==}
+    dependencies:
+      antlr4ts: 0.5.0-alpha.4
+    dev: true
+
   /@trivago/prettier-plugin-sort-imports@4.0.0(@vue/compiler-sfc@3.3.4)(prettier@2.8.4):
   /@trivago/prettier-plugin-sort-imports@4.0.0(@vue/compiler-sfc@3.3.4)(prettier@2.8.4):
     resolution: {integrity: sha512-Tyuk5ZY4a0e2MNFLdluQO9F6d1awFQYXVVujEPFfvKPPXz8DADNHzz73NMhwCSXGSuGGZcA/rKOyZBrxVNMxaA==}
     resolution: {integrity: sha512-Tyuk5ZY4a0e2MNFLdluQO9F6d1awFQYXVVujEPFfvKPPXz8DADNHzz73NMhwCSXGSuGGZcA/rKOyZBrxVNMxaA==}
     peerDependencies:
     peerDependencies:
@@ -1316,7 +1369,7 @@ packages:
       typescript: 4.9.3
       typescript: 4.9.3
     dev: true
     dev: true
 
 
-  /@typechain/hardhat@8.0.0(@typechain/ethers-v6@0.4.0)(ethers@6.4.0)(hardhat@2.12.2)(typechain@8.2.0):
+  /@typechain/hardhat@8.0.0(@typechain/ethers-v6@0.4.0)(ethers@6.4.0)(hardhat@2.19.0)(typechain@8.2.0):
     resolution: {integrity: sha512-XUVbqlMx8tJTOmzZCD/r196CidtNWAnTBZRcYxjLTKgcJMvc/kHQpWBnVMMB5QHxVKpYpCiz8g07FYCpG8rrjA==}
     resolution: {integrity: sha512-XUVbqlMx8tJTOmzZCD/r196CidtNWAnTBZRcYxjLTKgcJMvc/kHQpWBnVMMB5QHxVKpYpCiz8g07FYCpG8rrjA==}
     peerDependencies:
     peerDependencies:
       '@typechain/ethers-v6': ^0.4.0
       '@typechain/ethers-v6': ^0.4.0
@@ -1327,24 +1380,20 @@ packages:
       '@typechain/ethers-v6': 0.4.0(ethers@6.4.0)(typechain@8.2.0)(typescript@4.9.3)
       '@typechain/ethers-v6': 0.4.0(ethers@6.4.0)(typechain@8.2.0)(typescript@4.9.3)
       ethers: 6.4.0
       ethers: 6.4.0
       fs-extra: 9.1.0
       fs-extra: 9.1.0
-      hardhat: 2.12.2(ts-node@10.9.1)(typescript@4.9.3)
+      hardhat: 2.19.0(ts-node@10.9.1)(typescript@4.9.3)
       typechain: 8.2.0(typescript@4.9.3)
       typechain: 8.2.0(typescript@4.9.3)
     dev: true
     dev: true
 
 
-  /@types/async-eventemitter@0.2.1:
-    resolution: {integrity: sha512-M2P4Ng26QbAeITiH7w1d7OxtldgfAe0wobpyJzVK/XOb0cUGKU2R4pfAhqcJBXAe2ife5ZOhSv4wk7p+ffURtg==}
-    dev: true
-
   /@types/bn.js@4.11.6:
   /@types/bn.js@4.11.6:
     resolution: {integrity: sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==}
     resolution: {integrity: sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==}
     dependencies:
     dependencies:
-      '@types/node': 18.11.9
+      '@types/node': 18.15.13
     dev: true
     dev: true
 
 
   /@types/bn.js@5.1.1:
   /@types/bn.js@5.1.1:
     resolution: {integrity: sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==}
     resolution: {integrity: sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==}
     dependencies:
     dependencies:
-      '@types/node': 18.11.9
+      '@types/node': 18.15.13
     dev: true
     dev: true
 
 
   /@types/chai-as-promised@7.1.5:
   /@types/chai-as-promised@7.1.5:
@@ -1360,13 +1409,13 @@ packages:
   /@types/concat-stream@1.6.1:
   /@types/concat-stream@1.6.1:
     resolution: {integrity: sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==}
     resolution: {integrity: sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==}
     dependencies:
     dependencies:
-      '@types/node': 18.11.9
+      '@types/node': 18.15.13
     dev: true
     dev: true
 
 
   /@types/form-data@0.0.33:
   /@types/form-data@0.0.33:
     resolution: {integrity: sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw==}
     resolution: {integrity: sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw==}
     dependencies:
     dependencies:
-      '@types/node': 18.11.9
+      '@types/node': 18.15.13
     dev: true
     dev: true
 
 
   /@types/fs-extra@9.0.13:
   /@types/fs-extra@9.0.13:
@@ -1379,7 +1428,7 @@ packages:
     resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==}
     resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==}
     dependencies:
     dependencies:
       '@types/minimatch': 5.1.2
       '@types/minimatch': 5.1.2
-      '@types/node': 18.11.9
+      '@types/node': 18.15.13
     dev: true
     dev: true
 
 
   /@types/json-schema@7.0.11:
   /@types/json-schema@7.0.11:
@@ -1423,7 +1472,7 @@ packages:
   /@types/pbkdf2@3.1.0:
   /@types/pbkdf2@3.1.0:
     resolution: {integrity: sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==}
     resolution: {integrity: sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==}
     dependencies:
     dependencies:
-      '@types/node': 18.11.9
+      '@types/node': 18.15.13
     dev: true
     dev: true
 
 
   /@types/prettier@2.7.2:
   /@types/prettier@2.7.2:
@@ -1434,6 +1483,13 @@ packages:
     resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==}
     resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==}
     dev: true
     dev: true
 
 
+  /@types/readable-stream@2.3.15:
+    resolution: {integrity: sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ==}
+    dependencies:
+      '@types/node': 18.15.13
+      safe-buffer: 5.1.2
+    dev: true
+
   /@types/resolve@0.0.8:
   /@types/resolve@0.0.8:
     resolution: {integrity: sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==}
     resolution: {integrity: sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==}
     dependencies:
     dependencies:
@@ -1443,7 +1499,7 @@ packages:
   /@types/secp256k1@4.0.3:
   /@types/secp256k1@4.0.3:
     resolution: {integrity: sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==}
     resolution: {integrity: sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==}
     dependencies:
     dependencies:
-      '@types/node': 18.11.9
+      '@types/node': 18.15.13
     dev: true
     dev: true
 
 
   /@types/semver@7.5.0:
   /@types/semver@7.5.0:
@@ -1635,13 +1691,6 @@ packages:
     resolution: {integrity: sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==}
     resolution: {integrity: sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==}
     dev: true
     dev: true
 
 
-  /abort-controller@3.0.0:
-    resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==}
-    engines: {node: '>=6.5'}
-    dependencies:
-      event-target-shim: 5.0.1
-    dev: true
-
   /abstract-level@1.0.3:
   /abstract-level@1.0.3:
     resolution: {integrity: sha512-t6jv+xHy+VYwc4xqZMn2Pa9DjcdzvzZmQGRjTFc8spIbRGHgBrEKbPq+rYXc7CCo0lxgYvSgKVg9qZAhpVQSjA==}
     resolution: {integrity: sha512-t6jv+xHy+VYwc4xqZMn2Pa9DjcdzvzZmQGRjTFc8spIbRGHgBrEKbPq+rYXc7CCo0lxgYvSgKVg9qZAhpVQSjA==}
     engines: {node: '>=12'}
     engines: {node: '>=12'}
@@ -1730,6 +1779,7 @@ packages:
   /amdefine@1.0.1:
   /amdefine@1.0.1:
     resolution: {integrity: sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==}
     resolution: {integrity: sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==}
     engines: {node: '>=0.4.2'}
     engines: {node: '>=0.4.2'}
+    requiresBuild: true
     dev: true
     dev: true
     optional: true
     optional: true
 
 
@@ -1881,22 +1931,10 @@ packages:
     engines: {node: '>=8'}
     engines: {node: '>=8'}
     dev: true
     dev: true
 
 
-  /async-eventemitter@0.2.4:
-    resolution: {integrity: sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw==}
-    dependencies:
-      async: 2.6.4
-    dev: true
-
   /async@1.5.2:
   /async@1.5.2:
     resolution: {integrity: sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==}
     resolution: {integrity: sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==}
     dev: true
     dev: true
 
 
-  /async@2.6.4:
-    resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==}
-    dependencies:
-      lodash: 4.17.21
-    dev: true
-
   /asynckit@0.4.0:
   /asynckit@0.4.0:
     resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
     resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
     dev: true
     dev: true
@@ -2103,6 +2141,11 @@ packages:
     resolution: {integrity: sha512-x1mgZEXK8jHIfAxm+xgdpHpk50IN3z3q3zP261/WS+uvePxW8izXuCu6AHz0lkuYTlATDehiZ/tNyYBdSQsOUQ==}
     resolution: {integrity: sha512-x1mgZEXK8jHIfAxm+xgdpHpk50IN3z3q3zP261/WS+uvePxW8izXuCu6AHz0lkuYTlATDehiZ/tNyYBdSQsOUQ==}
     dev: true
     dev: true
 
 
+  /case@1.6.3:
+    resolution: {integrity: sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==}
+    engines: {node: '>= 0.8.0'}
+    dev: true
+
   /caseless@0.12.0:
   /caseless@0.12.0:
     resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==}
     resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==}
     dev: true
     dev: true
@@ -2535,11 +2578,6 @@ packages:
       esutils: 2.0.3
       esutils: 2.0.3
     dev: true
     dev: true
 
 
-  /dotenv@16.0.3:
-    resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==}
-    engines: {node: '>=12'}
-    dev: true
-
   /ecc-jsbn@0.1.2:
   /ecc-jsbn@0.1.2:
     resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==}
     resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==}
     dependencies:
     dependencies:
@@ -3009,11 +3047,6 @@ packages:
       strip-hex-prefix: 1.0.0
       strip-hex-prefix: 1.0.0
     dev: true
     dev: true
 
 
-  /event-target-shim@5.0.1:
-    resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==}
-    engines: {node: '>=6'}
-    dev: true
-
   /evp_bytestokey@1.0.3:
   /evp_bytestokey@1.0.3:
     resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==}
     resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==}
     dependencies:
     dependencies:
@@ -3363,7 +3396,7 @@ packages:
       fs.realpath: 1.0.0
       fs.realpath: 1.0.0
       inflight: 1.0.6
       inflight: 1.0.6
       inherits: 2.0.4
       inherits: 2.0.4
-      minimatch: 3.0.4
+      minimatch: 3.1.2
       once: 1.4.0
       once: 1.4.0
       path-is-absolute: 1.0.1
       path-is-absolute: 1.0.1
     dev: true
     dev: true
@@ -3552,22 +3585,21 @@ packages:
       - utf-8-validate
       - utf-8-validate
     dev: true
     dev: true
 
 
-  /hardhat-gas-reporter@1.0.9(hardhat@2.12.2):
+  /hardhat-gas-reporter@1.0.9(hardhat@2.19.0):
     resolution: {integrity: sha512-INN26G3EW43adGKBNzYWOlI3+rlLnasXTwW79YNnUhXPDa+yHESgt639dJEs37gCjhkbNKcRRJnomXEuMFBXJg==}
     resolution: {integrity: sha512-INN26G3EW43adGKBNzYWOlI3+rlLnasXTwW79YNnUhXPDa+yHESgt639dJEs37gCjhkbNKcRRJnomXEuMFBXJg==}
     peerDependencies:
     peerDependencies:
       hardhat: ^2.0.2
       hardhat: ^2.0.2
     dependencies:
     dependencies:
       array-uniq: 1.0.3
       array-uniq: 1.0.3
       eth-gas-reporter: 0.2.25
       eth-gas-reporter: 0.2.25
-      hardhat: 2.12.2(ts-node@10.9.1)(typescript@4.9.3)
+      hardhat: 2.19.0(ts-node@10.9.1)(typescript@4.9.3)
       sha1: 1.1.1
       sha1: 1.1.1
     transitivePeerDependencies:
     transitivePeerDependencies:
       - '@codechecks/client'
       - '@codechecks/client'
     dev: true
     dev: true
 
 
-  /hardhat@2.12.2(ts-node@10.9.1)(typescript@4.9.3):
-    resolution: {integrity: sha512-f3ZhzXy1uyQv0UXnAQ8GCBOWjzv++WJNb7bnm10SsyC3dB7vlPpsMWBNhq7aoRxKrNhX9tCev81KFV3i5BTeMQ==}
-    engines: {node: ^14.0.0 || ^16.0.0 || ^18.0.0}
+  /hardhat@2.19.0(ts-node@10.9.1)(typescript@4.9.3):
+    resolution: {integrity: sha512-kMpwovOEfrFRQXEopCP+JTcKVwSYVj8rnXE0LynxDqnh06yvyKCQknmXL6IVYTHQL6Csysc/yNbCHQbjSeJGpA==}
     hasBin: true
     hasBin: true
     peerDependencies:
     peerDependencies:
       ts-node: '*'
       ts-node: '*'
@@ -3580,21 +3612,20 @@ packages:
     dependencies:
     dependencies:
       '@ethersproject/abi': 5.7.0
       '@ethersproject/abi': 5.7.0
       '@metamask/eth-sig-util': 4.0.1
       '@metamask/eth-sig-util': 4.0.1
-      '@nomicfoundation/ethereumjs-block': 4.2.2
-      '@nomicfoundation/ethereumjs-blockchain': 6.2.2
-      '@nomicfoundation/ethereumjs-common': 3.1.2
-      '@nomicfoundation/ethereumjs-evm': 1.3.2
-      '@nomicfoundation/ethereumjs-rlp': 4.0.3
-      '@nomicfoundation/ethereumjs-statemanager': 1.0.5
-      '@nomicfoundation/ethereumjs-trie': 5.0.5
-      '@nomicfoundation/ethereumjs-tx': 4.1.2
-      '@nomicfoundation/ethereumjs-util': 8.0.6
-      '@nomicfoundation/ethereumjs-vm': 6.4.2
+      '@nomicfoundation/ethereumjs-block': 5.0.2
+      '@nomicfoundation/ethereumjs-blockchain': 7.0.2
+      '@nomicfoundation/ethereumjs-common': 4.0.2
+      '@nomicfoundation/ethereumjs-evm': 2.0.2
+      '@nomicfoundation/ethereumjs-rlp': 5.0.2
+      '@nomicfoundation/ethereumjs-statemanager': 2.0.2
+      '@nomicfoundation/ethereumjs-trie': 6.0.2
+      '@nomicfoundation/ethereumjs-tx': 5.0.2
+      '@nomicfoundation/ethereumjs-util': 9.0.2
+      '@nomicfoundation/ethereumjs-vm': 7.0.2
       '@nomicfoundation/solidity-analyzer': 0.1.1
       '@nomicfoundation/solidity-analyzer': 0.1.1
       '@sentry/node': 5.30.0
       '@sentry/node': 5.30.0
       '@types/bn.js': 5.1.1
       '@types/bn.js': 5.1.1
       '@types/lru-cache': 5.1.1
       '@types/lru-cache': 5.1.1
-      abort-controller: 3.0.0
       adm-zip: 0.4.16
       adm-zip: 0.4.16
       aggregate-error: 3.1.0
       aggregate-error: 3.1.0
       ansi-escapes: 4.3.2
       ansi-escapes: 4.3.2
@@ -3617,7 +3648,6 @@ packages:
       mnemonist: 0.38.5
       mnemonist: 0.38.5
       mocha: 10.1.0
       mocha: 10.1.0
       p-map: 4.0.0
       p-map: 4.0.0
-      qs: 6.11.2
       raw-body: 2.5.2
       raw-body: 2.5.2
       resolve: 1.17.0
       resolve: 1.17.0
       semver: 6.3.0
       semver: 6.3.0
@@ -4452,6 +4482,34 @@ packages:
       yargs-unparser: 2.0.0
       yargs-unparser: 2.0.0
     dev: true
     dev: true
 
 
+  /mocha@10.2.0:
+    resolution: {integrity: sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==}
+    engines: {node: '>= 14.0.0'}
+    hasBin: true
+    dependencies:
+      ansi-colors: 4.1.1
+      browser-stdout: 1.3.1
+      chokidar: 3.5.3
+      debug: 4.3.4(supports-color@8.1.1)
+      diff: 5.0.0
+      escape-string-regexp: 4.0.0
+      find-up: 5.0.0
+      glob: 7.2.0
+      he: 1.2.0
+      js-yaml: 4.1.0
+      log-symbols: 4.1.0
+      minimatch: 5.0.1
+      ms: 2.1.3
+      nanoid: 3.3.3
+      serialize-javascript: 6.0.0
+      strip-json-comments: 3.1.1
+      supports-color: 8.1.1
+      workerpool: 6.2.1
+      yargs: 16.2.0
+      yargs-parser: 20.2.4
+      yargs-unparser: 2.0.0
+    dev: true
+
   /mocha@7.1.2:
   /mocha@7.1.2:
     resolution: {integrity: sha512-o96kdRKMKI3E8U0bjnfqW4QMk12MwZ4mhdBTf+B5a1q9+aq2HRnj+3ZdJu0B/ZhJeK78MgYuv6L8d/rA5AeBJA==}
     resolution: {integrity: sha512-o96kdRKMKI3E8U0bjnfqW4QMk12MwZ4mhdBTf+B5a1q9+aq2HRnj+3ZdJu0B/ZhJeK78MgYuv6L8d/rA5AeBJA==}
     engines: {node: '>= 8.10.0'}
     engines: {node: '>= 8.10.0'}
@@ -5105,7 +5163,7 @@ packages:
     resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==}
     resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==}
     hasBin: true
     hasBin: true
     dependencies:
     dependencies:
-      glob: 7.2.0
+      glob: 7.2.3
     dev: true
     dev: true
 
 
   /rimraf@3.0.2:
   /rimraf@3.0.2:
@@ -5377,14 +5435,14 @@ packages:
     resolution: {integrity: sha512-wciNMLg/Irp8OKGrh3S2tfvZiZ0NEyILfcRCXCD4mp7SgK/i9gzLfhY2hY7VMCQJ3kH9UB9BzNdibIVMchzyYw==}
     resolution: {integrity: sha512-wciNMLg/Irp8OKGrh3S2tfvZiZ0NEyILfcRCXCD4mp7SgK/i9gzLfhY2hY7VMCQJ3kH9UB9BzNdibIVMchzyYw==}
     dev: true
     dev: true
 
 
-  /solidity-coverage@0.8.2(hardhat@2.12.2):
-    resolution: {integrity: sha512-cv2bWb7lOXPE9/SSleDO6czkFiMHgP4NXPj+iW9W7iEKLBk7Cj0AGBiNmGX3V1totl9wjPrT0gHmABZKZt65rQ==}
+  /solidity-coverage@0.8.5(hardhat@2.19.0):
+    resolution: {integrity: sha512-6C6N6OV2O8FQA0FWA95FdzVH+L16HU94iFgg5wAFZ29UpLFkgNI/DRR2HotG1bC0F4gAc/OMs2BJI44Q/DYlKQ==}
     hasBin: true
     hasBin: true
     peerDependencies:
     peerDependencies:
       hardhat: ^2.11.0
       hardhat: ^2.11.0
     dependencies:
     dependencies:
       '@ethersproject/abi': 5.7.0
       '@ethersproject/abi': 5.7.0
-      '@solidity-parser/parser': 0.14.5
+      '@solidity-parser/parser': 0.16.1
       chalk: 2.4.2
       chalk: 2.4.2
       death: 1.1.0
       death: 1.1.0
       detect-port: 1.5.1
       detect-port: 1.5.1
@@ -5393,10 +5451,10 @@ packages:
       ghost-testrpc: 0.0.2
       ghost-testrpc: 0.0.2
       global-modules: 2.0.0
       global-modules: 2.0.0
       globby: 10.0.2
       globby: 10.0.2
-      hardhat: 2.12.2(ts-node@10.9.1)(typescript@4.9.3)
+      hardhat: 2.19.0(ts-node@10.9.1)(typescript@4.9.3)
       jsonschema: 1.4.1
       jsonschema: 1.4.1
       lodash: 4.17.21
       lodash: 4.17.21
-      mocha: 7.1.2
+      mocha: 10.2.0
       node-emoji: 1.11.0
       node-emoji: 1.11.0
       pify: 4.0.1
       pify: 4.0.1
       recursive-readdir: 2.2.3
       recursive-readdir: 2.2.3
@@ -6257,3 +6315,7 @@ packages:
     name: '@adraffy/ens-normalize'
     name: '@adraffy/ens-normalize'
     version: 1.9.0
     version: 1.9.0
     dev: true
     dev: true
+
+settings:
+  autoInstallPeers: true
+  excludeLinksFromLockfile: false