diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..e638e9b2 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,16 @@ +root = true + +[*.{ts,json,js}] +charset = utf-8 +end_of_line = lf +indent_size = 2 +indent_style = space +insert_final_newline = true +trim_trailing_whitespace = true + +[*.yml] +indent_size = 2 + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 00000000..66e95efb --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,27 @@ +module.exports = { + parser: '@typescript-eslint/parser', + parserOptions: { + project: 'tsconfig.json', + sourceType: 'module', + }, + plugins: ['@typescript-eslint/eslint-plugin'], + extends: [ + 'plugin:@typescript-eslint/recommended', + ], + root: true, + env: { + node: true, + jest: true, + }, + ignorePatterns: ['.eslintrc.js', 'hardhat.config.ts'], + rules: { + '@typescript-eslint/interface-name-prefix': 'off', + '@typescript-eslint/explicit-function-return-type': 'off', + '@typescript-eslint/explicit-module-boundary-types': 'off', + '@typescript-eslint/no-explicit-any': 'off', + 'indent': ['error', 2], + 'semi': [2, 'always'], + 'quotes': [2, 'single', 'avoid-escape'], + '@typescript-eslint/no-empty-function': 0, + }, +}; diff --git a/.github/workflows/code-coverage.yaml b/.github/workflows/code-coverage.yaml index 9f753d79..0b550135 100644 --- a/.github/workflows/code-coverage.yaml +++ b/.github/workflows/code-coverage.yaml @@ -11,8 +11,8 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-node@v1 with: - node-version: '12.x' + node-version: '16.x' - run: npm install env: GH_TOKEN: ${{ secrets.github_token }} - - run: npx hardhat coverage + - run: NO_GAS_ENFORCE=1 npx hardhat coverage diff --git a/.github/workflows/linter.yaml b/.github/workflows/linter.yaml index c7667c60..9be7e729 100644 --- a/.github/workflows/linter.yaml +++ b/.github/workflows/linter.yaml @@ -10,7 +10,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-node@v1 with: - node-version: '12.x' + node-version: '16.x' - run: npm install env: GH_TOKEN: ${{ secrets.github_token }} diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 4529c15f..41b426dc 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -11,7 +11,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-node@v1 with: - node-version: '12.x' + node-version: '16.x' - run: npm install env: GH_TOKEN: ${{ secrets.github_token }} diff --git a/.openzeppelin/goerli.json b/.openzeppelin/goerli.json deleted file mode 100644 index b1594a7e..00000000 --- a/.openzeppelin/goerli.json +++ /dev/null @@ -1,20247 +0,0 @@ -{ - "manifestVersion": "3.2", - "admin": { - "address": "0x550160B132987DD3197a637Ea5dfc21FE1a4bf1f", - "txHash": "0x0f1f054bd276cc6e54294c35dc784f991402a60eff974c58b24941ef43740ddd" - }, - "proxies": [ - { - "address": "0x07C29d7381cd03d21327CF88B918ef790fb19e67", - "txHash": "0xafe771e2b9e65209e6dc1fafe47780ddc4a01a7f33275fe5481f36dd8e582b44", - "kind": "transparent" - }, - { - "address": "0x6186F08bbb12dA5797852Bb8C3FBEC0623D57d62", - "txHash": "0x1f599ba77123b6dec2a8b2ac5164c2961229b95c91e295b7108f0bab0cc89e43", - "kind": "transparent" - }, - { - "address": "0xe8c9934EBA868BB8f54549376b5157B4bc79F84B", - "txHash": "0x25add42aa25f8679923a60d2997beeed6906864b79de9d83898a6468d69b86e9", - "kind": "transparent" - }, - { - "address": "0xFC561F6CDA1b65423b00B427c13b3b3666cfe668", - "txHash": "0x05eb20754f8461dfba639e9ae77d06b8e52328d90ccb8c595c7afde1dd7091a5", - "kind": "transparent" - }, - { - "address": "0x3F90b99EEcb3F3745428255CecB5c6d54b0a5eaD", - "txHash": "0x26b8de1fa1ef28cc80c4d70769f803377dad6ba28ee1ff4644afaae5884137b8", - "kind": "transparent" - }, - { - "address": "0x1963eeaD9C100FE7375e5F3d4b17A014759cFb04", - "txHash": "0x890336b445669bbdc638de43b5aa4caa680a4217baf66b7028b88f26c947f503", - "kind": "transparent" - }, - { - "address": "0x38D6bc1531EE425F30e6647B21903F7bbA97DD6d", - "txHash": "0x8ece39536fd37708eaee4d7afe752fde3451a21ae9190259d83a92e48a8855fd", - "kind": "transparent" - }, - { - "address": "0x0C5b677E1f662fC28bFFD0cb001c90DF3c20aa0B", - "txHash": "0x5f7e16ee1f4ea77a9c48ac14e8b72f461adf59777cb6ba72efdf08fc43c866b5", - "kind": "transparent" - }, - { - "address": "0x1B5676Af47f954E24c207F0481a0BFd89A0cfc8a", - "txHash": "0x5038901d32c89caf3a9255de31647a0651a1869dcd28717828c14e1ad41a4a64", - "kind": "transparent" - }, - { - "address": "0xfE86B2653F47909C36620eD7B3DbB4C064266475", - "txHash": "0x7ee2a55fe0923a55fa8601f0d1bc904fadc5cca75a83eeef322b5f70eef90e2a", - "kind": "transparent" - }, - { - "address": "0xF1E8f1b98D6B05Dcc27E93B1b501c89e286EEbA9", - "txHash": "0x9253e46eec12dfb5749ee3917b7e7f839fe1e778ac89af38407a071114538b7f", - "kind": "transparent" - }, - { - "address": "0x3a6c1995586D4d6827e8D8dA9F5F89Ba4Ab58a1f", - "txHash": "0x6bf582eb758b7066402efdfc20e1ace5de636812ad7cb41d65ba780dc86128fa", - "kind": "transparent" - }, - { - "address": "0x862afFa4f2D055f7a33E6137d7B94C42b929B20C", - "txHash": "0x0f65d8956703f10cc16f4aa31f3862e4581f508a0512622a873b15829bbcebc7", - "kind": "transparent" - }, - { - "address": "0x79AFd88A8DD393D8F3dCB89323246E9Cd5E2d87a", - "txHash": "0x7e11278c8c9f8507eb396f2a10cf10a8240d48c45753e7667adbe1acadabd578", - "kind": "transparent" - }, - { - "address": "0xF2f7e10F48319fa1BFf8b52920beAc251174B84F", - "txHash": "0x7906e5f39ed7c2c9162b2fd8f1530109b4cd844ca4091b3f39a91b92ef85ec38", - "kind": "transparent" - }, - { - "address": "0x6D8741Ec680f01DAD35355F6c7c8378E90e1cd66", - "txHash": "0x048dc955f725fbb144a6a97c4b6a64eb5a8251ca38f10e97fb72154426511c80", - "kind": "transparent" - }, - { - "address": "0xd594C1ef4845713e86658cb42227A811625A285b", - "txHash": "0xc1f43dbfc796cded2d0ea3748828c569d9841a928d2554d6f1de11637da42586", - "kind": "transparent" - }, - { - "address": "0x9A99b07128899a8772215AEAb70bC57160cccdF1", - "txHash": "0x4221336976bac8a687e0c1c1e132a1ed79c584c0e54cad0ef3cf6ebd004d967d", - "kind": "transparent" - }, - { - "address": "0xf5Bb64CdFA92315Aa8B13Cd2DD7c565C1EB6f077", - "txHash": "0xb69e3ed02a65ffb8595f76e453a779df573385cc1687f0242c9aac3479c8d15f", - "kind": "transparent" - }, - { - "address": "0x8AA6878bfCbF7c784C0C9e20e2dE2A50679FE553", - "txHash": "0xbc46130c5787ef1ba7bcbdc7dce506fb23310279fa686a26cc441e2255469da7", - "kind": "transparent" - }, - { - "address": "0x5e41f6E36B2bDE05eF2eFebF0EcEf6706A79E52D", - "txHash": "0x7dab5347f65a128c5a9bab21d429c050c8f7b4ddad83b6e133e083562c12f041", - "kind": "transparent" - }, - { - "address": "0x158C50eCd05674952Fb8533158885D90d311af22", - "txHash": "0x6679dafafde8b1b17fde9807a96af705b29ebaada0462974065a5d08fed2ad1f", - "kind": "transparent" - }, - { - "address": "0x9042f9D698FEA4A6aD13fBc83D2752D141522C7B", - "txHash": "0x0b6eb5bfa72da67438ef79918adb3af535885ed5b114f8cafcd358b4f290d0d5", - "kind": "transparent" - }, - { - "address": "0xD1fE29018CF54bdDa759a7C99fB85da58026030E", - "txHash": "0x82b0e60d92f5e0c39a03329bf07d69af8b92de5ba5abeceeb418b0303108f821", - "kind": "transparent" - }, - { - "address": "0x76B1c8E85A43c665eBC4aE1f8ea0Aebd2CAdd11e", - "txHash": "0x78af225cf066fa814b4c07fd173d82ce4bc68aec304e39c01f4b56021126a960", - "kind": "transparent" - }, - { - "address": "0xf3c07138d0e526D99333069362526295F4562990", - "txHash": "0xf4039e76202a1cf51904f8576cc24e0d2978793e8e99c1a5cf8edec5f5cf8f62", - "kind": "transparent" - }, - { - "address": "0xAfF9F2CB25841985FDae7811479630b3ef855e36", - "txHash": "0xb7c3ace5b3930ddc6e29d1863162bf0f4c0d8fcad0aa9bcbe14e40d91255bf77", - "kind": "transparent" - }, - { - "address": "0xC71eBc08F6924Bf2b0c3e669Cf82f05F0381E2Bb", - "txHash": "0x060e51692ba639e737ebc3bf2e9831abac6b528a7670db864511d9601538fbaa", - "kind": "transparent" - }, - { - "address": "0xf4F4B10d8c0a775Dd60b9B190234f2df3c8C7962", - "txHash": "0x5b1753737d96aab7a9cf000a0b244fe645f8a0a199b092b8def76b9a88f700c4", - "kind": "transparent" - }, - { - "address": "0xB2114c005fE00dBd9f745cc6296d33a5A8ae9420", - "txHash": "0xe9db44a457a31756bdbce452205a08b778690d948dc12806e9846d99d332277e", - "kind": "transparent" - }, - { - "address": "0x2c27Bca775fE20B01D6F5F39BFCc3fAAA26bC3dd", - "txHash": "0x569e3a4e269965cbf436c4759f06339223b5cb6832f2f6dfd66877b00967afd8", - "kind": "transparent" - }, - { - "address": "0x282937f09BF2D95D7BD899e105c072Aaf7Fb232c", - "txHash": "0x81cec6b5711813c7185c77f012068a444e66a0225076a9ec6765ebef63b6896f", - "kind": "transparent" - }, - { - "address": "0x4caa916f10e2144EDDCC7F8D1Dce579B16505025", - "txHash": "0xc7e32ccf6b4eb64173969ff18802a45ddddef58c0ea30a7a146f5aaa34bf89dc", - "kind": "transparent" - }, - { - "address": "0x04d0497552BEB9Da477DbfF809D8c88010E6357F", - "txHash": "0x67d81a4cee42407d40aacc1abfa7d3b02b7bafe2cf47ee5f8c41d4b5336982d0", - "kind": "transparent" - }, - { - "address": "0x483A0c1b82863758daC4868d6732A0CFFEfB9c93", - "txHash": "0xa9f621f03ff1b8ed5f68ac21eafc32009a10b84bc348cb3d8f31066a92a73b03", - "kind": "transparent" - }, - { - "address": "0x0f8b2d1e053c8D5C4093b8c5b48Fe17eABE0c90B", - "txHash": "0x3a9c9c18fba42f75d44d537f302027da46c1fc67364b49bbe2a0f3a7f6102f87", - "kind": "transparent" - }, - { - "address": "0x1F940D719A37071248A88CCAc69E1d650f65D169", - "txHash": "0xa5d885091e7eefd67873a746710387ecfb7259c213923d93626653301b729fd9", - "kind": "transparent" - }, - { - "address": "0xa2251cAAe81862FF0363FC378e7a1d80CE4004Fd", - "txHash": "0xbea0858d89e96fce7a62754c367834fc31f4a3d98b20ea373bfc930ceb85c23c", - "kind": "transparent" - }, - { - "address": "0x784a721ef9497a3793Ce9Ac5674A658e7360F2AD", - "txHash": "0xa1aaa3dfbf0bb9560685feea15eeb8ba6f6b3c04801d4c08361798d6c9a083a8", - "kind": "transparent" - }, - { - "address": "0x7C53aFc3EDdAC236e5960e2EDaF35482AC74D92c", - "txHash": "0xf1ab95bac0638f96748b0c5049ea320d39dfcdc78cb1228cd0ccb571aa81fbd2", - "kind": "transparent" - }, - { - "address": "0x28a55c072a0E72dcdFcBDe5398028260682Fa069", - "txHash": "0x9f032d6a7e875e6009918ad69174571509357e5887a198993fade39a289b88c8", - "kind": "transparent" - }, - { - "address": "0x4774Eef31369Bcb090183358ADdb01764FF223C4", - "txHash": "0xdd466aebddbe8204749cb8c94318260ac9ef38c2d34a66aa39351122934a7bac", - "kind": "transparent" - }, - { - "address": "0x87F7efc8C4c86cf30983f0793860B18A1fa8F127", - "txHash": "0x3691ecd00eecf94d92357610ed02d42fd86bc0fa573adf3ac991a40fb1750e4e", - "kind": "transparent" - }, - { - "address": "0xDD28b9Dbf202F40ebD916a58517dC76e6bFBE1f4", - "txHash": "0x92088d4f15184aacb033a8ed38d24c0e3c51936fa5f1761ff04ef68b5ce114f1", - "kind": "transparent" - }, - { - "address": "0xb2046ECd2db9219bD5915098A0002e4B5341D6D9", - "txHash": "0x843f7e34458a3ce9f2fa4aa28ad5af3a00198a6f15305923ac6d9dab0d293eda", - "kind": "transparent" - }, - { - "address": "0x116E52F0eACD1Ffa11eFd2c66345F76206B38B37", - "txHash": "0xc3e12aae8852924203b66b8208c7348307afcb30c745f7f555384b7785aada7e", - "kind": "transparent" - }, - { - "address": "0x5b46c3659f12D23049Dca9a4edec5E9B24f8948d", - "txHash": "0x3412648a963d11c8a8439099b5a7ba18d96df1144129958baf1697aad517508e", - "kind": "transparent" - }, - { - "address": "0x8A01D75d169e72F7CcD69ee5405d92ce54d9017D", - "txHash": "0x9ea77ba36d36e4a1f7f1100fdc936fa7d571dbad426ab7e07f87d8a121a9cddf", - "kind": "transparent" - }, - { - "address": "0x8feA36b975933A4ee73C31336cE013c45a11feC7", - "txHash": "0xd33c8a9cf72fcce1e6812499eb75ef3a144fc5ebe5d5a4a65a3dfec9d9a8819c", - "kind": "transparent" - }, - { - "address": "0xbb50039a4ff24570cf828b02bd05F08005044C80", - "txHash": "0xd641b55f9e772fd327a65ff411524ae76ae8f526cb61f0a6c5259b3741ade934", - "kind": "transparent" - }, - { - "address": "0x019487101C7a6b55F080965B3DC16E4919c5bD6f", - "txHash": "0x71eef817aa89a3e1d1038c949514239c127d78a1e2837f27242b198a4918f0f6", - "kind": "transparent" - }, - { - "address": "0xE2e28FDEA8bA1bB59a0056f6A5eABD443d47eC78", - "txHash": "0x4f9037f95617b37f0158e0461043de3997a028f36703c34861c34cd2ce17791e", - "kind": "transparent" - }, - { - "address": "0x5b8103ea67D2260FC8571E4ca4eC7d38d64e68B9", - "txHash": "0xc5eb479b71c67606dbdb42a098e216cfaa8cc31a7454215e05b346ebb1dbae70", - "kind": "transparent" - }, - { - "address": "0xe38256539B8731716EE6724EAa8672770ABE7d0d", - "txHash": "0x2a0bf723e1e484a718bc6102554a6d851486196ad5065a6b5b26d1c3081574fe", - "kind": "transparent" - }, - { - "address": "0x49D395eFcE6233e116C69333F249e6cF128D5992", - "txHash": "0x432f81ac0ae56f61a55e7538aea90af82c24d5a073ece806dd5d9cb279655b25", - "kind": "transparent" - }, - { - "address": "0xb9e155e65B5c4D66df28Da8E9a0957f06F11Bc04", - "txHash": "0x08507798c3dc6ecddc4e5c80cf0b7eb05d35f5738a4ccc74cc56b035ad5659d2", - "kind": "transparent" - } - ], - "impls": { - "baf9cc9d16f9682ee3153164cd1610c561f4a2b4e9bf09bd3b7fc9f175992efc": { - "address": "0xD39dc914acf4aA76D3237cCb620e7a3bB1E14b5B", - "txHash": "0xa8f98dd1cecd1e78647a5187c98829637b5e34e8890443fb6eb745a709188a5a", - "layout": { - "storage": [ - { - "contract": "Initializable", - "label": "_initialized", - "type": "t_bool", - "src": "@openzeppelin/contracts/proxy/utils/Initializable.sol:23" - }, - { - "contract": "Initializable", - "label": "_initializing", - "type": "t_bool", - "src": "@openzeppelin/contracts/proxy/utils/Initializable.sol:28" - }, - { - "contract": "DEX", - "label": "_cdtToken", - "type": "t_contract(IERC20)962", - "src": "contracts/DEX.sol:14" - }, - { - "contract": "DEX", - "label": "_ssvToken", - "type": "t_contract(IERC20)962", - "src": "contracts/DEX.sol:15" - }, - { - "contract": "DEX", - "label": "_rate", - "type": "t_uint256", - "src": "contracts/DEX.sol:16" - } - ], - "types": { - "t_contract(IERC20)962": { - "label": "contract IERC20" - }, - "t_uint256": { - "label": "uint256" - }, - "t_bool": { - "label": "bool" - } - } - } - }, - "333dd45fa99ad81fa59bfa7375d09378a45c2bedcaacef3591b1a8f6e6c73310": { - "address": "0x887AE88Ce4A1a1bCFe416b212b2b56923cF0Dcb1", - "txHash": "0x991a34cddad47c222edeb586da5f8b4405e07c655eb8a1059693b79c997fd2ff", - "layout": { - "storage": [ - { - "contract": "Initializable", - "label": "_initialized", - "type": "t_bool", - "src": "@openzeppelin/contracts/proxy/utils/Initializable.sol:23" - }, - { - "contract": "Initializable", - "label": "_initializing", - "type": "t_bool", - "src": "@openzeppelin/contracts/proxy/utils/Initializable.sol:28" - }, - { - "contract": "ContextUpgradeable", - "label": "__gap", - "type": "t_array(t_uint256)50_storage", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "contract": "OwnableUpgradeable", - "label": "_owner", - "type": "t_address", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "contract": "OwnableUpgradeable", - "label": "__gap", - "type": "t_array(t_uint256)49_storage", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "contract": "SSVRegistry", - "label": "_operatorCount", - "type": "t_uint256", - "src": "contracts/SSVRegistry.sol:32" - }, - { - "contract": "SSVRegistry", - "label": "_validatorCount", - "type": "t_uint256", - "src": "contracts/SSVRegistry.sol:33" - }, - { - "contract": "SSVRegistry", - "label": "_operators", - "type": "t_mapping(t_bytes_memory_ptr,t_struct(Operator)4604_storage)", - "src": "contracts/SSVRegistry.sol:35" - }, - { - "contract": "SSVRegistry", - "label": "_validators", - "type": "t_mapping(t_bytes_memory_ptr,t_struct(Validator)4617_storage)", - "src": "contracts/SSVRegistry.sol:36" - }, - { - "contract": "SSVRegistry", - "label": "_operatorFees", - "type": "t_mapping(t_bytes_memory_ptr,t_array(t_struct(OperatorFee)4622_storage)dyn_storage)", - "src": "contracts/SSVRegistry.sol:38" - }, - { - "contract": "SSVRegistry", - "label": "_operatorsByOwnerAddress", - "type": "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)", - "src": "contracts/SSVRegistry.sol:40" - }, - { - "contract": "SSVRegistry", - "label": "_validatorsByAddress", - "type": "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)", - "src": "contracts/SSVRegistry.sol:41" - } - ], - "types": { - "t_uint256": { - "label": "uint256" - }, - "t_mapping(t_bytes_memory_ptr,t_struct(Operator)4604_storage)": { - "label": "mapping(bytes => struct SSVRegistry.Operator)" - }, - "t_bytes_storage": { - "label": "bytes" - }, - "t_struct(Operator)4604_storage": { - "label": "struct SSVRegistry.Operator", - "members": [ - { - "label": "name", - "type": "t_string_storage" - }, - { - "label": "ownerAddress", - "type": "t_address" - }, - { - "label": "publicKey", - "type": "t_bytes_storage" - }, - { - "label": "score", - "type": "t_uint256" - }, - { - "label": "active", - "type": "t_bool" - }, - { - "label": "index", - "type": "t_uint256" - } - ] - }, - "t_string_storage": { - "label": "string" - }, - "t_address": { - "label": "address" - }, - "t_bool": { - "label": "bool" - }, - "t_mapping(t_bytes_memory_ptr,t_struct(Validator)4617_storage)": { - "label": "mapping(bytes => struct SSVRegistry.Validator)" - }, - "t_struct(Validator)4617_storage": { - "label": "struct SSVRegistry.Validator", - "members": [ - { - "label": "ownerAddress", - "type": "t_address" - }, - { - "label": "publicKey", - "type": "t_bytes_storage" - }, - { - "label": "oess", - "type": "t_array(t_struct(Oess)2395_storage)dyn_storage" - }, - { - "label": "active", - "type": "t_bool" - }, - { - "label": "index", - "type": "t_uint256" - } - ] - }, - "t_array(t_struct(Oess)2395_storage)dyn_storage": { - "label": "struct ISSVRegistry.Oess[]" - }, - "t_struct(Oess)2395_storage": { - "label": "struct ISSVRegistry.Oess", - "members": [ - { - "label": "operatorPublicKey", - "type": "t_bytes_storage" - }, - { - "label": "sharedPublicKey", - "type": "t_bytes_storage" - }, - { - "label": "encryptedKey", - "type": "t_bytes_storage" - } - ] - }, - "t_mapping(t_bytes_memory_ptr,t_array(t_struct(OperatorFee)4622_storage)dyn_storage)": { - "label": "mapping(bytes => struct SSVRegistry.OperatorFee[])" - }, - "t_array(t_struct(OperatorFee)4622_storage)dyn_storage": { - "label": "struct SSVRegistry.OperatorFee[]" - }, - "t_struct(OperatorFee)4622_storage": { - "label": "struct SSVRegistry.OperatorFee", - "members": [ - { - "label": "blockNumber", - "type": "t_uint256" - }, - { - "label": "fee", - "type": "t_uint256" - } - ] - }, - "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)": { - "label": "mapping(address => bytes[])" - }, - "t_array(t_bytes_storage)dyn_storage": { - "label": "bytes[]" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]" - } - } - } - }, - "71b646644b23e3ace247430ed39deaf5b3665d21b0a59fb2398d1f0e6cf64077": { - "address": "0x6C590319868782aeB14aaBA80949b507Fd43CEdA", - "txHash": "0xfb27f1272cbee5b0fdabcf4a02fc4a30124fb1aff3f7031dcb757f91154cc649", - "layout": { - "storage": [ - { - "contract": "Initializable", - "label": "_initialized", - "type": "t_bool", - "src": "@openzeppelin/contracts/proxy/utils/Initializable.sol:23" - }, - { - "contract": "Initializable", - "label": "_initializing", - "type": "t_bool", - "src": "@openzeppelin/contracts/proxy/utils/Initializable.sol:28" - }, - { - "contract": "ContextUpgradeable", - "label": "__gap", - "type": "t_array(t_uint256)50_storage", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "contract": "OwnableUpgradeable", - "label": "_owner", - "type": "t_address", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "contract": "OwnableUpgradeable", - "label": "__gap", - "type": "t_array(t_uint256)49_storage", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "contract": "SSVNetwork", - "label": "_ssvRegistryContract", - "type": "t_contract(ISSVRegistry)2686", - "src": "contracts/SSVNetwork.sol:38" - }, - { - "contract": "SSVNetwork", - "label": "_token", - "type": "t_contract(IERC20)962", - "src": "contracts/SSVNetwork.sol:39" - }, - { - "contract": "SSVNetwork", - "label": "_minimumBlocksBeforeLiquidation", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:40" - }, - { - "contract": "SSVNetwork", - "label": "_networkFee", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:42" - }, - { - "contract": "SSVNetwork", - "label": "_networkFeeIndex", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:43" - }, - { - "contract": "SSVNetwork", - "label": "_networkFeeIndexBlockNumber", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:44" - }, - { - "contract": "SSVNetwork", - "label": "_lastUpdateNetworkFeeRun", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:45" - }, - { - "contract": "SSVNetwork", - "label": "_operatorDatas", - "type": "t_mapping(t_bytes_memory_ptr,t_struct(OperatorData)2710_storage)", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "contract": "SSVNetwork", - "label": "_owners", - "type": "t_mapping(t_address,t_struct(OwnerData)2725_storage)", - "src": "contracts/SSVNetwork.sol:48" - }, - { - "contract": "SSVNetwork", - "label": "_operatorsInUseByAddress", - "type": "t_mapping(t_address,t_mapping(t_bytes_memory_ptr,t_struct(OperatorInUse)2736_storage))", - "src": "contracts/SSVNetwork.sol:49" - }, - { - "contract": "SSVNetwork", - "label": "_operatorsInUseList", - "type": "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)", - "src": "contracts/SSVNetwork.sol:50" - }, - { - "contract": "SSVNetwork", - "label": "_lastOperatorUpdateNetworkFeeRun", - "type": "t_mapping(t_bytes_memory_ptr,t_uint256)", - "src": "contracts/SSVNetwork.sol:51" - } - ], - "types": { - "t_contract(ISSVRegistry)2686": { - "label": "contract ISSVRegistry" - }, - "t_contract(IERC20)962": { - "label": "contract IERC20" - }, - "t_uint256": { - "label": "uint256" - }, - "t_mapping(t_bytes_memory_ptr,t_struct(OperatorData)2710_storage)": { - "label": "mapping(bytes => struct SSVNetwork.OperatorData)" - }, - "t_bytes_storage": { - "label": "bytes" - }, - "t_struct(OperatorData)2710_storage": { - "label": "struct SSVNetwork.OperatorData", - "members": [ - { - "label": "blockNumber", - "type": "t_uint256" - }, - { - "label": "validatorCount", - "type": "t_uint256" - }, - { - "label": "balance", - "type": "t_uint256" - }, - { - "label": "index", - "type": "t_uint256" - }, - { - "label": "indexBlockNumber", - "type": "t_uint256" - }, - { - "label": "lastFeeUpdate", - "type": "t_uint256" - } - ] - }, - "t_mapping(t_address,t_struct(OwnerData)2725_storage)": { - "label": "mapping(address => struct SSVNetwork.OwnerData)" - }, - "t_address": { - "label": "address" - }, - "t_struct(OwnerData)2725_storage": { - "label": "struct SSVNetwork.OwnerData", - "members": [ - { - "label": "deposited", - "type": "t_uint256" - }, - { - "label": "withdrawn", - "type": "t_uint256" - }, - { - "label": "earned", - "type": "t_uint256" - }, - { - "label": "used", - "type": "t_uint256" - }, - { - "label": "networkFee", - "type": "t_uint256" - }, - { - "label": "networkFeeIndex", - "type": "t_uint256" - }, - { - "label": "activeValidatorsCount", - "type": "t_uint256" - } - ] - }, - "t_mapping(t_address,t_mapping(t_bytes_memory_ptr,t_struct(OperatorInUse)2736_storage))": { - "label": "mapping(address => mapping(bytes => struct SSVNetwork.OperatorInUse))" - }, - "t_mapping(t_bytes_memory_ptr,t_struct(OperatorInUse)2736_storage)": { - "label": "mapping(bytes => struct SSVNetwork.OperatorInUse)" - }, - "t_struct(OperatorInUse)2736_storage": { - "label": "struct SSVNetwork.OperatorInUse", - "members": [ - { - "label": "index", - "type": "t_uint256" - }, - { - "label": "validatorCount", - "type": "t_uint256" - }, - { - "label": "used", - "type": "t_uint256" - }, - { - "label": "exists", - "type": "t_bool" - }, - { - "label": "indexInArray", - "type": "t_uint256" - } - ] - }, - "t_bool": { - "label": "bool" - }, - "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)": { - "label": "mapping(address => bytes[])" - }, - "t_array(t_bytes_storage)dyn_storage": { - "label": "bytes[]" - }, - "t_mapping(t_bytes_memory_ptr,t_uint256)": { - "label": "mapping(bytes => uint256)" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]" - } - } - } - }, - "f3645556a7937193f4534bd7f6b4f181b1f4bf76abd0bc993c3e2cbf43be9699": { - "address": "0x2287f839D558Ba22e79e96d0467ee7db4aB9d785", - "txHash": "0xfd1b6ce59c303603953c59b38578391a556b8dfd8125d79a1600d09cc7f93823", - "layout": { - "storage": [ - { - "contract": "Initializable", - "label": "_initialized", - "type": "t_bool", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:23" - }, - { - "contract": "Initializable", - "label": "_initializing", - "type": "t_bool", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:28" - }, - { - "contract": "ContextUpgradeable", - "label": "__gap", - "type": "t_array(t_uint256)50_storage", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "contract": "OwnableUpgradeable", - "label": "_owner", - "type": "t_address", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "contract": "OwnableUpgradeable", - "label": "__gap", - "type": "t_array(t_uint256)49_storage", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "contract": "SSVRegistry", - "label": "_operatorCount", - "type": "t_uint256", - "src": "contracts/SSVRegistry.sol:32" - }, - { - "contract": "SSVRegistry", - "label": "_validatorCount", - "type": "t_uint256", - "src": "contracts/SSVRegistry.sol:33" - }, - { - "contract": "SSVRegistry", - "label": "_activeValidatorCount", - "type": "t_uint256", - "src": "contracts/SSVRegistry.sol:34" - }, - { - "contract": "SSVRegistry", - "label": "_operators", - "type": "t_mapping(t_bytes_memory_ptr,t_struct(Operator)618_storage)", - "src": "contracts/SSVRegistry.sol:36" - }, - { - "contract": "SSVRegistry", - "label": "_validators", - "type": "t_mapping(t_bytes_memory_ptr,t_struct(Validator)631_storage)", - "src": "contracts/SSVRegistry.sol:37" - }, - { - "contract": "SSVRegistry", - "label": "_operatorFees", - "type": "t_mapping(t_bytes_memory_ptr,t_array(t_struct(OperatorFee)636_storage)dyn_storage)", - "src": "contracts/SSVRegistry.sol:39" - }, - { - "contract": "SSVRegistry", - "label": "_operatorsByOwnerAddress", - "type": "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)", - "src": "contracts/SSVRegistry.sol:41" - }, - { - "contract": "SSVRegistry", - "label": "_validatorsByAddress", - "type": "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)", - "src": "contracts/SSVRegistry.sol:42" - } - ], - "types": { - "t_uint256": { - "label": "uint256" - }, - "t_mapping(t_bytes_memory_ptr,t_struct(Operator)618_storage)": { - "label": "mapping(bytes => struct SSVRegistry.Operator)" - }, - "t_bytes_storage": { - "label": "bytes" - }, - "t_struct(Operator)618_storage": { - "label": "struct SSVRegistry.Operator", - "members": [ - { - "label": "name", - "type": "t_string_storage" - }, - { - "label": "ownerAddress", - "type": "t_address" - }, - { - "label": "publicKey", - "type": "t_bytes_storage" - }, - { - "label": "score", - "type": "t_uint256" - }, - { - "label": "active", - "type": "t_bool" - }, - { - "label": "index", - "type": "t_uint256" - } - ] - }, - "t_string_storage": { - "label": "string" - }, - "t_address": { - "label": "address" - }, - "t_bool": { - "label": "bool" - }, - "t_mapping(t_bytes_memory_ptr,t_struct(Validator)631_storage)": { - "label": "mapping(bytes => struct SSVRegistry.Validator)" - }, - "t_struct(Validator)631_storage": { - "label": "struct SSVRegistry.Validator", - "members": [ - { - "label": "ownerAddress", - "type": "t_address" - }, - { - "label": "publicKey", - "type": "t_bytes_storage" - }, - { - "label": "oess", - "type": "t_array(t_struct(Oess)303_storage)dyn_storage" - }, - { - "label": "active", - "type": "t_bool" - }, - { - "label": "index", - "type": "t_uint256" - } - ] - }, - "t_array(t_struct(Oess)303_storage)dyn_storage": { - "label": "struct ISSVRegistry.Oess[]" - }, - "t_struct(Oess)303_storage": { - "label": "struct ISSVRegistry.Oess", - "members": [ - { - "label": "operatorPublicKey", - "type": "t_bytes_storage" - }, - { - "label": "sharedPublicKey", - "type": "t_bytes_storage" - }, - { - "label": "encryptedKey", - "type": "t_bytes_storage" - } - ] - }, - "t_mapping(t_bytes_memory_ptr,t_array(t_struct(OperatorFee)636_storage)dyn_storage)": { - "label": "mapping(bytes => struct SSVRegistry.OperatorFee[])" - }, - "t_array(t_struct(OperatorFee)636_storage)dyn_storage": { - "label": "struct SSVRegistry.OperatorFee[]" - }, - "t_struct(OperatorFee)636_storage": { - "label": "struct SSVRegistry.OperatorFee", - "members": [ - { - "label": "blockNumber", - "type": "t_uint256" - }, - { - "label": "fee", - "type": "t_uint256" - } - ] - }, - "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)": { - "label": "mapping(address => bytes[])" - }, - "t_array(t_bytes_storage)dyn_storage": { - "label": "bytes[]" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]" - } - } - } - }, - "7d122f8d61e975ee287c7c64f459a3a18e9034383dc50617c78817ad7e7b0530": { - "address": "0xd5bCe052dA9A2c7a6EE0B8499626843f4e13bEA7", - "txHash": "0x6d51f5a23fb8217845ab879a2c3755565278369bfbe984c6f0363d184aa6e857", - "layout": { - "storage": [ - { - "contract": "Initializable", - "label": "_initialized", - "type": "t_bool", - "src": "@openzeppelin/contracts/proxy/utils/Initializable.sol:23" - }, - { - "contract": "Initializable", - "label": "_initializing", - "type": "t_bool", - "src": "@openzeppelin/contracts/proxy/utils/Initializable.sol:28" - }, - { - "contract": "ContextUpgradeable", - "label": "__gap", - "type": "t_array(t_uint256)50_storage", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "contract": "OwnableUpgradeable", - "label": "_owner", - "type": "t_address", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "contract": "OwnableUpgradeable", - "label": "__gap", - "type": "t_array(t_uint256)49_storage", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "contract": "SSVNetwork", - "label": "_ssvRegistryContract", - "type": "t_contract(ISSVRegistry)2734", - "src": "contracts/SSVNetwork.sol:38" - }, - { - "contract": "SSVNetwork", - "label": "_token", - "type": "t_contract(IERC20)962", - "src": "contracts/SSVNetwork.sol:39" - }, - { - "contract": "SSVNetwork", - "label": "_minimumBlocksBeforeLiquidation", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:40" - }, - { - "contract": "SSVNetwork", - "label": "_operatorMaxFeeIncrease", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:41" - }, - { - "contract": "SSVNetwork", - "label": "_networkFee", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:43" - }, - { - "contract": "SSVNetwork", - "label": "_networkFeeIndex", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:44" - }, - { - "contract": "SSVNetwork", - "label": "_networkFeeIndexBlockNumber", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:45" - }, - { - "contract": "SSVNetwork", - "label": "_lastUpdateNetworkFeeRun", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:46" - }, - { - "contract": "SSVNetwork", - "label": "_networkEarnings", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "contract": "SSVNetwork", - "label": "_networkEarningsBlockNumber", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:48" - }, - { - "contract": "SSVNetwork", - "label": "_withdrawnFromTreasury", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:49" - }, - { - "contract": "SSVNetwork", - "label": "_operatorDatas", - "type": "t_mapping(t_bytes_memory_ptr,t_struct(OperatorData)2758_storage)", - "src": "contracts/SSVNetwork.sol:51" - }, - { - "contract": "SSVNetwork", - "label": "_owners", - "type": "t_mapping(t_address,t_struct(OwnerData)2773_storage)", - "src": "contracts/SSVNetwork.sol:52" - }, - { - "contract": "SSVNetwork", - "label": "_operatorsInUseByAddress", - "type": "t_mapping(t_address,t_mapping(t_bytes_memory_ptr,t_struct(OperatorInUse)2784_storage))", - "src": "contracts/SSVNetwork.sol:53" - }, - { - "contract": "SSVNetwork", - "label": "_operatorsInUseList", - "type": "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "contract": "SSVNetwork", - "label": "_lastOperatorUpdateNetworkFeeRun", - "type": "t_mapping(t_bytes_memory_ptr,t_uint256)", - "src": "contracts/SSVNetwork.sol:55" - } - ], - "types": { - "t_contract(ISSVRegistry)2734": { - "label": "contract ISSVRegistry" - }, - "t_contract(IERC20)962": { - "label": "contract IERC20" - }, - "t_uint256": { - "label": "uint256" - }, - "t_mapping(t_bytes_memory_ptr,t_struct(OperatorData)2758_storage)": { - "label": "mapping(bytes => struct SSVNetwork.OperatorData)" - }, - "t_bytes_storage": { - "label": "bytes" - }, - "t_struct(OperatorData)2758_storage": { - "label": "struct SSVNetwork.OperatorData", - "members": [ - { - "label": "blockNumber", - "type": "t_uint256" - }, - { - "label": "validatorCount", - "type": "t_uint256" - }, - { - "label": "earnings", - "type": "t_uint256" - }, - { - "label": "index", - "type": "t_uint256" - }, - { - "label": "indexBlockNumber", - "type": "t_uint256" - }, - { - "label": "lastFeeUpdate", - "type": "t_uint256" - } - ] - }, - "t_mapping(t_address,t_struct(OwnerData)2773_storage)": { - "label": "mapping(address => struct SSVNetwork.OwnerData)" - }, - "t_address": { - "label": "address" - }, - "t_struct(OwnerData)2773_storage": { - "label": "struct SSVNetwork.OwnerData", - "members": [ - { - "label": "deposited", - "type": "t_uint256" - }, - { - "label": "withdrawn", - "type": "t_uint256" - }, - { - "label": "earned", - "type": "t_uint256" - }, - { - "label": "used", - "type": "t_uint256" - }, - { - "label": "networkFee", - "type": "t_uint256" - }, - { - "label": "networkFeeIndex", - "type": "t_uint256" - }, - { - "label": "activeValidatorsCount", - "type": "t_uint256" - } - ] - }, - "t_mapping(t_address,t_mapping(t_bytes_memory_ptr,t_struct(OperatorInUse)2784_storage))": { - "label": "mapping(address => mapping(bytes => struct SSVNetwork.OperatorInUse))" - }, - "t_mapping(t_bytes_memory_ptr,t_struct(OperatorInUse)2784_storage)": { - "label": "mapping(bytes => struct SSVNetwork.OperatorInUse)" - }, - "t_struct(OperatorInUse)2784_storage": { - "label": "struct SSVNetwork.OperatorInUse", - "members": [ - { - "label": "index", - "type": "t_uint256" - }, - { - "label": "validatorCount", - "type": "t_uint256" - }, - { - "label": "used", - "type": "t_uint256" - }, - { - "label": "exists", - "type": "t_bool" - }, - { - "label": "indexInArray", - "type": "t_uint256" - } - ] - }, - "t_bool": { - "label": "bool" - }, - "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)": { - "label": "mapping(address => bytes[])" - }, - "t_array(t_bytes_storage)dyn_storage": { - "label": "bytes[]" - }, - "t_mapping(t_bytes_memory_ptr,t_uint256)": { - "label": "mapping(bytes => uint256)" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]" - } - } - } - }, - "ed45d99b66f5161b8364308273bd0abe58ba080ccf2a3eb9c8ea512caafd3ea5": { - "address": "0xd64b457ddaaDB52e7Af08452ddd36d1c72b9f86b", - "txHash": "0xf8590d5068ee3988d9c435b8305821136fec5f23b9f6d42b2cbb69be9911198c", - "layout": { - "storage": [ - { - "contract": "Initializable", - "label": "_initialized", - "type": "t_bool", - "src": "@openzeppelin/contracts/proxy/utils/Initializable.sol:23" - }, - { - "contract": "Initializable", - "label": "_initializing", - "type": "t_bool", - "src": "@openzeppelin/contracts/proxy/utils/Initializable.sol:28" - }, - { - "contract": "ContextUpgradeable", - "label": "__gap", - "type": "t_array(t_uint256)50_storage", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "contract": "OwnableUpgradeable", - "label": "_owner", - "type": "t_address", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "contract": "OwnableUpgradeable", - "label": "__gap", - "type": "t_array(t_uint256)49_storage", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "contract": "SSVNetwork", - "label": "_ssvRegistryContract", - "type": "t_contract(ISSVRegistry)2752", - "src": "contracts/SSVNetwork.sol:38" - }, - { - "contract": "SSVNetwork", - "label": "_token", - "type": "t_contract(IERC20)962", - "src": "contracts/SSVNetwork.sol:39" - }, - { - "contract": "SSVNetwork", - "label": "_minimumBlocksBeforeLiquidation", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:40" - }, - { - "contract": "SSVNetwork", - "label": "_operatorMaxFeeIncrease", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:41" - }, - { - "contract": "SSVNetwork", - "label": "_networkFee", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:43" - }, - { - "contract": "SSVNetwork", - "label": "_networkFeeIndex", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:44" - }, - { - "contract": "SSVNetwork", - "label": "_networkFeeIndexBlockNumber", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:45" - }, - { - "contract": "SSVNetwork", - "label": "_lastUpdateNetworkFeeRun", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:46" - }, - { - "contract": "SSVNetwork", - "label": "_networkEarnings", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "contract": "SSVNetwork", - "label": "_networkEarningsBlockNumber", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:48" - }, - { - "contract": "SSVNetwork", - "label": "_withdrawnFromTreasury", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:49" - }, - { - "contract": "SSVNetwork", - "label": "_operatorDatas", - "type": "t_mapping(t_bytes_memory_ptr,t_struct(OperatorData)2776_storage)", - "src": "contracts/SSVNetwork.sol:51" - }, - { - "contract": "SSVNetwork", - "label": "_owners", - "type": "t_mapping(t_address,t_struct(OwnerData)2791_storage)", - "src": "contracts/SSVNetwork.sol:52" - }, - { - "contract": "SSVNetwork", - "label": "_operatorsInUseByAddress", - "type": "t_mapping(t_address,t_mapping(t_bytes_memory_ptr,t_struct(OperatorInUse)2802_storage))", - "src": "contracts/SSVNetwork.sol:53" - }, - { - "contract": "SSVNetwork", - "label": "_operatorsInUseList", - "type": "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "contract": "SSVNetwork", - "label": "_lastOperatorUpdateNetworkFeeRun", - "type": "t_mapping(t_bytes_memory_ptr,t_uint256)", - "src": "contracts/SSVNetwork.sol:55" - } - ], - "types": { - "t_contract(ISSVRegistry)2752": { - "label": "contract ISSVRegistry" - }, - "t_contract(IERC20)962": { - "label": "contract IERC20" - }, - "t_uint256": { - "label": "uint256" - }, - "t_mapping(t_bytes_memory_ptr,t_struct(OperatorData)2776_storage)": { - "label": "mapping(bytes => struct SSVNetwork.OperatorData)" - }, - "t_bytes_storage": { - "label": "bytes" - }, - "t_struct(OperatorData)2776_storage": { - "label": "struct SSVNetwork.OperatorData", - "members": [ - { - "label": "blockNumber", - "type": "t_uint256" - }, - { - "label": "validatorCount", - "type": "t_uint256" - }, - { - "label": "earnings", - "type": "t_uint256" - }, - { - "label": "index", - "type": "t_uint256" - }, - { - "label": "indexBlockNumber", - "type": "t_uint256" - }, - { - "label": "lastFeeUpdate", - "type": "t_uint256" - } - ] - }, - "t_mapping(t_address,t_struct(OwnerData)2791_storage)": { - "label": "mapping(address => struct SSVNetwork.OwnerData)" - }, - "t_address": { - "label": "address" - }, - "t_struct(OwnerData)2791_storage": { - "label": "struct SSVNetwork.OwnerData", - "members": [ - { - "label": "deposited", - "type": "t_uint256" - }, - { - "label": "withdrawn", - "type": "t_uint256" - }, - { - "label": "earned", - "type": "t_uint256" - }, - { - "label": "used", - "type": "t_uint256" - }, - { - "label": "networkFee", - "type": "t_uint256" - }, - { - "label": "networkFeeIndex", - "type": "t_uint256" - }, - { - "label": "activeValidatorsCount", - "type": "t_uint256" - } - ] - }, - "t_mapping(t_address,t_mapping(t_bytes_memory_ptr,t_struct(OperatorInUse)2802_storage))": { - "label": "mapping(address => mapping(bytes => struct SSVNetwork.OperatorInUse))" - }, - "t_mapping(t_bytes_memory_ptr,t_struct(OperatorInUse)2802_storage)": { - "label": "mapping(bytes => struct SSVNetwork.OperatorInUse)" - }, - "t_struct(OperatorInUse)2802_storage": { - "label": "struct SSVNetwork.OperatorInUse", - "members": [ - { - "label": "index", - "type": "t_uint256" - }, - { - "label": "validatorCount", - "type": "t_uint256" - }, - { - "label": "used", - "type": "t_uint256" - }, - { - "label": "exists", - "type": "t_bool" - }, - { - "label": "indexInArray", - "type": "t_uint256" - } - ] - }, - "t_bool": { - "label": "bool" - }, - "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)": { - "label": "mapping(address => bytes[])" - }, - "t_array(t_bytes_storage)dyn_storage": { - "label": "bytes[]" - }, - "t_mapping(t_bytes_memory_ptr,t_uint256)": { - "label": "mapping(bytes => uint256)" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]" - } - } - } - }, - "2afaadc5b4e0290f800288c871dab625759e761ea3a93793efd53aed73ccccff": { - "address": "0xAcfBDE0C026CBC1c941CdcfCB24Fa9c73D77DDB9", - "txHash": "0xc96b6419ed4a2277f656acb52cd167f60a907f25983cc46d95014331ba91fe59", - "layout": { - "storage": [ - { - "contract": "Initializable", - "label": "_initialized", - "type": "t_bool", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:23" - }, - { - "contract": "Initializable", - "label": "_initializing", - "type": "t_bool", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:28" - }, - { - "contract": "ContextUpgradeable", - "label": "__gap", - "type": "t_array(t_uint256)50_storage", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "contract": "OwnableUpgradeable", - "label": "_owner", - "type": "t_address", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "contract": "OwnableUpgradeable", - "label": "__gap", - "type": "t_array(t_uint256)49_storage", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "contract": "SSVNetwork", - "label": "_ssvRegistryContract", - "type": "t_contract(ISSVRegistry)993", - "src": "contracts/SSVNetwork.sol:38" - }, - { - "contract": "SSVNetwork", - "label": "_token", - "type": "t_contract(IERC20)299", - "src": "contracts/SSVNetwork.sol:39" - }, - { - "contract": "SSVNetwork", - "label": "_minimumBlocksBeforeLiquidation", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:40" - }, - { - "contract": "SSVNetwork", - "label": "_operatorMaxFeeIncrease", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:41" - }, - { - "contract": "SSVNetwork", - "label": "_networkFee", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:43" - }, - { - "contract": "SSVNetwork", - "label": "_networkFeeIndex", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:44" - }, - { - "contract": "SSVNetwork", - "label": "_networkFeeIndexBlockNumber", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:45" - }, - { - "contract": "SSVNetwork", - "label": "_lastUpdateNetworkFeeRun", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:46" - }, - { - "contract": "SSVNetwork", - "label": "_networkEarnings", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "contract": "SSVNetwork", - "label": "_networkEarningsBlockNumber", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:48" - }, - { - "contract": "SSVNetwork", - "label": "_withdrawnFromTreasury", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:49" - }, - { - "contract": "SSVNetwork", - "label": "_operatorDatas", - "type": "t_mapping(t_bytes_memory_ptr,t_struct(OperatorData)1017_storage)", - "src": "contracts/SSVNetwork.sol:51" - }, - { - "contract": "SSVNetwork", - "label": "_owners", - "type": "t_mapping(t_address,t_struct(OwnerData)1032_storage)", - "src": "contracts/SSVNetwork.sol:52" - }, - { - "contract": "SSVNetwork", - "label": "_operatorsInUseByAddress", - "type": "t_mapping(t_address,t_mapping(t_bytes_memory_ptr,t_struct(OperatorInUse)1043_storage))", - "src": "contracts/SSVNetwork.sol:53" - }, - { - "contract": "SSVNetwork", - "label": "_operatorsInUseList", - "type": "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "contract": "SSVNetwork", - "label": "_lastOperatorUpdateNetworkFeeRun", - "type": "t_mapping(t_bytes_memory_ptr,t_uint256)", - "src": "contracts/SSVNetwork.sol:55" - } - ], - "types": { - "t_contract(ISSVRegistry)993": { - "label": "contract ISSVRegistry" - }, - "t_contract(IERC20)299": { - "label": "contract IERC20" - }, - "t_uint256": { - "label": "uint256" - }, - "t_mapping(t_bytes_memory_ptr,t_struct(OperatorData)1017_storage)": { - "label": "mapping(bytes => struct SSVNetwork.OperatorData)" - }, - "t_bytes_storage": { - "label": "bytes" - }, - "t_struct(OperatorData)1017_storage": { - "label": "struct SSVNetwork.OperatorData", - "members": [ - { - "label": "blockNumber", - "type": "t_uint256" - }, - { - "label": "validatorCount", - "type": "t_uint256" - }, - { - "label": "earnings", - "type": "t_uint256" - }, - { - "label": "index", - "type": "t_uint256" - }, - { - "label": "indexBlockNumber", - "type": "t_uint256" - }, - { - "label": "lastFeeUpdate", - "type": "t_uint256" - } - ] - }, - "t_mapping(t_address,t_struct(OwnerData)1032_storage)": { - "label": "mapping(address => struct SSVNetwork.OwnerData)" - }, - "t_address": { - "label": "address" - }, - "t_struct(OwnerData)1032_storage": { - "label": "struct SSVNetwork.OwnerData", - "members": [ - { - "label": "deposited", - "type": "t_uint256" - }, - { - "label": "withdrawn", - "type": "t_uint256" - }, - { - "label": "earned", - "type": "t_uint256" - }, - { - "label": "used", - "type": "t_uint256" - }, - { - "label": "networkFee", - "type": "t_uint256" - }, - { - "label": "networkFeeIndex", - "type": "t_uint256" - }, - { - "label": "activeValidatorsCount", - "type": "t_uint256" - } - ] - }, - "t_mapping(t_address,t_mapping(t_bytes_memory_ptr,t_struct(OperatorInUse)1043_storage))": { - "label": "mapping(address => mapping(bytes => struct SSVNetwork.OperatorInUse))" - }, - "t_mapping(t_bytes_memory_ptr,t_struct(OperatorInUse)1043_storage)": { - "label": "mapping(bytes => struct SSVNetwork.OperatorInUse)" - }, - "t_struct(OperatorInUse)1043_storage": { - "label": "struct SSVNetwork.OperatorInUse", - "members": [ - { - "label": "index", - "type": "t_uint256" - }, - { - "label": "validatorCount", - "type": "t_uint256" - }, - { - "label": "used", - "type": "t_uint256" - }, - { - "label": "exists", - "type": "t_bool" - }, - { - "label": "indexInArray", - "type": "t_uint256" - } - ] - }, - "t_bool": { - "label": "bool" - }, - "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)": { - "label": "mapping(address => bytes[])" - }, - "t_array(t_bytes_storage)dyn_storage": { - "label": "bytes[]" - }, - "t_mapping(t_bytes_memory_ptr,t_uint256)": { - "label": "mapping(bytes => uint256)" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]" - } - } - } - }, - "8e51fa7a56aed55e79d7cf894ed22c545ad08ac930536388b1da871be61ea6b1": { - "address": "0xa815B78a7eb572e1ADAa4c9AFd2FCF9A3BB1c439", - "txHash": "0x7bd8bfb4d14055bc935e4af6ba477bc35552c605099496e508171c768ee9e820", - "layout": { - "storage": [ - { - "contract": "Initializable", - "label": "_initialized", - "type": "t_bool", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:23" - }, - { - "contract": "Initializable", - "label": "_initializing", - "type": "t_bool", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:28" - }, - { - "contract": "ContextUpgradeable", - "label": "__gap", - "type": "t_array(t_uint256)50_storage", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "contract": "OwnableUpgradeable", - "label": "_owner", - "type": "t_address", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "contract": "OwnableUpgradeable", - "label": "__gap", - "type": "t_array(t_uint256)49_storage", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "contract": "SSVNetwork", - "label": "_ssvRegistryContract", - "type": "t_contract(ISSVRegistry)1002", - "src": "contracts/SSVNetwork.sol:38" - }, - { - "contract": "SSVNetwork", - "label": "_token", - "type": "t_contract(IERC20)299", - "src": "contracts/SSVNetwork.sol:39" - }, - { - "contract": "SSVNetwork", - "label": "_minimumBlocksBeforeLiquidation", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:40" - }, - { - "contract": "SSVNetwork", - "label": "_operatorMaxFeeIncrease", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:41" - }, - { - "contract": "SSVNetwork", - "label": "_networkFee", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:43" - }, - { - "contract": "SSVNetwork", - "label": "_networkFeeIndex", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:44" - }, - { - "contract": "SSVNetwork", - "label": "_networkFeeIndexBlockNumber", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:45" - }, - { - "contract": "SSVNetwork", - "label": "_lastUpdateNetworkFeeRun", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:46" - }, - { - "contract": "SSVNetwork", - "label": "_networkEarnings", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "contract": "SSVNetwork", - "label": "_networkEarningsBlockNumber", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:48" - }, - { - "contract": "SSVNetwork", - "label": "_withdrawnFromTreasury", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:49" - }, - { - "contract": "SSVNetwork", - "label": "_operatorDatas", - "type": "t_mapping(t_bytes_memory_ptr,t_struct(OperatorData)1026_storage)", - "src": "contracts/SSVNetwork.sol:51" - }, - { - "contract": "SSVNetwork", - "label": "_owners", - "type": "t_mapping(t_address,t_struct(OwnerData)1041_storage)", - "src": "contracts/SSVNetwork.sol:52" - }, - { - "contract": "SSVNetwork", - "label": "_operatorsInUseByAddress", - "type": "t_mapping(t_address,t_mapping(t_bytes_memory_ptr,t_struct(OperatorInUse)1052_storage))", - "src": "contracts/SSVNetwork.sol:53" - }, - { - "contract": "SSVNetwork", - "label": "_operatorsInUseList", - "type": "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "contract": "SSVNetwork", - "label": "_lastOperatorUpdateNetworkFeeRun", - "type": "t_mapping(t_bytes_memory_ptr,t_uint256)", - "src": "contracts/SSVNetwork.sol:55" - } - ], - "types": { - "t_contract(ISSVRegistry)1002": { - "label": "contract ISSVRegistry" - }, - "t_contract(IERC20)299": { - "label": "contract IERC20" - }, - "t_uint256": { - "label": "uint256" - }, - "t_mapping(t_bytes_memory_ptr,t_struct(OperatorData)1026_storage)": { - "label": "mapping(bytes => struct SSVNetwork.OperatorData)" - }, - "t_bytes_storage": { - "label": "bytes" - }, - "t_struct(OperatorData)1026_storage": { - "label": "struct SSVNetwork.OperatorData", - "members": [ - { - "label": "blockNumber", - "type": "t_uint256" - }, - { - "label": "validatorCount", - "type": "t_uint256" - }, - { - "label": "earnings", - "type": "t_uint256" - }, - { - "label": "index", - "type": "t_uint256" - }, - { - "label": "indexBlockNumber", - "type": "t_uint256" - }, - { - "label": "lastFeeUpdate", - "type": "t_uint256" - } - ] - }, - "t_mapping(t_address,t_struct(OwnerData)1041_storage)": { - "label": "mapping(address => struct SSVNetwork.OwnerData)" - }, - "t_address": { - "label": "address" - }, - "t_struct(OwnerData)1041_storage": { - "label": "struct SSVNetwork.OwnerData", - "members": [ - { - "label": "deposited", - "type": "t_uint256" - }, - { - "label": "withdrawn", - "type": "t_uint256" - }, - { - "label": "earned", - "type": "t_uint256" - }, - { - "label": "used", - "type": "t_uint256" - }, - { - "label": "networkFee", - "type": "t_uint256" - }, - { - "label": "networkFeeIndex", - "type": "t_uint256" - }, - { - "label": "activeValidatorsCount", - "type": "t_uint256" - } - ] - }, - "t_mapping(t_address,t_mapping(t_bytes_memory_ptr,t_struct(OperatorInUse)1052_storage))": { - "label": "mapping(address => mapping(bytes => struct SSVNetwork.OperatorInUse))" - }, - "t_mapping(t_bytes_memory_ptr,t_struct(OperatorInUse)1052_storage)": { - "label": "mapping(bytes => struct SSVNetwork.OperatorInUse)" - }, - "t_struct(OperatorInUse)1052_storage": { - "label": "struct SSVNetwork.OperatorInUse", - "members": [ - { - "label": "index", - "type": "t_uint256" - }, - { - "label": "validatorCount", - "type": "t_uint256" - }, - { - "label": "used", - "type": "t_uint256" - }, - { - "label": "exists", - "type": "t_bool" - }, - { - "label": "indexInArray", - "type": "t_uint256" - } - ] - }, - "t_bool": { - "label": "bool" - }, - "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)": { - "label": "mapping(address => bytes[])" - }, - "t_array(t_bytes_storage)dyn_storage": { - "label": "bytes[]" - }, - "t_mapping(t_bytes_memory_ptr,t_uint256)": { - "label": "mapping(bytes => uint256)" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]" - } - } - } - }, - "f66337b2c14955b2001a36175d40bb64cd2d94582ad15c67473cb56386a60819": { - "address": "0x66fea9A226A5076f77dD4663CEE7Bde6D581609B", - "txHash": "0x400b65333bcfa24b9f020996ba6d48c9ae4e36bdba06ecba58bdb3e55aef2979", - "layout": { - "storage": [ - { - "contract": "Initializable", - "label": "_initialized", - "type": "t_bool", - "src": "@openzeppelin/contracts/proxy/utils/Initializable.sol:23" - }, - { - "contract": "Initializable", - "label": "_initializing", - "type": "t_bool", - "src": "@openzeppelin/contracts/proxy/utils/Initializable.sol:28" - }, - { - "contract": "ContextUpgradeable", - "label": "__gap", - "type": "t_array(t_uint256)50_storage", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "contract": "OwnableUpgradeable", - "label": "_owner", - "type": "t_address", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "contract": "OwnableUpgradeable", - "label": "__gap", - "type": "t_array(t_uint256)49_storage", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "contract": "SSVRegistry", - "label": "_operatorCount", - "type": "t_uint256", - "src": "contracts/SSVRegistry.sol:37" - }, - { - "contract": "SSVRegistry", - "label": "_validatorCount", - "type": "t_uint256", - "src": "contracts/SSVRegistry.sol:38" - }, - { - "contract": "SSVRegistry", - "label": "_activeValidatorCount", - "type": "t_uint256", - "src": "contracts/SSVRegistry.sol:39" - }, - { - "contract": "SSVRegistry", - "label": "_operators", - "type": "t_mapping(t_bytes_memory_ptr,t_struct(Operator)5714_storage)", - "src": "contracts/SSVRegistry.sol:41" - }, - { - "contract": "SSVRegistry", - "label": "_validators", - "type": "t_mapping(t_bytes_memory_ptr,t_struct(Validator)5727_storage)", - "src": "contracts/SSVRegistry.sol:42" - }, - { - "contract": "SSVRegistry", - "label": "_operatorFees", - "type": "t_mapping(t_bytes_memory_ptr,t_array(t_struct(OperatorFee)5732_storage)dyn_storage)", - "src": "contracts/SSVRegistry.sol:44" - }, - { - "contract": "SSVRegistry", - "label": "_operatorsByOwnerAddress", - "type": "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)", - "src": "contracts/SSVRegistry.sol:46" - }, - { - "contract": "SSVRegistry", - "label": "_validatorsByAddress", - "type": "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)", - "src": "contracts/SSVRegistry.sol:47" - }, - { - "contract": "SSVRegistry", - "label": "_owners", - "type": "t_mapping(t_address,t_struct(OwnerData)5737_storage)", - "src": "contracts/SSVRegistry.sol:48" - } - ], - "types": { - "t_uint256": { - "label": "uint256" - }, - "t_mapping(t_bytes_memory_ptr,t_struct(Operator)5714_storage)": { - "label": "mapping(bytes => struct SSVRegistry.Operator)" - }, - "t_bytes_storage": { - "label": "bytes" - }, - "t_struct(Operator)5714_storage": { - "label": "struct SSVRegistry.Operator", - "members": [ - { - "label": "name", - "type": "t_string_storage" - }, - { - "label": "ownerAddress", - "type": "t_address" - }, - { - "label": "publicKey", - "type": "t_bytes_storage" - }, - { - "label": "score", - "type": "t_uint256" - }, - { - "label": "active", - "type": "t_bool" - }, - { - "label": "index", - "type": "t_uint256" - } - ] - }, - "t_string_storage": { - "label": "string" - }, - "t_address": { - "label": "address" - }, - "t_bool": { - "label": "bool" - }, - "t_mapping(t_bytes_memory_ptr,t_struct(Validator)5727_storage)": { - "label": "mapping(bytes => struct SSVRegistry.Validator)" - }, - "t_struct(Validator)5727_storage": { - "label": "struct SSVRegistry.Validator", - "members": [ - { - "label": "ownerAddress", - "type": "t_address" - }, - { - "label": "publicKey", - "type": "t_bytes_storage" - }, - { - "label": "oess", - "type": "t_array(t_struct(Oess)2605_storage)dyn_storage" - }, - { - "label": "active", - "type": "t_bool" - }, - { - "label": "index", - "type": "t_uint256" - } - ] - }, - "t_array(t_struct(Oess)2605_storage)dyn_storage": { - "label": "struct ISSVRegistry.Oess[]" - }, - "t_struct(Oess)2605_storage": { - "label": "struct ISSVRegistry.Oess", - "members": [ - { - "label": "operatorPublicKey", - "type": "t_bytes_storage" - }, - { - "label": "sharedPublicKey", - "type": "t_bytes_storage" - }, - { - "label": "encryptedKey", - "type": "t_bytes_storage" - } - ] - }, - "t_mapping(t_bytes_memory_ptr,t_array(t_struct(OperatorFee)5732_storage)dyn_storage)": { - "label": "mapping(bytes => struct SSVRegistry.OperatorFee[])" - }, - "t_array(t_struct(OperatorFee)5732_storage)dyn_storage": { - "label": "struct SSVRegistry.OperatorFee[]" - }, - "t_struct(OperatorFee)5732_storage": { - "label": "struct SSVRegistry.OperatorFee", - "members": [ - { - "label": "blockNumber", - "type": "t_uint256" - }, - { - "label": "fee", - "type": "t_uint256" - } - ] - }, - "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)": { - "label": "mapping(address => bytes[])" - }, - "t_array(t_bytes_storage)dyn_storage": { - "label": "bytes[]" - }, - "t_mapping(t_address,t_struct(OwnerData)5737_storage)": { - "label": "mapping(address => struct SSVRegistry.OwnerData)" - }, - "t_struct(OwnerData)5737_storage": { - "label": "struct SSVRegistry.OwnerData", - "members": [ - { - "label": "activeValidatorCount", - "type": "t_uint256" - }, - { - "label": "validatorsDisabled", - "type": "t_bool" - } - ] - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]" - } - } - } - }, - "f3ca074e211bfab6f27b634a56e2a4eb7d7ac368910af7d266465034477a2410": { - "address": "0x97bECf9Dc48405c6F5C0CAbD300cB08E0D25cFF1", - "txHash": "0x1d05364076721622a163e361183274fbc766abbf09ed60f4905a67fe71f9e49e", - "layout": { - "storage": [ - { - "contract": "Initializable", - "label": "_initialized", - "type": "t_bool", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:23" - }, - { - "contract": "Initializable", - "label": "_initializing", - "type": "t_bool", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:28" - }, - { - "contract": "ContextUpgradeable", - "label": "__gap", - "type": "t_array(t_uint256)50_storage", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "contract": "OwnableUpgradeable", - "label": "_owner", - "type": "t_address", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "contract": "OwnableUpgradeable", - "label": "__gap", - "type": "t_array(t_uint256)49_storage", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "contract": "SSVNetwork", - "label": "_ssvRegistryContract", - "type": "t_contract(ISSVRegistry)1070", - "src": "contracts/SSVNetwork.sol:39" - }, - { - "contract": "SSVNetwork", - "label": "_token", - "type": "t_contract(IERC20)299", - "src": "contracts/SSVNetwork.sol:40" - }, - { - "contract": "SSVNetwork", - "label": "_minimumBlocksBeforeLiquidation", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:41" - }, - { - "contract": "SSVNetwork", - "label": "_operatorMaxFeeIncrease", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:42" - }, - { - "contract": "SSVNetwork", - "label": "_networkFee", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:44" - }, - { - "contract": "SSVNetwork", - "label": "_networkFeeIndex", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:45" - }, - { - "contract": "SSVNetwork", - "label": "_networkFeeIndexBlockNumber", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:46" - }, - { - "contract": "SSVNetwork", - "label": "_networkEarnings", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "contract": "SSVNetwork", - "label": "_networkEarningsBlockNumber", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:48" - }, - { - "contract": "SSVNetwork", - "label": "_withdrawnFromTreasury", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:49" - }, - { - "contract": "SSVNetwork", - "label": "_operatorDatas", - "type": "t_mapping(t_bytes_memory_ptr,t_struct(OperatorData)1094_storage)", - "src": "contracts/SSVNetwork.sol:51" - }, - { - "contract": "SSVNetwork", - "label": "_owners", - "type": "t_mapping(t_address,t_struct(OwnerData)1111_storage)", - "src": "contracts/SSVNetwork.sol:52" - }, - { - "contract": "SSVNetwork", - "label": "_operatorsInUseByAddress", - "type": "t_mapping(t_address,t_mapping(t_bytes_memory_ptr,t_struct(OperatorInUse)1122_storage))", - "src": "contracts/SSVNetwork.sol:53" - }, - { - "contract": "SSVNetwork", - "label": "_operatorsInUseList", - "type": "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "contract": "SSVNetwork", - "label": "_lastOperatorUpdateNetworkFeeRun", - "type": "t_mapping(t_bytes_memory_ptr,t_uint256)", - "src": "contracts/SSVNetwork.sol:55" - } - ], - "types": { - "t_contract(ISSVRegistry)1070": { - "label": "contract ISSVRegistry" - }, - "t_contract(IERC20)299": { - "label": "contract IERC20" - }, - "t_uint256": { - "label": "uint256" - }, - "t_mapping(t_bytes_memory_ptr,t_struct(OperatorData)1094_storage)": { - "label": "mapping(bytes => struct SSVNetwork.OperatorData)" - }, - "t_bytes_storage": { - "label": "bytes" - }, - "t_struct(OperatorData)1094_storage": { - "label": "struct SSVNetwork.OperatorData", - "members": [ - { - "label": "blockNumber", - "type": "t_uint256" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256" - }, - { - "label": "earnings", - "type": "t_uint256" - }, - { - "label": "index", - "type": "t_uint256" - }, - { - "label": "indexBlockNumber", - "type": "t_uint256" - }, - { - "label": "lastFeeUpdate", - "type": "t_uint256" - } - ] - }, - "t_mapping(t_address,t_struct(OwnerData)1111_storage)": { - "label": "mapping(address => struct SSVNetwork.OwnerData)" - }, - "t_address": { - "label": "address" - }, - "t_struct(OwnerData)1111_storage": { - "label": "struct SSVNetwork.OwnerData", - "members": [ - { - "label": "deposited", - "type": "t_uint256" - }, - { - "label": "withdrawn", - "type": "t_uint256" - }, - { - "label": "earned", - "type": "t_uint256" - }, - { - "label": "used", - "type": "t_uint256" - }, - { - "label": "networkFee", - "type": "t_uint256" - }, - { - "label": "networkFeeIndex", - "type": "t_uint256" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256" - }, - { - "label": "validatorsDisabled", - "type": "t_bool" - } - ] - }, - "t_bool": { - "label": "bool" - }, - "t_mapping(t_address,t_mapping(t_bytes_memory_ptr,t_struct(OperatorInUse)1122_storage))": { - "label": "mapping(address => mapping(bytes => struct SSVNetwork.OperatorInUse))" - }, - "t_mapping(t_bytes_memory_ptr,t_struct(OperatorInUse)1122_storage)": { - "label": "mapping(bytes => struct SSVNetwork.OperatorInUse)" - }, - "t_struct(OperatorInUse)1122_storage": { - "label": "struct SSVNetwork.OperatorInUse", - "members": [ - { - "label": "index", - "type": "t_uint256" - }, - { - "label": "validatorCount", - "type": "t_uint256" - }, - { - "label": "used", - "type": "t_uint256" - }, - { - "label": "exists", - "type": "t_bool" - }, - { - "label": "indexInArray", - "type": "t_uint256" - } - ] - }, - "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)": { - "label": "mapping(address => bytes[])" - }, - "t_array(t_bytes_storage)dyn_storage": { - "label": "bytes[]" - }, - "t_mapping(t_bytes_memory_ptr,t_uint256)": { - "label": "mapping(bytes => uint256)" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]" - } - } - } - }, - "63c2818eeeb6de1336874be44fb0e9d5ca81fe0c4dffa29cf5a13438b2fa0125": { - "address": "0x7e9B800984fa874e96c93406A0742A8cf8B1DF04", - "txHash": "0x2a13ecda3e6bf2127f0006be0184eada6ec9653c9ecb6f7e80922eb02a67bf03", - "layout": { - "storage": [ - { - "contract": "Initializable", - "label": "_initialized", - "type": "t_bool", - "src": "@openzeppelin/contracts/proxy/utils/Initializable.sol:23" - }, - { - "contract": "Initializable", - "label": "_initializing", - "type": "t_bool", - "src": "@openzeppelin/contracts/proxy/utils/Initializable.sol:28" - }, - { - "contract": "ContextUpgradeable", - "label": "__gap", - "type": "t_array(t_uint256)50_storage", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "contract": "OwnableUpgradeable", - "label": "_owner", - "type": "t_address", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "contract": "OwnableUpgradeable", - "label": "__gap", - "type": "t_array(t_uint256)49_storage", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "contract": "SSVNetwork", - "label": "_ssvRegistryContract", - "type": "t_contract(ISSVRegistry)2927", - "src": "contracts/SSVNetwork.sol:39" - }, - { - "contract": "SSVNetwork", - "label": "_token", - "type": "t_contract(IERC20)962", - "src": "contracts/SSVNetwork.sol:40" - }, - { - "contract": "SSVNetwork", - "label": "_minimumBlocksBeforeLiquidation", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:41" - }, - { - "contract": "SSVNetwork", - "label": "_operatorMaxFeeIncrease", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:42" - }, - { - "contract": "SSVNetwork", - "label": "_networkFee", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:44" - }, - { - "contract": "SSVNetwork", - "label": "_networkFeeIndex", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:45" - }, - { - "contract": "SSVNetwork", - "label": "_networkFeeIndexBlockNumber", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:46" - }, - { - "contract": "SSVNetwork", - "label": "_networkEarnings", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "contract": "SSVNetwork", - "label": "_networkEarningsBlockNumber", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:48" - }, - { - "contract": "SSVNetwork", - "label": "_withdrawnFromTreasury", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:49" - }, - { - "contract": "SSVNetwork", - "label": "_operatorDatas", - "type": "t_mapping(t_bytes_memory_ptr,t_struct(OperatorData)2951_storage)", - "src": "contracts/SSVNetwork.sol:51" - }, - { - "contract": "SSVNetwork", - "label": "_owners", - "type": "t_mapping(t_address,t_struct(OwnerData)2968_storage)", - "src": "contracts/SSVNetwork.sol:52" - }, - { - "contract": "SSVNetwork", - "label": "_operatorsInUseByAddress", - "type": "t_mapping(t_address,t_mapping(t_bytes_memory_ptr,t_struct(OperatorInUse)2979_storage))", - "src": "contracts/SSVNetwork.sol:53" - }, - { - "contract": "SSVNetwork", - "label": "_operatorsInUseList", - "type": "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "contract": "SSVNetwork", - "label": "_lastOperatorUpdateNetworkFeeRun", - "type": "t_mapping(t_bytes_memory_ptr,t_uint256)", - "src": "contracts/SSVNetwork.sol:55" - } - ], - "types": { - "t_contract(ISSVRegistry)2927": { - "label": "contract ISSVRegistry" - }, - "t_contract(IERC20)962": { - "label": "contract IERC20" - }, - "t_uint256": { - "label": "uint256" - }, - "t_mapping(t_bytes_memory_ptr,t_struct(OperatorData)2951_storage)": { - "label": "mapping(bytes => struct SSVNetwork.OperatorData)" - }, - "t_bytes_storage": { - "label": "bytes" - }, - "t_struct(OperatorData)2951_storage": { - "label": "struct SSVNetwork.OperatorData", - "members": [ - { - "label": "blockNumber", - "type": "t_uint256" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256" - }, - { - "label": "earnings", - "type": "t_uint256" - }, - { - "label": "index", - "type": "t_uint256" - }, - { - "label": "indexBlockNumber", - "type": "t_uint256" - }, - { - "label": "lastFeeUpdate", - "type": "t_uint256" - } - ] - }, - "t_mapping(t_address,t_struct(OwnerData)2968_storage)": { - "label": "mapping(address => struct SSVNetwork.OwnerData)" - }, - "t_address": { - "label": "address" - }, - "t_struct(OwnerData)2968_storage": { - "label": "struct SSVNetwork.OwnerData", - "members": [ - { - "label": "deposited", - "type": "t_uint256" - }, - { - "label": "withdrawn", - "type": "t_uint256" - }, - { - "label": "earned", - "type": "t_uint256" - }, - { - "label": "used", - "type": "t_uint256" - }, - { - "label": "networkFee", - "type": "t_uint256" - }, - { - "label": "networkFeeIndex", - "type": "t_uint256" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256" - }, - { - "label": "validatorsDisabled", - "type": "t_bool" - } - ] - }, - "t_bool": { - "label": "bool" - }, - "t_mapping(t_address,t_mapping(t_bytes_memory_ptr,t_struct(OperatorInUse)2979_storage))": { - "label": "mapping(address => mapping(bytes => struct SSVNetwork.OperatorInUse))" - }, - "t_mapping(t_bytes_memory_ptr,t_struct(OperatorInUse)2979_storage)": { - "label": "mapping(bytes => struct SSVNetwork.OperatorInUse)" - }, - "t_struct(OperatorInUse)2979_storage": { - "label": "struct SSVNetwork.OperatorInUse", - "members": [ - { - "label": "index", - "type": "t_uint256" - }, - { - "label": "validatorCount", - "type": "t_uint256" - }, - { - "label": "used", - "type": "t_uint256" - }, - { - "label": "exists", - "type": "t_bool" - }, - { - "label": "indexInArray", - "type": "t_uint256" - } - ] - }, - "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)": { - "label": "mapping(address => bytes[])" - }, - "t_array(t_bytes_storage)dyn_storage": { - "label": "bytes[]" - }, - "t_mapping(t_bytes_memory_ptr,t_uint256)": { - "label": "mapping(bytes => uint256)" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]" - } - } - } - }, - "39be4898e477410a3ad816f254675839281b5b9fe13703c1764a53720c4fb2d7": { - "address": "0x3a21966e34ac0B031621C3c3F8063200A35E0FFd", - "txHash": "0x9b0940c255f370f6b3d0e29fb47b796bf18bd0edb3a9b871ffc8d570515ad2b6", - "layout": { - "storage": [ - { - "contract": "Initializable", - "label": "_initialized", - "type": "t_bool", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:23" - }, - { - "contract": "Initializable", - "label": "_initializing", - "type": "t_bool", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:28" - }, - { - "contract": "ContextUpgradeable", - "label": "__gap", - "type": "t_array(t_uint256)50_storage", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "contract": "OwnableUpgradeable", - "label": "_owner", - "type": "t_address", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "contract": "OwnableUpgradeable", - "label": "__gap", - "type": "t_array(t_uint256)49_storage", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "contract": "SSVNetwork", - "label": "_ssvRegistryContract", - "type": "t_contract(ISSVRegistry)1070", - "src": "contracts/SSVNetwork.sol:39" - }, - { - "contract": "SSVNetwork", - "label": "_token", - "type": "t_contract(IERC20)299", - "src": "contracts/SSVNetwork.sol:40" - }, - { - "contract": "SSVNetwork", - "label": "_minimumBlocksBeforeLiquidation", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:41" - }, - { - "contract": "SSVNetwork", - "label": "_operatorMaxFeeIncrease", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:42" - }, - { - "contract": "SSVNetwork", - "label": "_networkFee", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:44" - }, - { - "contract": "SSVNetwork", - "label": "_networkFeeIndex", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:45" - }, - { - "contract": "SSVNetwork", - "label": "_networkFeeIndexBlockNumber", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:46" - }, - { - "contract": "SSVNetwork", - "label": "_networkEarnings", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "contract": "SSVNetwork", - "label": "_networkEarningsBlockNumber", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:48" - }, - { - "contract": "SSVNetwork", - "label": "_withdrawnFromTreasury", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:49" - }, - { - "contract": "SSVNetwork", - "label": "_operatorDatas", - "type": "t_mapping(t_bytes_memory_ptr,t_struct(OperatorData)1094_storage)", - "src": "contracts/SSVNetwork.sol:51" - }, - { - "contract": "SSVNetwork", - "label": "_owners", - "type": "t_mapping(t_address,t_struct(OwnerData)1111_storage)", - "src": "contracts/SSVNetwork.sol:52" - }, - { - "contract": "SSVNetwork", - "label": "_operatorsInUseByAddress", - "type": "t_mapping(t_address,t_mapping(t_bytes_memory_ptr,t_struct(OperatorInUse)1122_storage))", - "src": "contracts/SSVNetwork.sol:53" - }, - { - "contract": "SSVNetwork", - "label": "_operatorsInUseList", - "type": "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "contract": "SSVNetwork", - "label": "_lastOperatorUpdateNetworkFeeRun", - "type": "t_mapping(t_bytes_memory_ptr,t_uint256)", - "src": "contracts/SSVNetwork.sol:55" - } - ], - "types": { - "t_contract(ISSVRegistry)1070": { - "label": "contract ISSVRegistry" - }, - "t_contract(IERC20)299": { - "label": "contract IERC20" - }, - "t_uint256": { - "label": "uint256" - }, - "t_mapping(t_bytes_memory_ptr,t_struct(OperatorData)1094_storage)": { - "label": "mapping(bytes => struct SSVNetwork.OperatorData)" - }, - "t_bytes_storage": { - "label": "bytes" - }, - "t_struct(OperatorData)1094_storage": { - "label": "struct SSVNetwork.OperatorData", - "members": [ - { - "label": "blockNumber", - "type": "t_uint256" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256" - }, - { - "label": "earnings", - "type": "t_uint256" - }, - { - "label": "index", - "type": "t_uint256" - }, - { - "label": "indexBlockNumber", - "type": "t_uint256" - }, - { - "label": "lastFeeUpdate", - "type": "t_uint256" - } - ] - }, - "t_mapping(t_address,t_struct(OwnerData)1111_storage)": { - "label": "mapping(address => struct SSVNetwork.OwnerData)" - }, - "t_address": { - "label": "address" - }, - "t_struct(OwnerData)1111_storage": { - "label": "struct SSVNetwork.OwnerData", - "members": [ - { - "label": "deposited", - "type": "t_uint256" - }, - { - "label": "withdrawn", - "type": "t_uint256" - }, - { - "label": "earned", - "type": "t_uint256" - }, - { - "label": "used", - "type": "t_uint256" - }, - { - "label": "networkFee", - "type": "t_uint256" - }, - { - "label": "networkFeeIndex", - "type": "t_uint256" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256" - }, - { - "label": "validatorsDisabled", - "type": "t_bool" - } - ] - }, - "t_bool": { - "label": "bool" - }, - "t_mapping(t_address,t_mapping(t_bytes_memory_ptr,t_struct(OperatorInUse)1122_storage))": { - "label": "mapping(address => mapping(bytes => struct SSVNetwork.OperatorInUse))" - }, - "t_mapping(t_bytes_memory_ptr,t_struct(OperatorInUse)1122_storage)": { - "label": "mapping(bytes => struct SSVNetwork.OperatorInUse)" - }, - "t_struct(OperatorInUse)1122_storage": { - "label": "struct SSVNetwork.OperatorInUse", - "members": [ - { - "label": "index", - "type": "t_uint256" - }, - { - "label": "validatorCount", - "type": "t_uint256" - }, - { - "label": "used", - "type": "t_uint256" - }, - { - "label": "exists", - "type": "t_bool" - }, - { - "label": "indexInArray", - "type": "t_uint256" - } - ] - }, - "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)": { - "label": "mapping(address => bytes[])" - }, - "t_array(t_bytes_storage)dyn_storage": { - "label": "bytes[]" - }, - "t_mapping(t_bytes_memory_ptr,t_uint256)": { - "label": "mapping(bytes => uint256)" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]" - } - } - } - }, - "16ce6205801704c716fb7e4f210622bc3492167e4c83208cea879ae381eef3bc": { - "address": "0x27cC1891D439845231904F71dF365523C76A19C7", - "txHash": "0x712be24c9b03ac00a2c22daf6563669b61e07ebe50b7e26754bf957ebfaf6914", - "layout": { - "storage": [ - { - "contract": "Initializable", - "label": "_initialized", - "type": "t_bool", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:23" - }, - { - "contract": "Initializable", - "label": "_initializing", - "type": "t_bool", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:28" - }, - { - "contract": "ContextUpgradeable", - "label": "__gap", - "type": "t_array(t_uint256)50_storage", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "contract": "OwnableUpgradeable", - "label": "_owner", - "type": "t_address", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "contract": "OwnableUpgradeable", - "label": "__gap", - "type": "t_array(t_uint256)49_storage", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "contract": "SSVRegistry", - "label": "_operatorCount", - "type": "t_uint256", - "src": "contracts/SSVRegistry.sol:37" - }, - { - "contract": "SSVRegistry", - "label": "_validatorCount", - "type": "t_uint256", - "src": "contracts/SSVRegistry.sol:38" - }, - { - "contract": "SSVRegistry", - "label": "_activeValidatorCount", - "type": "t_uint256", - "src": "contracts/SSVRegistry.sol:39" - }, - { - "contract": "SSVRegistry", - "label": "_operators", - "type": "t_mapping(t_bytes_memory_ptr,t_struct(Operator)623_storage)", - "src": "contracts/SSVRegistry.sol:41" - }, - { - "contract": "SSVRegistry", - "label": "_validators", - "type": "t_mapping(t_bytes_memory_ptr,t_struct(Validator)636_storage)", - "src": "contracts/SSVRegistry.sol:42" - }, - { - "contract": "SSVRegistry", - "label": "_operatorFees", - "type": "t_mapping(t_bytes_memory_ptr,t_array(t_struct(OperatorFee)641_storage)dyn_storage)", - "src": "contracts/SSVRegistry.sol:44" - }, - { - "contract": "SSVRegistry", - "label": "_operatorsByOwnerAddress", - "type": "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)", - "src": "contracts/SSVRegistry.sol:46" - }, - { - "contract": "SSVRegistry", - "label": "_validatorsByAddress", - "type": "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)", - "src": "contracts/SSVRegistry.sol:47" - }, - { - "contract": "SSVRegistry", - "label": "_owners", - "type": "t_mapping(t_address,t_struct(OwnerData)646_storage)", - "src": "contracts/SSVRegistry.sol:48" - } - ], - "types": { - "t_uint256": { - "label": "uint256" - }, - "t_mapping(t_bytes_memory_ptr,t_struct(Operator)623_storage)": { - "label": "mapping(bytes => struct SSVRegistry.Operator)" - }, - "t_bytes_storage": { - "label": "bytes" - }, - "t_struct(Operator)623_storage": { - "label": "struct SSVRegistry.Operator", - "members": [ - { - "label": "name", - "type": "t_string_storage" - }, - { - "label": "ownerAddress", - "type": "t_address" - }, - { - "label": "publicKey", - "type": "t_bytes_storage" - }, - { - "label": "score", - "type": "t_uint256" - }, - { - "label": "active", - "type": "t_bool" - }, - { - "label": "index", - "type": "t_uint256" - } - ] - }, - "t_string_storage": { - "label": "string" - }, - "t_address": { - "label": "address" - }, - "t_bool": { - "label": "bool" - }, - "t_mapping(t_bytes_memory_ptr,t_struct(Validator)636_storage)": { - "label": "mapping(bytes => struct SSVRegistry.Validator)" - }, - "t_struct(Validator)636_storage": { - "label": "struct SSVRegistry.Validator", - "members": [ - { - "label": "ownerAddress", - "type": "t_address" - }, - { - "label": "publicKey", - "type": "t_bytes_storage" - }, - { - "label": "oess", - "type": "t_array(t_struct(Oess)303_storage)dyn_storage" - }, - { - "label": "active", - "type": "t_bool" - }, - { - "label": "index", - "type": "t_uint256" - } - ] - }, - "t_array(t_struct(Oess)303_storage)dyn_storage": { - "label": "struct ISSVRegistry.Oess[]" - }, - "t_struct(Oess)303_storage": { - "label": "struct ISSVRegistry.Oess", - "members": [ - { - "label": "operatorPublicKey", - "type": "t_bytes_storage" - }, - { - "label": "sharedPublicKey", - "type": "t_bytes_storage" - }, - { - "label": "encryptedKey", - "type": "t_bytes_storage" - } - ] - }, - "t_mapping(t_bytes_memory_ptr,t_array(t_struct(OperatorFee)641_storage)dyn_storage)": { - "label": "mapping(bytes => struct SSVRegistry.OperatorFee[])" - }, - "t_array(t_struct(OperatorFee)641_storage)dyn_storage": { - "label": "struct SSVRegistry.OperatorFee[]" - }, - "t_struct(OperatorFee)641_storage": { - "label": "struct SSVRegistry.OperatorFee", - "members": [ - { - "label": "blockNumber", - "type": "t_uint256" - }, - { - "label": "fee", - "type": "t_uint256" - } - ] - }, - "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)": { - "label": "mapping(address => bytes[])" - }, - "t_array(t_bytes_storage)dyn_storage": { - "label": "bytes[]" - }, - "t_mapping(t_address,t_struct(OwnerData)646_storage)": { - "label": "mapping(address => struct SSVRegistry.OwnerData)" - }, - "t_struct(OwnerData)646_storage": { - "label": "struct SSVRegistry.OwnerData", - "members": [ - { - "label": "activeValidatorCount", - "type": "t_uint256" - }, - { - "label": "validatorsDisabled", - "type": "t_bool" - } - ] - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]" - } - } - } - }, - "446e8b352eb2db74b9635d90579d222f983ecf9979b9aeb6e851209469ea2763": { - "address": "0x6E034CC5dfA0B68fDe9881681ad32C3179952501", - "txHash": "0xb4abaf6b54c40ea8d9eeb0711c0ba6c0986861fc356625ba410fa0193f6f68c2", - "layout": { - "storage": [ - { - "contract": "Initializable", - "label": "_initialized", - "type": "t_bool", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:23" - }, - { - "contract": "Initializable", - "label": "_initializing", - "type": "t_bool", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:28" - }, - { - "contract": "ContextUpgradeable", - "label": "__gap", - "type": "t_array(t_uint256)50_storage", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "contract": "OwnableUpgradeable", - "label": "_owner", - "type": "t_address", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "contract": "OwnableUpgradeable", - "label": "__gap", - "type": "t_array(t_uint256)49_storage", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "contract": "SSVNetwork", - "label": "_ssvRegistryContract", - "type": "t_contract(ISSVRegistry)1026", - "src": "contracts/SSVNetwork.sol:39" - }, - { - "contract": "SSVNetwork", - "label": "_token", - "type": "t_contract(IERC20)299", - "src": "contracts/SSVNetwork.sol:40" - }, - { - "contract": "SSVNetwork", - "label": "_minimumBlocksBeforeLiquidation", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:41" - }, - { - "contract": "SSVNetwork", - "label": "_operatorMaxFeeIncrease", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:42" - }, - { - "contract": "SSVNetwork", - "label": "_networkFee", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:44" - }, - { - "contract": "SSVNetwork", - "label": "_networkFeeIndex", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:45" - }, - { - "contract": "SSVNetwork", - "label": "_networkFeeIndexBlockNumber", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:46" - }, - { - "contract": "SSVNetwork", - "label": "_networkEarnings", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "contract": "SSVNetwork", - "label": "_networkEarningsBlockNumber", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:48" - }, - { - "contract": "SSVNetwork", - "label": "_withdrawnFromTreasury", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:49" - }, - { - "contract": "SSVNetwork", - "label": "_operatorDatas", - "type": "t_mapping(t_bytes_memory_ptr,t_struct(OperatorData)1050_storage)", - "src": "contracts/SSVNetwork.sol:51" - }, - { - "contract": "SSVNetwork", - "label": "_owners", - "type": "t_mapping(t_address,t_struct(OwnerData)1067_storage)", - "src": "contracts/SSVNetwork.sol:52" - }, - { - "contract": "SSVNetwork", - "label": "_operatorsInUseByAddress", - "type": "t_mapping(t_address,t_mapping(t_bytes_memory_ptr,t_struct(OperatorInUse)1078_storage))", - "src": "contracts/SSVNetwork.sol:53" - }, - { - "contract": "SSVNetwork", - "label": "_operatorsInUseList", - "type": "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "contract": "SSVNetwork", - "label": "_lastOperatorUpdateNetworkFeeRun", - "type": "t_mapping(t_bytes_memory_ptr,t_uint256)", - "src": "contracts/SSVNetwork.sol:55" - } - ], - "types": { - "t_contract(ISSVRegistry)1026": { - "label": "contract ISSVRegistry" - }, - "t_contract(IERC20)299": { - "label": "contract IERC20" - }, - "t_uint256": { - "label": "uint256" - }, - "t_mapping(t_bytes_memory_ptr,t_struct(OperatorData)1050_storage)": { - "label": "mapping(bytes => struct SSVNetwork.OperatorData)" - }, - "t_bytes_storage": { - "label": "bytes" - }, - "t_struct(OperatorData)1050_storage": { - "label": "struct SSVNetwork.OperatorData", - "members": [ - { - "label": "blockNumber", - "type": "t_uint256" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256" - }, - { - "label": "earnings", - "type": "t_uint256" - }, - { - "label": "index", - "type": "t_uint256" - }, - { - "label": "indexBlockNumber", - "type": "t_uint256" - }, - { - "label": "lastFeeUpdate", - "type": "t_uint256" - } - ] - }, - "t_mapping(t_address,t_struct(OwnerData)1067_storage)": { - "label": "mapping(address => struct SSVNetwork.OwnerData)" - }, - "t_address": { - "label": "address" - }, - "t_struct(OwnerData)1067_storage": { - "label": "struct SSVNetwork.OwnerData", - "members": [ - { - "label": "deposited", - "type": "t_uint256" - }, - { - "label": "withdrawn", - "type": "t_uint256" - }, - { - "label": "earned", - "type": "t_uint256" - }, - { - "label": "used", - "type": "t_uint256" - }, - { - "label": "networkFee", - "type": "t_uint256" - }, - { - "label": "networkFeeIndex", - "type": "t_uint256" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256" - }, - { - "label": "validatorsDisabled", - "type": "t_bool" - } - ] - }, - "t_bool": { - "label": "bool" - }, - "t_mapping(t_address,t_mapping(t_bytes_memory_ptr,t_struct(OperatorInUse)1078_storage))": { - "label": "mapping(address => mapping(bytes => struct SSVNetwork.OperatorInUse))" - }, - "t_mapping(t_bytes_memory_ptr,t_struct(OperatorInUse)1078_storage)": { - "label": "mapping(bytes => struct SSVNetwork.OperatorInUse)" - }, - "t_struct(OperatorInUse)1078_storage": { - "label": "struct SSVNetwork.OperatorInUse", - "members": [ - { - "label": "index", - "type": "t_uint256" - }, - { - "label": "validatorCount", - "type": "t_uint256" - }, - { - "label": "used", - "type": "t_uint256" - }, - { - "label": "exists", - "type": "t_bool" - }, - { - "label": "indexInArray", - "type": "t_uint256" - } - ] - }, - "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)": { - "label": "mapping(address => bytes[])" - }, - "t_array(t_bytes_storage)dyn_storage": { - "label": "bytes[]" - }, - "t_mapping(t_bytes_memory_ptr,t_uint256)": { - "label": "mapping(bytes => uint256)" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]" - } - } - } - }, - "184305b80710a84a34b0bf97223857fa67941e7a63d04aa451576469dfc0f380": { - "address": "0x1DAa34A47ab0952e59f5Aa1B8200dc48D1FE310a", - "txHash": "0x0862b360ad04472372df6e7ecade75fc45c14fe0b3c9cf52ae043803c98f640d", - "layout": { - "storage": [ - { - "contract": "Initializable", - "label": "_initialized", - "type": "t_bool", - "src": "@openzeppelin/contracts/proxy/utils/Initializable.sol:23" - }, - { - "contract": "Initializable", - "label": "_initializing", - "type": "t_bool", - "src": "@openzeppelin/contracts/proxy/utils/Initializable.sol:28" - }, - { - "contract": "ContextUpgradeable", - "label": "__gap", - "type": "t_array(t_uint256)50_storage", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "contract": "OwnableUpgradeable", - "label": "_owner", - "type": "t_address", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "contract": "OwnableUpgradeable", - "label": "__gap", - "type": "t_array(t_uint256)49_storage", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "contract": "SSVNetwork", - "label": "_ssvRegistryContract", - "type": "t_contract(ISSVRegistry)2878", - "src": "contracts/SSVNetwork.sol:39" - }, - { - "contract": "SSVNetwork", - "label": "_token", - "type": "t_contract(IERC20)962", - "src": "contracts/SSVNetwork.sol:40" - }, - { - "contract": "SSVNetwork", - "label": "_minimumBlocksBeforeLiquidation", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:41" - }, - { - "contract": "SSVNetwork", - "label": "_operatorMaxFeeIncrease", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:42" - }, - { - "contract": "SSVNetwork", - "label": "_networkFee", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:44" - }, - { - "contract": "SSVNetwork", - "label": "_networkFeeIndex", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:45" - }, - { - "contract": "SSVNetwork", - "label": "_networkFeeIndexBlockNumber", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:46" - }, - { - "contract": "SSVNetwork", - "label": "_networkEarnings", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "contract": "SSVNetwork", - "label": "_networkEarningsBlockNumber", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:48" - }, - { - "contract": "SSVNetwork", - "label": "_withdrawnFromTreasury", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:49" - }, - { - "contract": "SSVNetwork", - "label": "_operatorDatas", - "type": "t_mapping(t_bytes_memory_ptr,t_struct(OperatorData)2902_storage)", - "src": "contracts/SSVNetwork.sol:51" - }, - { - "contract": "SSVNetwork", - "label": "_owners", - "type": "t_mapping(t_address,t_struct(OwnerData)2919_storage)", - "src": "contracts/SSVNetwork.sol:52" - }, - { - "contract": "SSVNetwork", - "label": "_operatorsInUseByAddress", - "type": "t_mapping(t_address,t_mapping(t_bytes_memory_ptr,t_struct(OperatorInUse)2930_storage))", - "src": "contracts/SSVNetwork.sol:53" - }, - { - "contract": "SSVNetwork", - "label": "_operatorsInUseList", - "type": "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "contract": "SSVNetwork", - "label": "_lastOperatorUpdateNetworkFeeRun", - "type": "t_mapping(t_bytes_memory_ptr,t_uint256)", - "src": "contracts/SSVNetwork.sol:55" - } - ], - "types": { - "t_contract(ISSVRegistry)2878": { - "label": "contract ISSVRegistry" - }, - "t_contract(IERC20)962": { - "label": "contract IERC20" - }, - "t_uint256": { - "label": "uint256" - }, - "t_mapping(t_bytes_memory_ptr,t_struct(OperatorData)2902_storage)": { - "label": "mapping(bytes => struct SSVNetwork.OperatorData)" - }, - "t_bytes_storage": { - "label": "bytes" - }, - "t_struct(OperatorData)2902_storage": { - "label": "struct SSVNetwork.OperatorData", - "members": [ - { - "label": "blockNumber", - "type": "t_uint256" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256" - }, - { - "label": "earnings", - "type": "t_uint256" - }, - { - "label": "index", - "type": "t_uint256" - }, - { - "label": "indexBlockNumber", - "type": "t_uint256" - }, - { - "label": "lastFeeUpdate", - "type": "t_uint256" - } - ] - }, - "t_mapping(t_address,t_struct(OwnerData)2919_storage)": { - "label": "mapping(address => struct SSVNetwork.OwnerData)" - }, - "t_address": { - "label": "address" - }, - "t_struct(OwnerData)2919_storage": { - "label": "struct SSVNetwork.OwnerData", - "members": [ - { - "label": "deposited", - "type": "t_uint256" - }, - { - "label": "withdrawn", - "type": "t_uint256" - }, - { - "label": "earned", - "type": "t_uint256" - }, - { - "label": "used", - "type": "t_uint256" - }, - { - "label": "networkFee", - "type": "t_uint256" - }, - { - "label": "networkFeeIndex", - "type": "t_uint256" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256" - }, - { - "label": "validatorsDisabled", - "type": "t_bool" - } - ] - }, - "t_bool": { - "label": "bool" - }, - "t_mapping(t_address,t_mapping(t_bytes_memory_ptr,t_struct(OperatorInUse)2930_storage))": { - "label": "mapping(address => mapping(bytes => struct SSVNetwork.OperatorInUse))" - }, - "t_mapping(t_bytes_memory_ptr,t_struct(OperatorInUse)2930_storage)": { - "label": "mapping(bytes => struct SSVNetwork.OperatorInUse)" - }, - "t_struct(OperatorInUse)2930_storage": { - "label": "struct SSVNetwork.OperatorInUse", - "members": [ - { - "label": "index", - "type": "t_uint256" - }, - { - "label": "validatorCount", - "type": "t_uint256" - }, - { - "label": "used", - "type": "t_uint256" - }, - { - "label": "exists", - "type": "t_bool" - }, - { - "label": "indexInArray", - "type": "t_uint256" - } - ] - }, - "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)": { - "label": "mapping(address => bytes[])" - }, - "t_array(t_bytes_storage)dyn_storage": { - "label": "bytes[]" - }, - "t_mapping(t_bytes_memory_ptr,t_uint256)": { - "label": "mapping(bytes => uint256)" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]" - } - } - } - }, - "41d11ce4d91e5e3782985451ee40d696f72c9485ceca77fbfd11cc02b4af1de0": { - "address": "0xdb6Dca54b0fDEA4e3fE6Fc9598F93943194a6e51", - "txHash": "0xa05f3e34265c099315dcb6ec201472a03ba10a1635c8d37f24f3cef55e0dc75e", - "layout": { - "storage": [ - { - "contract": "Initializable", - "label": "_initialized", - "type": "t_bool", - "src": "@openzeppelin/contracts/proxy/utils/Initializable.sol:23" - }, - { - "contract": "Initializable", - "label": "_initializing", - "type": "t_bool", - "src": "@openzeppelin/contracts/proxy/utils/Initializable.sol:28" - }, - { - "contract": "ContextUpgradeable", - "label": "__gap", - "type": "t_array(t_uint256)50_storage", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "contract": "OwnableUpgradeable", - "label": "_owner", - "type": "t_address", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "contract": "OwnableUpgradeable", - "label": "__gap", - "type": "t_array(t_uint256)49_storage", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "contract": "SSVRegistry", - "label": "_operatorCount", - "type": "t_uint256", - "src": "contracts/SSVRegistry.sol:37" - }, - { - "contract": "SSVRegistry", - "label": "_validatorCount", - "type": "t_uint256", - "src": "contracts/SSVRegistry.sol:38" - }, - { - "contract": "SSVRegistry", - "label": "_activeValidatorCount", - "type": "t_uint256", - "src": "contracts/SSVRegistry.sol:39" - }, - { - "contract": "SSVRegistry", - "label": "_operators", - "type": "t_mapping(t_bytes_memory_ptr,t_struct(Operator)5325_storage)", - "src": "contracts/SSVRegistry.sol:41" - }, - { - "contract": "SSVRegistry", - "label": "_validators", - "type": "t_mapping(t_bytes_memory_ptr,t_struct(Validator)5338_storage)", - "src": "contracts/SSVRegistry.sol:42" - }, - { - "contract": "SSVRegistry", - "label": "_operatorFees", - "type": "t_mapping(t_bytes_memory_ptr,t_array(t_struct(OperatorFee)5343_storage)dyn_storage)", - "src": "contracts/SSVRegistry.sol:44" - }, - { - "contract": "SSVRegistry", - "label": "_operatorsByOwnerAddress", - "type": "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)", - "src": "contracts/SSVRegistry.sol:46" - }, - { - "contract": "SSVRegistry", - "label": "_validatorsByAddress", - "type": "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)", - "src": "contracts/SSVRegistry.sol:47" - }, - { - "contract": "SSVRegistry", - "label": "_owners", - "type": "t_mapping(t_address,t_struct(OwnerData)5348_storage)", - "src": "contracts/SSVRegistry.sol:48" - } - ], - "types": { - "t_uint256": { - "label": "uint256" - }, - "t_mapping(t_bytes_memory_ptr,t_struct(Operator)5325_storage)": { - "label": "mapping(bytes => struct SSVRegistry.Operator)" - }, - "t_bytes_storage": { - "label": "bytes" - }, - "t_struct(Operator)5325_storage": { - "label": "struct SSVRegistry.Operator", - "members": [ - { - "label": "name", - "type": "t_string_storage" - }, - { - "label": "ownerAddress", - "type": "t_address" - }, - { - "label": "publicKey", - "type": "t_bytes_storage" - }, - { - "label": "score", - "type": "t_uint256" - }, - { - "label": "active", - "type": "t_bool" - }, - { - "label": "index", - "type": "t_uint256" - } - ] - }, - "t_string_storage": { - "label": "string" - }, - "t_address": { - "label": "address" - }, - "t_bool": { - "label": "bool" - }, - "t_mapping(t_bytes_memory_ptr,t_struct(Validator)5338_storage)": { - "label": "mapping(bytes => struct SSVRegistry.Validator)" - }, - "t_struct(Validator)5338_storage": { - "label": "struct SSVRegistry.Validator", - "members": [ - { - "label": "ownerAddress", - "type": "t_address" - }, - { - "label": "publicKey", - "type": "t_bytes_storage" - }, - { - "label": "oess", - "type": "t_array(t_struct(Oess)2582_storage)dyn_storage" - }, - { - "label": "active", - "type": "t_bool" - }, - { - "label": "index", - "type": "t_uint256" - } - ] - }, - "t_array(t_struct(Oess)2582_storage)dyn_storage": { - "label": "struct ISSVRegistry.Oess[]" - }, - "t_struct(Oess)2582_storage": { - "label": "struct ISSVRegistry.Oess", - "members": [ - { - "label": "operatorPublicKey", - "type": "t_bytes_storage" - }, - { - "label": "sharedPublicKey", - "type": "t_bytes_storage" - }, - { - "label": "encryptedKey", - "type": "t_bytes_storage" - } - ] - }, - "t_mapping(t_bytes_memory_ptr,t_array(t_struct(OperatorFee)5343_storage)dyn_storage)": { - "label": "mapping(bytes => struct SSVRegistry.OperatorFee[])" - }, - "t_array(t_struct(OperatorFee)5343_storage)dyn_storage": { - "label": "struct SSVRegistry.OperatorFee[]" - }, - "t_struct(OperatorFee)5343_storage": { - "label": "struct SSVRegistry.OperatorFee", - "members": [ - { - "label": "blockNumber", - "type": "t_uint256" - }, - { - "label": "fee", - "type": "t_uint256" - } - ] - }, - "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)": { - "label": "mapping(address => bytes[])" - }, - "t_array(t_bytes_storage)dyn_storage": { - "label": "bytes[]" - }, - "t_mapping(t_address,t_struct(OwnerData)5348_storage)": { - "label": "mapping(address => struct SSVRegistry.OwnerData)" - }, - "t_struct(OwnerData)5348_storage": { - "label": "struct SSVRegistry.OwnerData", - "members": [ - { - "label": "activeValidatorCount", - "type": "t_uint256" - }, - { - "label": "validatorsDisabled", - "type": "t_bool" - } - ] - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]" - } - } - } - }, - "43289e51990930f55e76f182fd7330669892b15e3c11389be9981a7c728b842a": { - "address": "0xAEC49a01880f493d737254b8aA015B254eb1EA56", - "txHash": "0x0f0319b7c244f5e7a7e0f4c56508f964fa9539d5303b66acddebeca9d808113b", - "layout": { - "storage": [ - { - "contract": "Initializable", - "label": "_initialized", - "type": "t_bool", - "src": "@openzeppelin/contracts/proxy/utils/Initializable.sol:23" - }, - { - "contract": "Initializable", - "label": "_initializing", - "type": "t_bool", - "src": "@openzeppelin/contracts/proxy/utils/Initializable.sol:28" - }, - { - "contract": "ContextUpgradeable", - "label": "__gap", - "type": "t_array(t_uint256)50_storage", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "contract": "OwnableUpgradeable", - "label": "_owner", - "type": "t_address", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "contract": "OwnableUpgradeable", - "label": "__gap", - "type": "t_array(t_uint256)49_storage", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "contract": "SSVNetwork", - "label": "_ssvRegistryContract", - "type": "t_contract(ISSVRegistry)2947", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "contract": "SSVNetwork", - "label": "_token", - "type": "t_contract(IERC20)962", - "src": "contracts/SSVNetwork.sol:48" - }, - { - "contract": "SSVNetwork", - "label": "_minimumBlocksBeforeLiquidation", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:49" - }, - { - "contract": "SSVNetwork", - "label": "_operatorMaxFeeIncrease", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:50" - }, - { - "contract": "SSVNetwork", - "label": "_networkFee", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:52" - }, - { - "contract": "SSVNetwork", - "label": "_networkFeeIndex", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:53" - }, - { - "contract": "SSVNetwork", - "label": "_networkFeeIndexBlockNumber", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "contract": "SSVNetwork", - "label": "_networkEarnings", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:55" - }, - { - "contract": "SSVNetwork", - "label": "_networkEarningsBlockNumber", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:56" - }, - { - "contract": "SSVNetwork", - "label": "_withdrawnFromTreasury", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:57" - }, - { - "contract": "SSVNetwork", - "label": "_operatorDatas", - "type": "t_mapping(t_bytes_memory_ptr,t_struct(OperatorData)2972_storage)", - "src": "contracts/SSVNetwork.sol:59" - }, - { - "contract": "SSVNetwork", - "label": "_owners", - "type": "t_mapping(t_address,t_struct(OwnerData)2989_storage)", - "src": "contracts/SSVNetwork.sol:60" - }, - { - "contract": "SSVNetwork", - "label": "_operatorsInUseByAddress", - "type": "t_mapping(t_address,t_mapping(t_bytes_memory_ptr,t_struct(OperatorInUse)3000_storage))", - "src": "contracts/SSVNetwork.sol:61" - }, - { - "contract": "SSVNetwork", - "label": "_operatorsInUseList", - "type": "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)", - "src": "contracts/SSVNetwork.sol:62" - }, - { - "contract": "SSVNetwork", - "label": "_lastOperatorUpdateNetworkFeeRun", - "type": "t_mapping(t_bytes_memory_ptr,t_uint256)", - "src": "contracts/SSVNetwork.sol:63" - }, - { - "contract": "SSVNetwork", - "label": "_setOperatorFeePeriod", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:65" - }, - { - "contract": "SSVNetwork", - "label": "_approveOperatorFeePeriod", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:66" - }, - { - "contract": "SSVNetwork", - "label": "_feeChangeRequests", - "type": "t_mapping(t_bytes_memory_ptr,t_struct(FeeChangeRequest)3007_storage)", - "src": "contracts/SSVNetwork.sol:67" - } - ], - "types": { - "t_contract(ISSVRegistry)2947": { - "label": "contract ISSVRegistry" - }, - "t_contract(IERC20)962": { - "label": "contract IERC20" - }, - "t_uint256": { - "label": "uint256" - }, - "t_mapping(t_bytes_memory_ptr,t_struct(OperatorData)2972_storage)": { - "label": "mapping(bytes => struct SSVNetwork.OperatorData)" - }, - "t_bytes_storage": { - "label": "bytes" - }, - "t_struct(OperatorData)2972_storage": { - "label": "struct SSVNetwork.OperatorData", - "members": [ - { - "label": "blockNumber", - "type": "t_uint256" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256" - }, - { - "label": "earnings", - "type": "t_uint256" - }, - { - "label": "index", - "type": "t_uint256" - }, - { - "label": "indexBlockNumber", - "type": "t_uint256" - }, - { - "label": "previousFee", - "type": "t_uint256" - } - ] - }, - "t_mapping(t_address,t_struct(OwnerData)2989_storage)": { - "label": "mapping(address => struct SSVNetwork.OwnerData)" - }, - "t_address": { - "label": "address" - }, - "t_struct(OwnerData)2989_storage": { - "label": "struct SSVNetwork.OwnerData", - "members": [ - { - "label": "deposited", - "type": "t_uint256" - }, - { - "label": "withdrawn", - "type": "t_uint256" - }, - { - "label": "earned", - "type": "t_uint256" - }, - { - "label": "used", - "type": "t_uint256" - }, - { - "label": "networkFee", - "type": "t_uint256" - }, - { - "label": "networkFeeIndex", - "type": "t_uint256" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256" - }, - { - "label": "validatorsDisabled", - "type": "t_bool" - } - ] - }, - "t_bool": { - "label": "bool" - }, - "t_mapping(t_address,t_mapping(t_bytes_memory_ptr,t_struct(OperatorInUse)3000_storage))": { - "label": "mapping(address => mapping(bytes => struct SSVNetwork.OperatorInUse))" - }, - "t_mapping(t_bytes_memory_ptr,t_struct(OperatorInUse)3000_storage)": { - "label": "mapping(bytes => struct SSVNetwork.OperatorInUse)" - }, - "t_struct(OperatorInUse)3000_storage": { - "label": "struct SSVNetwork.OperatorInUse", - "members": [ - { - "label": "index", - "type": "t_uint256" - }, - { - "label": "validatorCount", - "type": "t_uint256" - }, - { - "label": "used", - "type": "t_uint256" - }, - { - "label": "exists", - "type": "t_bool" - }, - { - "label": "indexInArray", - "type": "t_uint256" - } - ] - }, - "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)": { - "label": "mapping(address => bytes[])" - }, - "t_array(t_bytes_storage)dyn_storage": { - "label": "bytes[]" - }, - "t_mapping(t_bytes_memory_ptr,t_uint256)": { - "label": "mapping(bytes => uint256)" - }, - "t_mapping(t_bytes_memory_ptr,t_struct(FeeChangeRequest)3007_storage)": { - "label": "mapping(bytes => struct SSVNetwork.FeeChangeRequest)" - }, - "t_struct(FeeChangeRequest)3007_storage": { - "label": "struct SSVNetwork.FeeChangeRequest", - "members": [ - { - "label": "fee", - "type": "t_uint256" - }, - { - "label": "approvalBeginTime", - "type": "t_uint256" - }, - { - "label": "approvalEndTime", - "type": "t_uint256" - } - ] - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]" - } - } - } - }, - "c63bf4bc1baa499980de2e288597db420f603f58bbb626a614d63b145179ed1c": { - "address": "0x8750104499ffFcc16Af6B5c230BDd93aDc9E08CD", - "txHash": "0x202fc6072d8b366d6c15d00db8744e7a989afa7cca3a7be393e011e833389d9f", - "layout": { - "storage": [ - { - "contract": "Initializable", - "label": "_initialized", - "type": "t_bool", - "src": "@openzeppelin/contracts/proxy/utils/Initializable.sol:23" - }, - { - "contract": "Initializable", - "label": "_initializing", - "type": "t_bool", - "src": "@openzeppelin/contracts/proxy/utils/Initializable.sol:28" - }, - { - "contract": "ContextUpgradeable", - "label": "__gap", - "type": "t_array(t_uint256)50_storage", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "contract": "OwnableUpgradeable", - "label": "_owner", - "type": "t_address", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "contract": "OwnableUpgradeable", - "label": "__gap", - "type": "t_array(t_uint256)49_storage", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "contract": "SSVRegistry", - "label": "_activeValidatorCount", - "type": "t_uint256", - "src": "contracts/SSVRegistry.sol:38" - }, - { - "contract": "SSVRegistry", - "label": "_lastOperatorId", - "type": "t_struct(Counter)1597_storage", - "src": "contracts/SSVRegistry.sol:40" - }, - { - "contract": "SSVRegistry", - "label": "_operators", - "type": "t_mapping(t_uint256,t_struct(Operator)5521_storage)", - "src": "contracts/SSVRegistry.sol:42" - }, - { - "contract": "SSVRegistry", - "label": "_validators", - "type": "t_mapping(t_bytes_memory_ptr,t_struct(Validator)5531_storage)", - "src": "contracts/SSVRegistry.sol:43" - }, - { - "contract": "SSVRegistry", - "label": "_operatorFees", - "type": "t_mapping(t_uint256,t_array(t_struct(OperatorFee)5536_storage)dyn_storage)", - "src": "contracts/SSVRegistry.sol:44" - }, - { - "contract": "SSVRegistry", - "label": "_operatorsByOwnerAddress", - "type": "t_mapping(t_address,t_array(t_uint256)dyn_storage)", - "src": "contracts/SSVRegistry.sol:46" - }, - { - "contract": "SSVRegistry", - "label": "_validatorsByOwnerAddress", - "type": "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)", - "src": "contracts/SSVRegistry.sol:47" - }, - { - "contract": "SSVRegistry", - "label": "_owners", - "type": "t_mapping(t_address,t_struct(OwnerData)5541_storage)", - "src": "contracts/SSVRegistry.sol:48" - }, - { - "contract": "SSVRegistry", - "label": "_operatorPublicKeyToId", - "type": "t_mapping(t_bytes_memory_ptr,t_uint256)", - "src": "contracts/SSVRegistry.sol:50" - } - ], - "types": { - "t_uint256": { - "label": "uint256" - }, - "t_struct(Counter)1597_storage": { - "label": "struct Counters.Counter", - "members": [ - { - "label": "_value", - "type": "t_uint256" - } - ] - }, - "t_mapping(t_uint256,t_struct(Operator)5521_storage)": { - "label": "mapping(uint256 => struct SSVRegistry.Operator)" - }, - "t_struct(Operator)5521_storage": { - "label": "struct SSVRegistry.Operator", - "members": [ - { - "label": "name", - "type": "t_string_storage" - }, - { - "label": "ownerAddress", - "type": "t_address" - }, - { - "label": "publicKey", - "type": "t_bytes_storage" - }, - { - "label": "score", - "type": "t_uint256" - }, - { - "label": "active", - "type": "t_bool" - }, - { - "label": "indexInOwner", - "type": "t_uint256" - } - ] - }, - "t_string_storage": { - "label": "string" - }, - "t_address": { - "label": "address" - }, - "t_bytes_storage": { - "label": "bytes" - }, - "t_bool": { - "label": "bool" - }, - "t_mapping(t_bytes_memory_ptr,t_struct(Validator)5531_storage)": { - "label": "mapping(bytes => struct SSVRegistry.Validator)" - }, - "t_struct(Validator)5531_storage": { - "label": "struct SSVRegistry.Validator", - "members": [ - { - "label": "ownerAddress", - "type": "t_address" - }, - { - "label": "operatorIds", - "type": "t_array(t_uint256)dyn_storage" - }, - { - "label": "active", - "type": "t_bool" - }, - { - "label": "indexInOwner", - "type": "t_uint256" - } - ] - }, - "t_array(t_uint256)dyn_storage": { - "label": "uint256[]" - }, - "t_mapping(t_uint256,t_array(t_struct(OperatorFee)5536_storage)dyn_storage)": { - "label": "mapping(uint256 => struct SSVRegistry.OperatorFee[])" - }, - "t_array(t_struct(OperatorFee)5536_storage)dyn_storage": { - "label": "struct SSVRegistry.OperatorFee[]" - }, - "t_struct(OperatorFee)5536_storage": { - "label": "struct SSVRegistry.OperatorFee", - "members": [ - { - "label": "blockNumber", - "type": "t_uint256" - }, - { - "label": "fee", - "type": "t_uint256" - } - ] - }, - "t_mapping(t_address,t_array(t_uint256)dyn_storage)": { - "label": "mapping(address => uint256[])" - }, - "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)": { - "label": "mapping(address => bytes[])" - }, - "t_array(t_bytes_storage)dyn_storage": { - "label": "bytes[]" - }, - "t_mapping(t_address,t_struct(OwnerData)5541_storage)": { - "label": "mapping(address => struct SSVRegistry.OwnerData)" - }, - "t_struct(OwnerData)5541_storage": { - "label": "struct SSVRegistry.OwnerData", - "members": [ - { - "label": "activeValidatorCount", - "type": "t_uint256" - }, - { - "label": "validatorsDisabled", - "type": "t_bool" - } - ] - }, - "t_mapping(t_bytes_memory_ptr,t_uint256)": { - "label": "mapping(bytes => uint256)" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]" - } - } - } - }, - "8231eb1b6b1076f1610847d8f0bdb5b67e111aa452c6e10c52039dd930da4666": { - "address": "0x4aB14200aF78DE3172112e204cB28aE319ff8d12", - "txHash": "0x893b7ca00e014616385194792b777dd0ded27753432ff4456e61ce8e6f04df52", - "layout": { - "storage": [ - { - "contract": "Initializable", - "label": "_initialized", - "type": "t_bool", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:23" - }, - { - "contract": "Initializable", - "label": "_initializing", - "type": "t_bool", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:28" - }, - { - "contract": "ContextUpgradeable", - "label": "__gap", - "type": "t_array(t_uint256)50_storage", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "contract": "OwnableUpgradeable", - "label": "_owner", - "type": "t_address", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "contract": "OwnableUpgradeable", - "label": "__gap", - "type": "t_array(t_uint256)49_storage", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "contract": "SSVNetwork", - "label": "_ssvRegistryContract", - "type": "t_contract(ISSVRegistry)1100", - "src": "contracts/SSVNetwork.sol:45" - }, - { - "contract": "SSVNetwork", - "label": "_token", - "type": "t_contract(IERC20)299", - "src": "contracts/SSVNetwork.sol:46" - }, - { - "contract": "SSVNetwork", - "label": "_minimumBlocksBeforeLiquidation", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "contract": "SSVNetwork", - "label": "_operatorMaxFeeIncrease", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:48" - }, - { - "contract": "SSVNetwork", - "label": "_networkFee", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:50" - }, - { - "contract": "SSVNetwork", - "label": "_networkFeeIndex", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:51" - }, - { - "contract": "SSVNetwork", - "label": "_networkFeeIndexBlockNumber", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:52" - }, - { - "contract": "SSVNetwork", - "label": "_networkEarnings", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:53" - }, - { - "contract": "SSVNetwork", - "label": "_networkEarningsBlockNumber", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "contract": "SSVNetwork", - "label": "_withdrawnFromTreasury", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:55" - }, - { - "contract": "SSVNetwork", - "label": "_operatorDatas", - "type": "t_mapping(t_uint256,t_struct(OperatorData)1124_storage)", - "src": "contracts/SSVNetwork.sol:57" - }, - { - "contract": "SSVNetwork", - "label": "_owners", - "type": "t_mapping(t_address,t_struct(OwnerData)1141_storage)", - "src": "contracts/SSVNetwork.sol:58" - }, - { - "contract": "SSVNetwork", - "label": "_operatorsInUseByAddress", - "type": "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)1152_storage))", - "src": "contracts/SSVNetwork.sol:59" - }, - { - "contract": "SSVNetwork", - "label": "_operatorsInUseList", - "type": "t_mapping(t_address,t_array(t_uint256)dyn_storage)", - "src": "contracts/SSVNetwork.sol:60" - }, - { - "contract": "SSVNetwork", - "label": "_lastOperatorUpdateNetworkFeeRun", - "type": "t_mapping(t_uint256,t_uint256)", - "src": "contracts/SSVNetwork.sol:61" - }, - { - "contract": "SSVNetwork", - "label": "_setOperatorFeePeriod", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:63" - }, - { - "contract": "SSVNetwork", - "label": "_approveOperatorFeePeriod", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:64" - }, - { - "contract": "SSVNetwork", - "label": "_feeChangeRequests", - "type": "t_mapping(t_uint256,t_struct(FeeChangeRequest)1159_storage)", - "src": "contracts/SSVNetwork.sol:65" - } - ], - "types": { - "t_contract(ISSVRegistry)1100": { - "label": "contract ISSVRegistry" - }, - "t_contract(IERC20)299": { - "label": "contract IERC20" - }, - "t_uint256": { - "label": "uint256" - }, - "t_mapping(t_uint256,t_struct(OperatorData)1124_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorData)" - }, - "t_struct(OperatorData)1124_storage": { - "label": "struct SSVNetwork.OperatorData", - "members": [ - { - "label": "blockNumber", - "type": "t_uint256" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256" - }, - { - "label": "earnings", - "type": "t_uint256" - }, - { - "label": "index", - "type": "t_uint256" - }, - { - "label": "indexBlockNumber", - "type": "t_uint256" - }, - { - "label": "previousFee", - "type": "t_uint256" - } - ] - }, - "t_mapping(t_address,t_struct(OwnerData)1141_storage)": { - "label": "mapping(address => struct SSVNetwork.OwnerData)" - }, - "t_address": { - "label": "address" - }, - "t_struct(OwnerData)1141_storage": { - "label": "struct SSVNetwork.OwnerData", - "members": [ - { - "label": "deposited", - "type": "t_uint256" - }, - { - "label": "withdrawn", - "type": "t_uint256" - }, - { - "label": "earned", - "type": "t_uint256" - }, - { - "label": "used", - "type": "t_uint256" - }, - { - "label": "networkFee", - "type": "t_uint256" - }, - { - "label": "networkFeeIndex", - "type": "t_uint256" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256" - }, - { - "label": "validatorsDisabled", - "type": "t_bool" - } - ] - }, - "t_bool": { - "label": "bool" - }, - "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)1152_storage))": { - "label": "mapping(address => mapping(uint256 => struct SSVNetwork.OperatorInUse))" - }, - "t_mapping(t_uint256,t_struct(OperatorInUse)1152_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorInUse)" - }, - "t_struct(OperatorInUse)1152_storage": { - "label": "struct SSVNetwork.OperatorInUse", - "members": [ - { - "label": "index", - "type": "t_uint256" - }, - { - "label": "validatorCount", - "type": "t_uint256" - }, - { - "label": "used", - "type": "t_uint256" - }, - { - "label": "exists", - "type": "t_bool" - }, - { - "label": "indexInArray", - "type": "t_uint256" - } - ] - }, - "t_mapping(t_address,t_array(t_uint256)dyn_storage)": { - "label": "mapping(address => uint256[])" - }, - "t_array(t_uint256)dyn_storage": { - "label": "uint256[]" - }, - "t_mapping(t_uint256,t_uint256)": { - "label": "mapping(uint256 => uint256)" - }, - "t_mapping(t_uint256,t_struct(FeeChangeRequest)1159_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.FeeChangeRequest)" - }, - "t_struct(FeeChangeRequest)1159_storage": { - "label": "struct SSVNetwork.FeeChangeRequest", - "members": [ - { - "label": "fee", - "type": "t_uint256" - }, - { - "label": "approvalBeginTime", - "type": "t_uint256" - }, - { - "label": "approvalEndTime", - "type": "t_uint256" - } - ] - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]" - } - } - } - }, - "6da42368d480c8d8b98536a3c1e80a736ff4145896375e0005dd2c17fb15ccae": { - "address": "0x4317Ad05B4535c64034Ae9d920D34c3f2a8d107e", - "txHash": "0x8c614ab6634ea308b623c1801cc26bc2fce58b246469fb2385b6ac31744e6c89", - "layout": { - "storage": [ - { - "contract": "Initializable", - "label": "_initialized", - "type": "t_bool", - "src": "@openzeppelin/contracts/proxy/utils/Initializable.sol:23" - }, - { - "contract": "Initializable", - "label": "_initializing", - "type": "t_bool", - "src": "@openzeppelin/contracts/proxy/utils/Initializable.sol:28" - }, - { - "contract": "ContextUpgradeable", - "label": "__gap", - "type": "t_array(t_uint256)50_storage", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "contract": "OwnableUpgradeable", - "label": "_owner", - "type": "t_address", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "contract": "OwnableUpgradeable", - "label": "__gap", - "type": "t_array(t_uint256)49_storage", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "contract": "SSVNetwork", - "label": "_ssvRegistryContract", - "type": "t_contract(ISSVRegistry)2945", - "src": "contracts/SSVNetwork.sol:45" - }, - { - "contract": "SSVNetwork", - "label": "_token", - "type": "t_contract(IERC20)962", - "src": "contracts/SSVNetwork.sol:46" - }, - { - "contract": "SSVNetwork", - "label": "_minimumBlocksBeforeLiquidation", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "contract": "SSVNetwork", - "label": "_operatorMaxFeeIncrease", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:48" - }, - { - "contract": "SSVNetwork", - "label": "_networkFee", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:50" - }, - { - "contract": "SSVNetwork", - "label": "_networkFeeIndex", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:51" - }, - { - "contract": "SSVNetwork", - "label": "_networkFeeIndexBlockNumber", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:52" - }, - { - "contract": "SSVNetwork", - "label": "_networkEarnings", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:53" - }, - { - "contract": "SSVNetwork", - "label": "_networkEarningsBlockNumber", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "contract": "SSVNetwork", - "label": "_withdrawnFromTreasury", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:55" - }, - { - "contract": "SSVNetwork", - "label": "_operatorDatas", - "type": "t_mapping(t_uint256,t_struct(OperatorData)2969_storage)", - "src": "contracts/SSVNetwork.sol:57" - }, - { - "contract": "SSVNetwork", - "label": "_owners", - "type": "t_mapping(t_address,t_struct(OwnerData)2986_storage)", - "src": "contracts/SSVNetwork.sol:58" - }, - { - "contract": "SSVNetwork", - "label": "_operatorsInUseByAddress", - "type": "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)2997_storage))", - "src": "contracts/SSVNetwork.sol:59" - }, - { - "contract": "SSVNetwork", - "label": "_operatorsInUseList", - "type": "t_mapping(t_address,t_array(t_uint256)dyn_storage)", - "src": "contracts/SSVNetwork.sol:60" - }, - { - "contract": "SSVNetwork", - "label": "_lastOperatorUpdateNetworkFeeRun", - "type": "t_mapping(t_uint256,t_uint256)", - "src": "contracts/SSVNetwork.sol:61" - }, - { - "contract": "SSVNetwork", - "label": "_setOperatorFeePeriod", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:63" - }, - { - "contract": "SSVNetwork", - "label": "_approveOperatorFeePeriod", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:64" - }, - { - "contract": "SSVNetwork", - "label": "_feeChangeRequests", - "type": "t_mapping(t_uint256,t_struct(FeeChangeRequest)3004_storage)", - "src": "contracts/SSVNetwork.sol:65" - } - ], - "types": { - "t_contract(ISSVRegistry)2945": { - "label": "contract ISSVRegistry" - }, - "t_contract(IERC20)962": { - "label": "contract IERC20" - }, - "t_uint256": { - "label": "uint256" - }, - "t_mapping(t_uint256,t_struct(OperatorData)2969_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorData)" - }, - "t_struct(OperatorData)2969_storage": { - "label": "struct SSVNetwork.OperatorData", - "members": [ - { - "label": "blockNumber", - "type": "t_uint256" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256" - }, - { - "label": "earnings", - "type": "t_uint256" - }, - { - "label": "index", - "type": "t_uint256" - }, - { - "label": "indexBlockNumber", - "type": "t_uint256" - }, - { - "label": "previousFee", - "type": "t_uint256" - } - ] - }, - "t_mapping(t_address,t_struct(OwnerData)2986_storage)": { - "label": "mapping(address => struct SSVNetwork.OwnerData)" - }, - "t_address": { - "label": "address" - }, - "t_struct(OwnerData)2986_storage": { - "label": "struct SSVNetwork.OwnerData", - "members": [ - { - "label": "deposited", - "type": "t_uint256" - }, - { - "label": "withdrawn", - "type": "t_uint256" - }, - { - "label": "earned", - "type": "t_uint256" - }, - { - "label": "used", - "type": "t_uint256" - }, - { - "label": "networkFee", - "type": "t_uint256" - }, - { - "label": "networkFeeIndex", - "type": "t_uint256" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256" - }, - { - "label": "validatorsDisabled", - "type": "t_bool" - } - ] - }, - "t_bool": { - "label": "bool" - }, - "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)2997_storage))": { - "label": "mapping(address => mapping(uint256 => struct SSVNetwork.OperatorInUse))" - }, - "t_mapping(t_uint256,t_struct(OperatorInUse)2997_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorInUse)" - }, - "t_struct(OperatorInUse)2997_storage": { - "label": "struct SSVNetwork.OperatorInUse", - "members": [ - { - "label": "index", - "type": "t_uint256" - }, - { - "label": "validatorCount", - "type": "t_uint256" - }, - { - "label": "used", - "type": "t_uint256" - }, - { - "label": "exists", - "type": "t_bool" - }, - { - "label": "indexInArray", - "type": "t_uint256" - } - ] - }, - "t_mapping(t_address,t_array(t_uint256)dyn_storage)": { - "label": "mapping(address => uint256[])" - }, - "t_array(t_uint256)dyn_storage": { - "label": "uint256[]" - }, - "t_mapping(t_uint256,t_uint256)": { - "label": "mapping(uint256 => uint256)" - }, - "t_mapping(t_uint256,t_struct(FeeChangeRequest)3004_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.FeeChangeRequest)" - }, - "t_struct(FeeChangeRequest)3004_storage": { - "label": "struct SSVNetwork.FeeChangeRequest", - "members": [ - { - "label": "fee", - "type": "t_uint256" - }, - { - "label": "approvalBeginTime", - "type": "t_uint256" - }, - { - "label": "approvalEndTime", - "type": "t_uint256" - } - ] - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]" - } - } - } - }, - "440af0e34738528eb879d029e9fa150dd9cdae00e35fc93e552962c3f3865242": { - "address": "0x17f9b1643E02bf1c6D90d8442F4ac5194c993E3A", - "txHash": "0x98ef48dab27b1f3225362e86f432344d8fd4ea7ae62b90c850c0a47b12ba21f5", - "layout": { - "storage": [ - { - "contract": "Initializable", - "label": "_initialized", - "type": "t_bool", - "src": "@openzeppelin/contracts/proxy/utils/Initializable.sol:23" - }, - { - "contract": "Initializable", - "label": "_initializing", - "type": "t_bool", - "src": "@openzeppelin/contracts/proxy/utils/Initializable.sol:28" - }, - { - "contract": "ContextUpgradeable", - "label": "__gap", - "type": "t_array(t_uint256)50_storage", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "contract": "OwnableUpgradeable", - "label": "_owner", - "type": "t_address", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "contract": "OwnableUpgradeable", - "label": "__gap", - "type": "t_array(t_uint256)49_storage", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "contract": "SSVNetwork", - "label": "_ssvRegistryContract", - "type": "t_contract(ISSVRegistry)2945", - "src": "contracts/SSVNetwork.sol:45" - }, - { - "contract": "SSVNetwork", - "label": "_token", - "type": "t_contract(IERC20)962", - "src": "contracts/SSVNetwork.sol:46" - }, - { - "contract": "SSVNetwork", - "label": "_minimumBlocksBeforeLiquidation", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "contract": "SSVNetwork", - "label": "_operatorMaxFeeIncrease", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:48" - }, - { - "contract": "SSVNetwork", - "label": "_networkFee", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:50" - }, - { - "contract": "SSVNetwork", - "label": "_networkFeeIndex", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:51" - }, - { - "contract": "SSVNetwork", - "label": "_networkFeeIndexBlockNumber", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:52" - }, - { - "contract": "SSVNetwork", - "label": "_networkEarnings", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:53" - }, - { - "contract": "SSVNetwork", - "label": "_networkEarningsBlockNumber", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "contract": "SSVNetwork", - "label": "_withdrawnFromTreasury", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:55" - }, - { - "contract": "SSVNetwork", - "label": "_operatorDatas", - "type": "t_mapping(t_uint256,t_struct(OperatorData)2969_storage)", - "src": "contracts/SSVNetwork.sol:57" - }, - { - "contract": "SSVNetwork", - "label": "_owners", - "type": "t_mapping(t_address,t_struct(OwnerData)2986_storage)", - "src": "contracts/SSVNetwork.sol:58" - }, - { - "contract": "SSVNetwork", - "label": "_operatorsInUseByAddress", - "type": "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)2997_storage))", - "src": "contracts/SSVNetwork.sol:59" - }, - { - "contract": "SSVNetwork", - "label": "_operatorsInUseList", - "type": "t_mapping(t_address,t_array(t_uint256)dyn_storage)", - "src": "contracts/SSVNetwork.sol:60" - }, - { - "contract": "SSVNetwork", - "label": "_lastOperatorUpdateNetworkFeeRun", - "type": "t_mapping(t_uint256,t_uint256)", - "src": "contracts/SSVNetwork.sol:61" - }, - { - "contract": "SSVNetwork", - "label": "_setOperatorFeePeriod", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:63" - }, - { - "contract": "SSVNetwork", - "label": "_approveOperatorFeePeriod", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:64" - }, - { - "contract": "SSVNetwork", - "label": "_feeChangeRequests", - "type": "t_mapping(t_uint256,t_struct(FeeChangeRequest)3004_storage)", - "src": "contracts/SSVNetwork.sol:65" - } - ], - "types": { - "t_contract(ISSVRegistry)2945": { - "label": "contract ISSVRegistry" - }, - "t_contract(IERC20)962": { - "label": "contract IERC20" - }, - "t_uint256": { - "label": "uint256" - }, - "t_mapping(t_uint256,t_struct(OperatorData)2969_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorData)" - }, - "t_struct(OperatorData)2969_storage": { - "label": "struct SSVNetwork.OperatorData", - "members": [ - { - "label": "blockNumber", - "type": "t_uint256" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256" - }, - { - "label": "earnings", - "type": "t_uint256" - }, - { - "label": "index", - "type": "t_uint256" - }, - { - "label": "indexBlockNumber", - "type": "t_uint256" - }, - { - "label": "previousFee", - "type": "t_uint256" - } - ] - }, - "t_mapping(t_address,t_struct(OwnerData)2986_storage)": { - "label": "mapping(address => struct SSVNetwork.OwnerData)" - }, - "t_address": { - "label": "address" - }, - "t_struct(OwnerData)2986_storage": { - "label": "struct SSVNetwork.OwnerData", - "members": [ - { - "label": "deposited", - "type": "t_uint256" - }, - { - "label": "withdrawn", - "type": "t_uint256" - }, - { - "label": "earned", - "type": "t_uint256" - }, - { - "label": "used", - "type": "t_uint256" - }, - { - "label": "networkFee", - "type": "t_uint256" - }, - { - "label": "networkFeeIndex", - "type": "t_uint256" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256" - }, - { - "label": "validatorsDisabled", - "type": "t_bool" - } - ] - }, - "t_bool": { - "label": "bool" - }, - "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)2997_storage))": { - "label": "mapping(address => mapping(uint256 => struct SSVNetwork.OperatorInUse))" - }, - "t_mapping(t_uint256,t_struct(OperatorInUse)2997_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorInUse)" - }, - "t_struct(OperatorInUse)2997_storage": { - "label": "struct SSVNetwork.OperatorInUse", - "members": [ - { - "label": "index", - "type": "t_uint256" - }, - { - "label": "validatorCount", - "type": "t_uint256" - }, - { - "label": "used", - "type": "t_uint256" - }, - { - "label": "exists", - "type": "t_bool" - }, - { - "label": "indexInArray", - "type": "t_uint256" - } - ] - }, - "t_mapping(t_address,t_array(t_uint256)dyn_storage)": { - "label": "mapping(address => uint256[])" - }, - "t_array(t_uint256)dyn_storage": { - "label": "uint256[]" - }, - "t_mapping(t_uint256,t_uint256)": { - "label": "mapping(uint256 => uint256)" - }, - "t_mapping(t_uint256,t_struct(FeeChangeRequest)3004_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.FeeChangeRequest)" - }, - "t_struct(FeeChangeRequest)3004_storage": { - "label": "struct SSVNetwork.FeeChangeRequest", - "members": [ - { - "label": "fee", - "type": "t_uint256" - }, - { - "label": "approvalBeginTime", - "type": "t_uint256" - }, - { - "label": "approvalEndTime", - "type": "t_uint256" - } - ] - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]" - } - } - } - }, - "301e08c313b7fc56f51923557c5b0e56d80c4b51c88007eadc098879334de9bf": { - "address": "0xEB17aB1F557Bc5f26C797c56A98114D69954A294", - "txHash": "0xa7ab99d0629820ad07bc1325e89afb98e2a40dac5abdd66443ba0c6751e0bfb8", - "layout": { - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:23" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:28" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "label": "_activeValidatorCount", - "offset": 0, - "slot": "101", - "type": "t_uint256", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:38" - }, - { - "label": "_lastOperatorId", - "offset": 0, - "slot": "102", - "type": "t_struct(Counter)1003_storage", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:40" - }, - { - "label": "_operators", - "offset": 0, - "slot": "103", - "type": "t_mapping(t_uint256,t_struct(Operator)4594_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:42" - }, - { - "label": "_validators", - "offset": 0, - "slot": "104", - "type": "t_mapping(t_bytes_memory_ptr,t_struct(Validator)4604_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:43" - }, - { - "label": "_operatorFees", - "offset": 0, - "slot": "105", - "type": "t_mapping(t_uint256,t_array(t_struct(OperatorFee)4609_storage)dyn_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:44" - }, - { - "label": "_operatorsByOwnerAddress", - "offset": 0, - "slot": "106", - "type": "t_mapping(t_address,t_array(t_uint256)dyn_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:46" - }, - { - "label": "_validatorsByOwnerAddress", - "offset": 0, - "slot": "107", - "type": "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:47" - }, - { - "label": "_owners", - "offset": 0, - "slot": "108", - "type": "t_mapping(t_address,t_struct(OwnerData)4614_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:48" - }, - { - "label": "validatorsPerOperator", - "offset": 0, - "slot": "109", - "type": "t_mapping(t_uint256,t_uint256)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:50" - }, - { - "label": "validatorsPerOperatorLimit", - "offset": 0, - "slot": "110", - "type": "t_uint256", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:51" - }, - { - "label": "_operatorPublicKeyToId", - "offset": 0, - "slot": "111", - "type": "t_mapping(t_bytes_memory_ptr,t_uint256)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:52" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_bytes_storage)dyn_storage": { - "label": "bytes[]", - "numberOfBytes": "32" - }, - "t_array(t_struct(OperatorFee)4609_storage)dyn_storage": { - "label": "struct SSVRegistry.OperatorFee[]", - "numberOfBytes": "32" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_array(t_uint256)dyn_storage": { - "label": "uint256[]", - "numberOfBytes": "32" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_bytes_memory_ptr": { - "label": "bytes", - "numberOfBytes": "32" - }, - "t_bytes_storage": { - "label": "bytes", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)": { - "label": "mapping(address => bytes[])", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_array(t_uint256)dyn_storage)": { - "label": "mapping(address => uint256[])", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_struct(OwnerData)4614_storage)": { - "label": "mapping(address => struct SSVRegistry.OwnerData)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes_memory_ptr,t_struct(Validator)4604_storage)": { - "label": "mapping(bytes => struct SSVRegistry.Validator)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes_memory_ptr,t_uint256)": { - "label": "mapping(bytes => uint256)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_array(t_struct(OperatorFee)4609_storage)dyn_storage)": { - "label": "mapping(uint256 => struct SSVRegistry.OperatorFee[])", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(Operator)4594_storage)": { - "label": "mapping(uint256 => struct SSVRegistry.Operator)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_uint256)": { - "label": "mapping(uint256 => uint256)", - "numberOfBytes": "32" - }, - "t_string_storage": { - "label": "string", - "numberOfBytes": "32" - }, - "t_struct(Counter)1003_storage": { - "label": "struct Counters.Counter", - "members": [ - { - "label": "_value", - "type": "t_uint256", - "offset": 0, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Operator)4594_storage": { - "label": "struct SSVRegistry.Operator", - "members": [ - { - "label": "name", - "type": "t_string_storage", - "offset": 0, - "slot": "0" - }, - { - "label": "ownerAddress", - "type": "t_address", - "offset": 0, - "slot": "1" - }, - { - "label": "publicKey", - "type": "t_bytes_storage", - "offset": 0, - "slot": "2" - }, - { - "label": "score", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "active", - "type": "t_bool", - "offset": 0, - "slot": "4" - }, - { - "label": "indexInOwner", - "type": "t_uint256", - "offset": 0, - "slot": "5" - } - ], - "numberOfBytes": "192" - }, - "t_struct(OperatorFee)4609_storage": { - "label": "struct SSVRegistry.OperatorFee", - "members": [ - { - "label": "blockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "fee", - "type": "t_uint256", - "offset": 0, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_struct(OwnerData)4614_storage": { - "label": "struct SSVRegistry.OwnerData", - "members": [ - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "validatorsDisabled", - "type": "t_bool", - "offset": 0, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_struct(Validator)4604_storage": { - "label": "struct SSVRegistry.Validator", - "members": [ - { - "label": "ownerAddress", - "type": "t_address", - "offset": 0, - "slot": "0" - }, - { - "label": "operatorIds", - "type": "t_array(t_uint256)dyn_storage", - "offset": 0, - "slot": "1" - }, - { - "label": "active", - "type": "t_bool", - "offset": 0, - "slot": "2" - }, - { - "label": "indexInOwner", - "type": "t_uint256", - "offset": 0, - "slot": "3" - } - ], - "numberOfBytes": "128" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - } - } - } - }, - "1be681dbffb8ab244cf79a9cbc97c88af0b9a85596f58ef57f1f0eec19c1a706": { - "address": "0x000Db5194a12C6A6bDd0B4eDc6C661B006324195", - "txHash": "0xcefff356b2d58c3324934da1972a243a209207fc857e61763cbb8324cb9c660a", - "layout": { - "storage": [ - { - "contract": "Initializable", - "label": "_initialized", - "type": "t_bool", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:23" - }, - { - "contract": "Initializable", - "label": "_initializing", - "type": "t_bool", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:28" - }, - { - "contract": "ContextUpgradeable", - "label": "__gap", - "type": "t_array(t_uint256)50_storage", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "contract": "OwnableUpgradeable", - "label": "_owner", - "type": "t_address", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "contract": "OwnableUpgradeable", - "label": "__gap", - "type": "t_array(t_uint256)49_storage", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "contract": "SSVNetwork", - "label": "_ssvRegistryContract", - "type": "t_contract(ISSVRegistry)1850", - "src": "contracts/SSVNetwork.sol:45" - }, - { - "contract": "SSVNetwork", - "label": "_token", - "type": "t_contract(IERC20)916", - "src": "contracts/SSVNetwork.sol:46" - }, - { - "contract": "SSVNetwork", - "label": "_minimumBlocksBeforeLiquidation", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "contract": "SSVNetwork", - "label": "_operatorMaxFeeIncrease", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:48" - }, - { - "contract": "SSVNetwork", - "label": "_networkFee", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:50" - }, - { - "contract": "SSVNetwork", - "label": "_networkFeeIndex", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:51" - }, - { - "contract": "SSVNetwork", - "label": "_networkFeeIndexBlockNumber", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:52" - }, - { - "contract": "SSVNetwork", - "label": "_networkEarnings", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:53" - }, - { - "contract": "SSVNetwork", - "label": "_networkEarningsBlockNumber", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "contract": "SSVNetwork", - "label": "_withdrawnFromTreasury", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:55" - }, - { - "contract": "SSVNetwork", - "label": "_operatorDatas", - "type": "t_mapping(t_uint256,t_struct(OperatorData)1874_storage)", - "src": "contracts/SSVNetwork.sol:57" - }, - { - "contract": "SSVNetwork", - "label": "_owners", - "type": "t_mapping(t_address,t_struct(OwnerData)1891_storage)", - "src": "contracts/SSVNetwork.sol:58" - }, - { - "contract": "SSVNetwork", - "label": "_operatorsInUseByAddress", - "type": "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)1902_storage))", - "src": "contracts/SSVNetwork.sol:59" - }, - { - "contract": "SSVNetwork", - "label": "_operatorsInUseList", - "type": "t_mapping(t_address,t_array(t_uint256)dyn_storage)", - "src": "contracts/SSVNetwork.sol:60" - }, - { - "contract": "SSVNetwork", - "label": "_lastOperatorUpdateNetworkFeeRun", - "type": "t_mapping(t_uint256,t_uint256)", - "src": "contracts/SSVNetwork.sol:61" - }, - { - "contract": "SSVNetwork", - "label": "_setOperatorFeePeriod", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:63" - }, - { - "contract": "SSVNetwork", - "label": "_approveOperatorFeePeriod", - "type": "t_uint256", - "src": "contracts/SSVNetwork.sol:64" - }, - { - "contract": "SSVNetwork", - "label": "_feeChangeRequests", - "type": "t_mapping(t_uint256,t_struct(FeeChangeRequest)1909_storage)", - "src": "contracts/SSVNetwork.sol:65" - } - ], - "types": { - "t_contract(ISSVRegistry)1850": { - "label": "contract ISSVRegistry" - }, - "t_contract(IERC20)916": { - "label": "contract IERC20" - }, - "t_uint256": { - "label": "uint256" - }, - "t_mapping(t_uint256,t_struct(OperatorData)1874_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorData)" - }, - "t_struct(OperatorData)1874_storage": { - "label": "struct SSVNetwork.OperatorData", - "members": [ - { - "label": "blockNumber", - "type": "t_uint256" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256" - }, - { - "label": "earnings", - "type": "t_uint256" - }, - { - "label": "index", - "type": "t_uint256" - }, - { - "label": "indexBlockNumber", - "type": "t_uint256" - }, - { - "label": "previousFee", - "type": "t_uint256" - } - ] - }, - "t_mapping(t_address,t_struct(OwnerData)1891_storage)": { - "label": "mapping(address => struct SSVNetwork.OwnerData)" - }, - "t_address": { - "label": "address" - }, - "t_struct(OwnerData)1891_storage": { - "label": "struct SSVNetwork.OwnerData", - "members": [ - { - "label": "deposited", - "type": "t_uint256" - }, - { - "label": "withdrawn", - "type": "t_uint256" - }, - { - "label": "earned", - "type": "t_uint256" - }, - { - "label": "used", - "type": "t_uint256" - }, - { - "label": "networkFee", - "type": "t_uint256" - }, - { - "label": "networkFeeIndex", - "type": "t_uint256" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256" - }, - { - "label": "validatorsDisabled", - "type": "t_bool" - } - ] - }, - "t_bool": { - "label": "bool" - }, - "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)1902_storage))": { - "label": "mapping(address => mapping(uint256 => struct SSVNetwork.OperatorInUse))" - }, - "t_mapping(t_uint256,t_struct(OperatorInUse)1902_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorInUse)" - }, - "t_struct(OperatorInUse)1902_storage": { - "label": "struct SSVNetwork.OperatorInUse", - "members": [ - { - "label": "index", - "type": "t_uint256" - }, - { - "label": "validatorCount", - "type": "t_uint256" - }, - { - "label": "used", - "type": "t_uint256" - }, - { - "label": "exists", - "type": "t_bool" - }, - { - "label": "indexInArray", - "type": "t_uint256" - } - ] - }, - "t_mapping(t_address,t_array(t_uint256)dyn_storage)": { - "label": "mapping(address => uint256[])" - }, - "t_array(t_uint256)dyn_storage": { - "label": "uint256[]" - }, - "t_mapping(t_uint256,t_uint256)": { - "label": "mapping(uint256 => uint256)" - }, - "t_mapping(t_uint256,t_struct(FeeChangeRequest)1909_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.FeeChangeRequest)" - }, - "t_struct(FeeChangeRequest)1909_storage": { - "label": "struct SSVNetwork.FeeChangeRequest", - "members": [ - { - "label": "fee", - "type": "t_uint256" - }, - { - "label": "approvalBeginTime", - "type": "t_uint256" - }, - { - "label": "approvalEndTime", - "type": "t_uint256" - } - ] - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]" - } - } - } - }, - "c9468aea4c9907b6748ca3e46567d61e600eef08082523fd7cf3c5de1a45c5c8": { - "address": "0x2b5691bDb2f68092e9375E7a2A8eb81C128A3451", - "txHash": "0xd3cfd2f6ff90dcbe7227007b8719110e8f7e1dd65ee406844b81ddf11620fab3", - "layout": { - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:23" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:28" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "label": "_ssvRegistryContract", - "offset": 0, - "slot": "101", - "type": "t_contract(ISSVRegistry)1896", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:45" - }, - { - "label": "_token", - "offset": 0, - "slot": "102", - "type": "t_contract(IERC20)950", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:46" - }, - { - "label": "_minimumBlocksBeforeLiquidation", - "offset": 0, - "slot": "103", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "label": "_operatorMaxFeeIncrease", - "offset": 0, - "slot": "104", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:48" - }, - { - "label": "_networkFee", - "offset": 0, - "slot": "105", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:50" - }, - { - "label": "_networkFeeIndex", - "offset": 0, - "slot": "106", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:51" - }, - { - "label": "_networkFeeIndexBlockNumber", - "offset": 0, - "slot": "107", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:52" - }, - { - "label": "_networkEarnings", - "offset": 0, - "slot": "108", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:53" - }, - { - "label": "_networkEarningsBlockNumber", - "offset": 0, - "slot": "109", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "label": "_withdrawnFromTreasury", - "offset": 0, - "slot": "110", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:55" - }, - { - "label": "_operatorDatas", - "offset": 0, - "slot": "111", - "type": "t_mapping(t_uint256,t_struct(OperatorData)1920_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:57" - }, - { - "label": "_owners", - "offset": 0, - "slot": "112", - "type": "t_mapping(t_address,t_struct(OwnerData)1937_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:58" - }, - { - "label": "_operatorsInUseByAddress", - "offset": 0, - "slot": "113", - "type": "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)1948_storage))", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:59" - }, - { - "label": "_operatorsInUseList", - "offset": 0, - "slot": "114", - "type": "t_mapping(t_address,t_array(t_uint256)dyn_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:60" - }, - { - "label": "_lastOperatorUpdateNetworkFeeRun", - "offset": 0, - "slot": "115", - "type": "t_mapping(t_uint256,t_uint256)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:61" - }, - { - "label": "_setOperatorFeePeriod", - "offset": 0, - "slot": "116", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:63" - }, - { - "label": "_approveOperatorFeePeriod", - "offset": 0, - "slot": "117", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:64" - }, - { - "label": "_feeChangeRequests", - "offset": 0, - "slot": "118", - "type": "t_mapping(t_uint256,t_struct(FeeChangeRequest)1955_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:65" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_array(t_uint256)dyn_storage": { - "label": "uint256[]", - "numberOfBytes": "32" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_contract(IERC20)950": { - "label": "contract IERC20", - "numberOfBytes": "20" - }, - "t_contract(ISSVRegistry)1896": { - "label": "contract ISSVRegistry", - "numberOfBytes": "20" - }, - "t_mapping(t_address,t_array(t_uint256)dyn_storage)": { - "label": "mapping(address => uint256[])", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)1948_storage))": { - "label": "mapping(address => mapping(uint256 => struct SSVNetwork.OperatorInUse))", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_struct(OwnerData)1937_storage)": { - "label": "mapping(address => struct SSVNetwork.OwnerData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(FeeChangeRequest)1955_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.FeeChangeRequest)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(OperatorData)1920_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(OperatorInUse)1948_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorInUse)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_uint256)": { - "label": "mapping(uint256 => uint256)", - "numberOfBytes": "32" - }, - "t_struct(FeeChangeRequest)1955_storage": { - "label": "struct SSVNetwork.FeeChangeRequest", - "members": [ - { - "label": "fee", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "approvalBeginTime", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "approvalEndTime", - "type": "t_uint256", - "offset": 0, - "slot": "2" - } - ], - "numberOfBytes": "96" - }, - "t_struct(OperatorData)1920_storage": { - "label": "struct SSVNetwork.OperatorData", - "members": [ - { - "label": "blockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "earnings", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "index", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "indexBlockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "4" - }, - { - "label": "previousFee", - "type": "t_uint256", - "offset": 0, - "slot": "5" - } - ], - "numberOfBytes": "192" - }, - "t_struct(OperatorInUse)1948_storage": { - "label": "struct SSVNetwork.OperatorInUse", - "members": [ - { - "label": "index", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "validatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "used", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "exists", - "type": "t_bool", - "offset": 0, - "slot": "3" - }, - { - "label": "indexInArray", - "type": "t_uint256", - "offset": 0, - "slot": "4" - } - ], - "numberOfBytes": "160" - }, - "t_struct(OwnerData)1937_storage": { - "label": "struct SSVNetwork.OwnerData", - "members": [ - { - "label": "deposited", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "withdrawn", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "earned", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "used", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "networkFee", - "type": "t_uint256", - "offset": 0, - "slot": "4" - }, - { - "label": "networkFeeIndex", - "type": "t_uint256", - "offset": 0, - "slot": "5" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "6" - }, - { - "label": "validatorsDisabled", - "type": "t_bool", - "offset": 0, - "slot": "7" - } - ], - "numberOfBytes": "256" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - } - } - } - }, - "3c50819bcb4b236876a1a4636028a3bd32a2bcf3df314fc5b00351f137f389e0": { - "address": "0xa7D38C6093d633196Fd8025307cB1fB45448b5E8", - "txHash": "0xc82d28babe79152a1477fd7dd6de171ddd93a5c1f7ff12661e6c0d11b5ff7192", - "layout": { - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:39" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:44" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:87" - }, - { - "label": "_activeValidatorCount", - "offset": 0, - "slot": "101", - "type": "t_uint256", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:38" - }, - { - "label": "_lastOperatorId", - "offset": 0, - "slot": "102", - "type": "t_struct(Counter)1306_storage", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:40" - }, - { - "label": "_operators", - "offset": 0, - "slot": "103", - "type": "t_mapping(t_uint256,t_struct(Operator)4896_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:42" - }, - { - "label": "_validators", - "offset": 0, - "slot": "104", - "type": "t_mapping(t_bytes_memory_ptr,t_struct(Validator)4906_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:43" - }, - { - "label": "_operatorFees", - "offset": 0, - "slot": "105", - "type": "t_mapping(t_uint256,t_array(t_struct(OperatorFee)4911_storage)dyn_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:44" - }, - { - "label": "_operatorsByOwnerAddress", - "offset": 0, - "slot": "106", - "type": "t_mapping(t_address,t_array(t_uint256)dyn_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:46" - }, - { - "label": "_validatorsByOwnerAddress", - "offset": 0, - "slot": "107", - "type": "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:47" - }, - { - "label": "_owners", - "offset": 0, - "slot": "108", - "type": "t_mapping(t_address,t_struct(OwnerData)4916_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:48" - }, - { - "label": "validatorsPerOperator", - "offset": 0, - "slot": "109", - "type": "t_mapping(t_uint256,t_uint256)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:50" - }, - { - "label": "validatorsPerOperatorLimit", - "offset": 0, - "slot": "110", - "type": "t_uint256", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:51" - }, - { - "label": "_operatorPublicKeyToId", - "offset": 0, - "slot": "111", - "type": "t_mapping(t_bytes_memory_ptr,t_uint256)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:52" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_bytes_storage)dyn_storage": { - "label": "bytes[]", - "numberOfBytes": "32" - }, - "t_array(t_struct(OperatorFee)4911_storage)dyn_storage": { - "label": "struct SSVRegistry.OperatorFee[]", - "numberOfBytes": "32" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_array(t_uint256)dyn_storage": { - "label": "uint256[]", - "numberOfBytes": "32" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_bytes_memory_ptr": { - "label": "bytes", - "numberOfBytes": "32" - }, - "t_bytes_storage": { - "label": "bytes", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)": { - "label": "mapping(address => bytes[])", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_array(t_uint256)dyn_storage)": { - "label": "mapping(address => uint256[])", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_struct(OwnerData)4916_storage)": { - "label": "mapping(address => struct SSVRegistry.OwnerData)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes_memory_ptr,t_struct(Validator)4906_storage)": { - "label": "mapping(bytes => struct SSVRegistry.Validator)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes_memory_ptr,t_uint256)": { - "label": "mapping(bytes => uint256)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_array(t_struct(OperatorFee)4911_storage)dyn_storage)": { - "label": "mapping(uint256 => struct SSVRegistry.OperatorFee[])", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(Operator)4896_storage)": { - "label": "mapping(uint256 => struct SSVRegistry.Operator)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_uint256)": { - "label": "mapping(uint256 => uint256)", - "numberOfBytes": "32" - }, - "t_string_storage": { - "label": "string", - "numberOfBytes": "32" - }, - "t_struct(Counter)1306_storage": { - "label": "struct Counters.Counter", - "members": [ - { - "label": "_value", - "type": "t_uint256", - "offset": 0, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Operator)4896_storage": { - "label": "struct SSVRegistry.Operator", - "members": [ - { - "label": "name", - "type": "t_string_storage", - "offset": 0, - "slot": "0" - }, - { - "label": "ownerAddress", - "type": "t_address", - "offset": 0, - "slot": "1" - }, - { - "label": "publicKey", - "type": "t_bytes_storage", - "offset": 0, - "slot": "2" - }, - { - "label": "score", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "active", - "type": "t_bool", - "offset": 0, - "slot": "4" - }, - { - "label": "indexInOwner", - "type": "t_uint256", - "offset": 0, - "slot": "5" - } - ], - "numberOfBytes": "192" - }, - "t_struct(OperatorFee)4911_storage": { - "label": "struct SSVRegistry.OperatorFee", - "members": [ - { - "label": "blockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "fee", - "type": "t_uint256", - "offset": 0, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_struct(OwnerData)4916_storage": { - "label": "struct SSVRegistry.OwnerData", - "members": [ - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "validatorsDisabled", - "type": "t_bool", - "offset": 0, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_struct(Validator)4906_storage": { - "label": "struct SSVRegistry.Validator", - "members": [ - { - "label": "ownerAddress", - "type": "t_address", - "offset": 0, - "slot": "0" - }, - { - "label": "operatorIds", - "type": "t_array(t_uint256)dyn_storage", - "offset": 0, - "slot": "1" - }, - { - "label": "active", - "type": "t_bool", - "offset": 0, - "slot": "2" - }, - { - "label": "indexInOwner", - "type": "t_uint256", - "offset": 0, - "slot": "3" - } - ], - "numberOfBytes": "128" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - } - } - } - }, - "1c5afd88adfce109b40e7a53ca0e08405d9b74fc33ae32f5a970e3983f7d4fda": { - "address": "0xe30FDD6fb008A0a8f30bd9B18c7e6671839448B3", - "txHash": "0x1bafc5df98b06c209d457fae459ec519dd708456ccb3bb9d4a4e013d8d5571d7", - "layout": { - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:23" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:28" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "label": "_ssvRegistryContract", - "offset": 0, - "slot": "101", - "type": "t_contract(ISSVRegistry)1898", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:45" - }, - { - "label": "_token", - "offset": 0, - "slot": "102", - "type": "t_contract(IERC20)950", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:46" - }, - { - "label": "_minimumBlocksBeforeLiquidation", - "offset": 0, - "slot": "103", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "label": "_operatorMaxFeeIncrease", - "offset": 0, - "slot": "104", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:48" - }, - { - "label": "_networkFee", - "offset": 0, - "slot": "105", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:50" - }, - { - "label": "_networkFeeIndex", - "offset": 0, - "slot": "106", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:51" - }, - { - "label": "_networkFeeIndexBlockNumber", - "offset": 0, - "slot": "107", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:52" - }, - { - "label": "_networkEarnings", - "offset": 0, - "slot": "108", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:53" - }, - { - "label": "_networkEarningsBlockNumber", - "offset": 0, - "slot": "109", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "label": "_withdrawnFromTreasury", - "offset": 0, - "slot": "110", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:55" - }, - { - "label": "_operatorDatas", - "offset": 0, - "slot": "111", - "type": "t_mapping(t_uint256,t_struct(OperatorData)1922_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:57" - }, - { - "label": "_owners", - "offset": 0, - "slot": "112", - "type": "t_mapping(t_address,t_struct(OwnerData)1939_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:58" - }, - { - "label": "_operatorsInUseByAddress", - "offset": 0, - "slot": "113", - "type": "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)1950_storage))", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:59" - }, - { - "label": "_operatorsInUseList", - "offset": 0, - "slot": "114", - "type": "t_mapping(t_address,t_array(t_uint256)dyn_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:60" - }, - { - "label": "_lastOperatorUpdateNetworkFeeRun", - "offset": 0, - "slot": "115", - "type": "t_mapping(t_uint256,t_uint256)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:61" - }, - { - "label": "_setOperatorFeePeriod", - "offset": 0, - "slot": "116", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:63" - }, - { - "label": "_approveOperatorFeePeriod", - "offset": 0, - "slot": "117", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:64" - }, - { - "label": "_feeChangeRequests", - "offset": 0, - "slot": "118", - "type": "t_mapping(t_uint256,t_struct(FeeChangeRequest)1957_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:65" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_array(t_uint256)dyn_storage": { - "label": "uint256[]", - "numberOfBytes": "32" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_contract(IERC20)950": { - "label": "contract IERC20", - "numberOfBytes": "20" - }, - "t_contract(ISSVRegistry)1898": { - "label": "contract ISSVRegistry", - "numberOfBytes": "20" - }, - "t_mapping(t_address,t_array(t_uint256)dyn_storage)": { - "label": "mapping(address => uint256[])", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)1950_storage))": { - "label": "mapping(address => mapping(uint256 => struct SSVNetwork.OperatorInUse))", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_struct(OwnerData)1939_storage)": { - "label": "mapping(address => struct SSVNetwork.OwnerData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(FeeChangeRequest)1957_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.FeeChangeRequest)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(OperatorData)1922_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(OperatorInUse)1950_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorInUse)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_uint256)": { - "label": "mapping(uint256 => uint256)", - "numberOfBytes": "32" - }, - "t_struct(FeeChangeRequest)1957_storage": { - "label": "struct SSVNetwork.FeeChangeRequest", - "members": [ - { - "label": "fee", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "approvalBeginTime", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "approvalEndTime", - "type": "t_uint256", - "offset": 0, - "slot": "2" - } - ], - "numberOfBytes": "96" - }, - "t_struct(OperatorData)1922_storage": { - "label": "struct SSVNetwork.OperatorData", - "members": [ - { - "label": "blockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "earnings", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "index", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "indexBlockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "4" - }, - { - "label": "previousFee", - "type": "t_uint256", - "offset": 0, - "slot": "5" - } - ], - "numberOfBytes": "192" - }, - "t_struct(OperatorInUse)1950_storage": { - "label": "struct SSVNetwork.OperatorInUse", - "members": [ - { - "label": "index", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "validatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "used", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "exists", - "type": "t_bool", - "offset": 0, - "slot": "3" - }, - { - "label": "indexInArray", - "type": "t_uint256", - "offset": 0, - "slot": "4" - } - ], - "numberOfBytes": "160" - }, - "t_struct(OwnerData)1939_storage": { - "label": "struct SSVNetwork.OwnerData", - "members": [ - { - "label": "deposited", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "withdrawn", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "earned", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "used", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "networkFee", - "type": "t_uint256", - "offset": 0, - "slot": "4" - }, - { - "label": "networkFeeIndex", - "type": "t_uint256", - "offset": 0, - "slot": "5" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "6" - }, - { - "label": "validatorsDisabled", - "type": "t_bool", - "offset": 0, - "slot": "7" - } - ], - "numberOfBytes": "256" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - } - } - } - }, - "49f5b5339a1066d44b991641b5201895dd65a4af4c292c552bc44f9757f4a717": { - "address": "0x101449ddB2A9Bce92e949b921fE86fe027bE0f6b", - "txHash": "0x1f95b75014d7c9d9ea0fc66bb00ae50f194aa3005801c5d610f92eb4e026bc5c", - "layout": { - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:23" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:28" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "label": "_ssvRegistryContract", - "offset": 0, - "slot": "101", - "type": "t_contract(ISSVRegistry)1126", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:45" - }, - { - "label": "_token", - "offset": 0, - "slot": "102", - "type": "t_contract(IERC20)299", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:46" - }, - { - "label": "_minimumBlocksBeforeLiquidation", - "offset": 0, - "slot": "103", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "label": "_operatorMaxFeeIncrease", - "offset": 0, - "slot": "104", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:48" - }, - { - "label": "_networkFee", - "offset": 0, - "slot": "105", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:50" - }, - { - "label": "_networkFeeIndex", - "offset": 0, - "slot": "106", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:51" - }, - { - "label": "_networkFeeIndexBlockNumber", - "offset": 0, - "slot": "107", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:52" - }, - { - "label": "_networkEarnings", - "offset": 0, - "slot": "108", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:53" - }, - { - "label": "_networkEarningsBlockNumber", - "offset": 0, - "slot": "109", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "label": "_withdrawnFromTreasury", - "offset": 0, - "slot": "110", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:55" - }, - { - "label": "_operatorDatas", - "offset": 0, - "slot": "111", - "type": "t_mapping(t_uint256,t_struct(OperatorData)1150_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:57" - }, - { - "label": "_owners", - "offset": 0, - "slot": "112", - "type": "t_mapping(t_address,t_struct(OwnerData)1167_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:58" - }, - { - "label": "_operatorsInUseByAddress", - "offset": 0, - "slot": "113", - "type": "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)1178_storage))", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:59" - }, - { - "label": "_operatorsInUseList", - "offset": 0, - "slot": "114", - "type": "t_mapping(t_address,t_array(t_uint256)dyn_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:60" - }, - { - "label": "_lastOperatorUpdateNetworkFeeRun", - "offset": 0, - "slot": "115", - "type": "t_mapping(t_uint256,t_uint256)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:61" - }, - { - "label": "_setOperatorFeePeriod", - "offset": 0, - "slot": "116", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:63" - }, - { - "label": "_approveOperatorFeePeriod", - "offset": 0, - "slot": "117", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:64" - }, - { - "label": "_feeChangeRequests", - "offset": 0, - "slot": "118", - "type": "t_mapping(t_uint256,t_struct(FeeChangeRequest)1185_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:65" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_array(t_uint256)dyn_storage": { - "label": "uint256[]", - "numberOfBytes": "32" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_contract(IERC20)299": { - "label": "contract IERC20", - "numberOfBytes": "20" - }, - "t_contract(ISSVRegistry)1126": { - "label": "contract ISSVRegistry", - "numberOfBytes": "20" - }, - "t_mapping(t_address,t_array(t_uint256)dyn_storage)": { - "label": "mapping(address => uint256[])", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)1178_storage))": { - "label": "mapping(address => mapping(uint256 => struct SSVNetwork.OperatorInUse))", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_struct(OwnerData)1167_storage)": { - "label": "mapping(address => struct SSVNetwork.OwnerData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(FeeChangeRequest)1185_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.FeeChangeRequest)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(OperatorData)1150_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(OperatorInUse)1178_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorInUse)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_uint256)": { - "label": "mapping(uint256 => uint256)", - "numberOfBytes": "32" - }, - "t_struct(FeeChangeRequest)1185_storage": { - "label": "struct SSVNetwork.FeeChangeRequest", - "members": [ - { - "label": "fee", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "approvalBeginTime", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "approvalEndTime", - "type": "t_uint256", - "offset": 0, - "slot": "2" - } - ], - "numberOfBytes": "96" - }, - "t_struct(OperatorData)1150_storage": { - "label": "struct SSVNetwork.OperatorData", - "members": [ - { - "label": "blockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "earnings", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "index", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "indexBlockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "4" - }, - { - "label": "previousFee", - "type": "t_uint256", - "offset": 0, - "slot": "5" - } - ], - "numberOfBytes": "192" - }, - "t_struct(OperatorInUse)1178_storage": { - "label": "struct SSVNetwork.OperatorInUse", - "members": [ - { - "label": "index", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "validatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "used", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "exists", - "type": "t_bool", - "offset": 0, - "slot": "3" - }, - { - "label": "indexInArray", - "type": "t_uint256", - "offset": 0, - "slot": "4" - } - ], - "numberOfBytes": "160" - }, - "t_struct(OwnerData)1167_storage": { - "label": "struct SSVNetwork.OwnerData", - "members": [ - { - "label": "deposited", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "withdrawn", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "earned", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "used", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "networkFee", - "type": "t_uint256", - "offset": 0, - "slot": "4" - }, - { - "label": "networkFeeIndex", - "type": "t_uint256", - "offset": 0, - "slot": "5" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "6" - }, - { - "label": "validatorsDisabled", - "type": "t_bool", - "offset": 0, - "slot": "7" - } - ], - "numberOfBytes": "256" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - } - } - } - }, - "7d1a9368cc5dcd817b543e1fc63d509f51bdefb72d14cdebbed9f4e8e030f8f6": { - "address": "0x8a6Ee175dF8E56c1f0D1c00020e389FDb3Fd4f79", - "txHash": "0xd4213cfceaacdda3336bd4a76d214df98a16ba41c2dcb0407afd43951b3f1869", - "layout": { - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:23" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:28" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "label": "_ssvRegistryContract", - "offset": 0, - "slot": "101", - "type": "t_contract(ISSVRegistry)1126", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:45" - }, - { - "label": "_token", - "offset": 0, - "slot": "102", - "type": "t_contract(IERC20)299", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:46" - }, - { - "label": "_minimumBlocksBeforeLiquidation", - "offset": 0, - "slot": "103", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "label": "_operatorMaxFeeIncrease", - "offset": 0, - "slot": "104", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:48" - }, - { - "label": "_networkFee", - "offset": 0, - "slot": "105", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:50" - }, - { - "label": "_networkFeeIndex", - "offset": 0, - "slot": "106", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:51" - }, - { - "label": "_networkFeeIndexBlockNumber", - "offset": 0, - "slot": "107", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:52" - }, - { - "label": "_networkEarnings", - "offset": 0, - "slot": "108", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:53" - }, - { - "label": "_networkEarningsBlockNumber", - "offset": 0, - "slot": "109", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "label": "_withdrawnFromTreasury", - "offset": 0, - "slot": "110", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:55" - }, - { - "label": "_operatorDatas", - "offset": 0, - "slot": "111", - "type": "t_mapping(t_uint256,t_struct(OperatorData)1150_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:57" - }, - { - "label": "_owners", - "offset": 0, - "slot": "112", - "type": "t_mapping(t_address,t_struct(OwnerData)1167_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:58" - }, - { - "label": "_operatorsInUseByAddress", - "offset": 0, - "slot": "113", - "type": "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)1178_storage))", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:59" - }, - { - "label": "_operatorsInUseList", - "offset": 0, - "slot": "114", - "type": "t_mapping(t_address,t_array(t_uint256)dyn_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:60" - }, - { - "label": "_lastOperatorUpdateNetworkFeeRun", - "offset": 0, - "slot": "115", - "type": "t_mapping(t_uint256,t_uint256)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:61" - }, - { - "label": "_setOperatorFeePeriod", - "offset": 0, - "slot": "116", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:63" - }, - { - "label": "_approveOperatorFeePeriod", - "offset": 0, - "slot": "117", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:64" - }, - { - "label": "_feeChangeRequests", - "offset": 0, - "slot": "118", - "type": "t_mapping(t_uint256,t_struct(FeeChangeRequest)1185_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:65" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_array(t_uint256)dyn_storage": { - "label": "uint256[]", - "numberOfBytes": "32" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_contract(IERC20)299": { - "label": "contract IERC20", - "numberOfBytes": "20" - }, - "t_contract(ISSVRegistry)1126": { - "label": "contract ISSVRegistry", - "numberOfBytes": "20" - }, - "t_mapping(t_address,t_array(t_uint256)dyn_storage)": { - "label": "mapping(address => uint256[])", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)1178_storage))": { - "label": "mapping(address => mapping(uint256 => struct SSVNetwork.OperatorInUse))", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_struct(OwnerData)1167_storage)": { - "label": "mapping(address => struct SSVNetwork.OwnerData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(FeeChangeRequest)1185_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.FeeChangeRequest)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(OperatorData)1150_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(OperatorInUse)1178_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorInUse)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_uint256)": { - "label": "mapping(uint256 => uint256)", - "numberOfBytes": "32" - }, - "t_struct(FeeChangeRequest)1185_storage": { - "label": "struct SSVNetwork.FeeChangeRequest", - "members": [ - { - "label": "fee", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "approvalBeginTime", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "approvalEndTime", - "type": "t_uint256", - "offset": 0, - "slot": "2" - } - ], - "numberOfBytes": "96" - }, - "t_struct(OperatorData)1150_storage": { - "label": "struct SSVNetwork.OperatorData", - "members": [ - { - "label": "blockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "earnings", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "index", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "indexBlockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "4" - }, - { - "label": "previousFee", - "type": "t_uint256", - "offset": 0, - "slot": "5" - } - ], - "numberOfBytes": "192" - }, - "t_struct(OperatorInUse)1178_storage": { - "label": "struct SSVNetwork.OperatorInUse", - "members": [ - { - "label": "index", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "validatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "used", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "exists", - "type": "t_bool", - "offset": 0, - "slot": "3" - }, - { - "label": "indexInArray", - "type": "t_uint256", - "offset": 0, - "slot": "4" - } - ], - "numberOfBytes": "160" - }, - "t_struct(OwnerData)1167_storage": { - "label": "struct SSVNetwork.OwnerData", - "members": [ - { - "label": "deposited", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "withdrawn", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "earned", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "used", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "networkFee", - "type": "t_uint256", - "offset": 0, - "slot": "4" - }, - { - "label": "networkFeeIndex", - "type": "t_uint256", - "offset": 0, - "slot": "5" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "6" - }, - { - "label": "validatorsDisabled", - "type": "t_bool", - "offset": 0, - "slot": "7" - } - ], - "numberOfBytes": "256" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - } - } - } - }, - "4e10568edeb06c4e775550a6e1cd2c99741ab55bbc066fa01cf302570382e5d2": { - "address": "0xf3A44208173fdd619a1562797aAEa501F77f1406", - "txHash": "0x35afd4a6e30b80a691d95d2212406002f2194a3a37e2081f7505469099965286", - "layout": { - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:23" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:28" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "label": "_ssvRegistryContract", - "offset": 0, - "slot": "101", - "type": "t_contract(ISSVRegistry)1126", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:45" - }, - { - "label": "_token", - "offset": 0, - "slot": "102", - "type": "t_contract(IERC20)299", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:46" - }, - { - "label": "_minimumBlocksBeforeLiquidation", - "offset": 0, - "slot": "103", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "label": "_operatorMaxFeeIncrease", - "offset": 0, - "slot": "104", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:48" - }, - { - "label": "_networkFee", - "offset": 0, - "slot": "105", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:50" - }, - { - "label": "_networkFeeIndex", - "offset": 0, - "slot": "106", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:51" - }, - { - "label": "_networkFeeIndexBlockNumber", - "offset": 0, - "slot": "107", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:52" - }, - { - "label": "_networkEarnings", - "offset": 0, - "slot": "108", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:53" - }, - { - "label": "_networkEarningsBlockNumber", - "offset": 0, - "slot": "109", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "label": "_withdrawnFromTreasury", - "offset": 0, - "slot": "110", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:55" - }, - { - "label": "_operatorDatas", - "offset": 0, - "slot": "111", - "type": "t_mapping(t_uint256,t_struct(OperatorData)1150_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:57" - }, - { - "label": "_owners", - "offset": 0, - "slot": "112", - "type": "t_mapping(t_address,t_struct(OwnerData)1167_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:58" - }, - { - "label": "_operatorsInUseByAddress", - "offset": 0, - "slot": "113", - "type": "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)1178_storage))", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:59" - }, - { - "label": "_operatorsInUseList", - "offset": 0, - "slot": "114", - "type": "t_mapping(t_address,t_array(t_uint256)dyn_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:60" - }, - { - "label": "_lastOperatorUpdateNetworkFeeRun", - "offset": 0, - "slot": "115", - "type": "t_mapping(t_uint256,t_uint256)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:61" - }, - { - "label": "_setOperatorFeePeriod", - "offset": 0, - "slot": "116", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:63" - }, - { - "label": "_approveOperatorFeePeriod", - "offset": 0, - "slot": "117", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:64" - }, - { - "label": "_feeChangeRequests", - "offset": 0, - "slot": "118", - "type": "t_mapping(t_uint256,t_struct(FeeChangeRequest)1185_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:65" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_array(t_uint256)dyn_storage": { - "label": "uint256[]", - "numberOfBytes": "32" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_contract(IERC20)299": { - "label": "contract IERC20", - "numberOfBytes": "20" - }, - "t_contract(ISSVRegistry)1126": { - "label": "contract ISSVRegistry", - "numberOfBytes": "20" - }, - "t_mapping(t_address,t_array(t_uint256)dyn_storage)": { - "label": "mapping(address => uint256[])", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)1178_storage))": { - "label": "mapping(address => mapping(uint256 => struct SSVNetwork.OperatorInUse))", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_struct(OwnerData)1167_storage)": { - "label": "mapping(address => struct SSVNetwork.OwnerData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(FeeChangeRequest)1185_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.FeeChangeRequest)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(OperatorData)1150_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(OperatorInUse)1178_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorInUse)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_uint256)": { - "label": "mapping(uint256 => uint256)", - "numberOfBytes": "32" - }, - "t_struct(FeeChangeRequest)1185_storage": { - "label": "struct SSVNetwork.FeeChangeRequest", - "members": [ - { - "label": "fee", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "approvalBeginTime", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "approvalEndTime", - "type": "t_uint256", - "offset": 0, - "slot": "2" - } - ], - "numberOfBytes": "96" - }, - "t_struct(OperatorData)1150_storage": { - "label": "struct SSVNetwork.OperatorData", - "members": [ - { - "label": "blockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "earnings", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "index", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "indexBlockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "4" - }, - { - "label": "previousFee", - "type": "t_uint256", - "offset": 0, - "slot": "5" - } - ], - "numberOfBytes": "192" - }, - "t_struct(OperatorInUse)1178_storage": { - "label": "struct SSVNetwork.OperatorInUse", - "members": [ - { - "label": "index", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "validatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "used", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "exists", - "type": "t_bool", - "offset": 0, - "slot": "3" - }, - { - "label": "indexInArray", - "type": "t_uint256", - "offset": 0, - "slot": "4" - } - ], - "numberOfBytes": "160" - }, - "t_struct(OwnerData)1167_storage": { - "label": "struct SSVNetwork.OwnerData", - "members": [ - { - "label": "deposited", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "withdrawn", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "earned", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "used", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "networkFee", - "type": "t_uint256", - "offset": 0, - "slot": "4" - }, - { - "label": "networkFeeIndex", - "type": "t_uint256", - "offset": 0, - "slot": "5" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "6" - }, - { - "label": "validatorsDisabled", - "type": "t_bool", - "offset": 0, - "slot": "7" - } - ], - "numberOfBytes": "256" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - } - } - } - }, - "3c778a272794844b8c2622153b831ab8ba9bb34a7159048b1c91221e187085b9": { - "address": "0xb3Ce54B832acDE442349d6D4F9A80b0671e5759F", - "txHash": "0xc592ecfc5aab8b5da23f211dc5c3fee483866e918d5b0aee098c777ca2872a29", - "layout": { - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:23" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:28" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "label": "_activeValidatorCount", - "offset": 0, - "slot": "101", - "type": "t_uint256", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:38" - }, - { - "label": "_lastOperatorId", - "offset": 0, - "slot": "102", - "type": "t_struct(Counter)1003_storage", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:40" - }, - { - "label": "_operators", - "offset": 0, - "slot": "103", - "type": "t_mapping(t_uint256,t_struct(Operator)4704_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:42" - }, - { - "label": "_validators", - "offset": 0, - "slot": "104", - "type": "t_mapping(t_bytes_memory_ptr,t_struct(Validator)4714_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:43" - }, - { - "label": "_operatorFees", - "offset": 0, - "slot": "105", - "type": "t_mapping(t_uint256,t_array(t_struct(OperatorFee)4719_storage)dyn_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:44" - }, - { - "label": "_operatorsByOwnerAddress", - "offset": 0, - "slot": "106", - "type": "t_mapping(t_address,t_array(t_uint256)dyn_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:46" - }, - { - "label": "_validatorsByOwnerAddress", - "offset": 0, - "slot": "107", - "type": "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:47" - }, - { - "label": "_owners", - "offset": 0, - "slot": "108", - "type": "t_mapping(t_address,t_struct(OwnerData)4724_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:48" - }, - { - "label": "validatorsPerOperator", - "offset": 0, - "slot": "109", - "type": "t_mapping(t_uint256,t_uint256)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:50" - }, - { - "label": "validatorsPerOperatorLimit", - "offset": 0, - "slot": "110", - "type": "t_uint256", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:51" - }, - { - "label": "_operatorPublicKeyToId", - "offset": 0, - "slot": "111", - "type": "t_mapping(t_bytes_memory_ptr,t_uint256)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:52" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_bytes_storage)dyn_storage": { - "label": "bytes[]", - "numberOfBytes": "32" - }, - "t_array(t_struct(OperatorFee)4719_storage)dyn_storage": { - "label": "struct SSVRegistry.OperatorFee[]", - "numberOfBytes": "32" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_array(t_uint256)dyn_storage": { - "label": "uint256[]", - "numberOfBytes": "32" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_bytes_memory_ptr": { - "label": "bytes", - "numberOfBytes": "32" - }, - "t_bytes_storage": { - "label": "bytes", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)": { - "label": "mapping(address => bytes[])", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_array(t_uint256)dyn_storage)": { - "label": "mapping(address => uint256[])", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_struct(OwnerData)4724_storage)": { - "label": "mapping(address => struct SSVRegistry.OwnerData)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes_memory_ptr,t_struct(Validator)4714_storage)": { - "label": "mapping(bytes => struct SSVRegistry.Validator)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes_memory_ptr,t_uint256)": { - "label": "mapping(bytes => uint256)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_array(t_struct(OperatorFee)4719_storage)dyn_storage)": { - "label": "mapping(uint256 => struct SSVRegistry.OperatorFee[])", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(Operator)4704_storage)": { - "label": "mapping(uint256 => struct SSVRegistry.Operator)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_uint256)": { - "label": "mapping(uint256 => uint256)", - "numberOfBytes": "32" - }, - "t_string_storage": { - "label": "string", - "numberOfBytes": "32" - }, - "t_struct(Counter)1003_storage": { - "label": "struct Counters.Counter", - "members": [ - { - "label": "_value", - "type": "t_uint256", - "offset": 0, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Operator)4704_storage": { - "label": "struct SSVRegistry.Operator", - "members": [ - { - "label": "name", - "type": "t_string_storage", - "offset": 0, - "slot": "0" - }, - { - "label": "ownerAddress", - "type": "t_address", - "offset": 0, - "slot": "1" - }, - { - "label": "publicKey", - "type": "t_bytes_storage", - "offset": 0, - "slot": "2" - }, - { - "label": "score", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "active", - "type": "t_bool", - "offset": 0, - "slot": "4" - }, - { - "label": "indexInOwner", - "type": "t_uint256", - "offset": 0, - "slot": "5" - } - ], - "numberOfBytes": "192" - }, - "t_struct(OperatorFee)4719_storage": { - "label": "struct SSVRegistry.OperatorFee", - "members": [ - { - "label": "blockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "fee", - "type": "t_uint256", - "offset": 0, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_struct(OwnerData)4724_storage": { - "label": "struct SSVRegistry.OwnerData", - "members": [ - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "validatorsDisabled", - "type": "t_bool", - "offset": 0, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_struct(Validator)4714_storage": { - "label": "struct SSVRegistry.Validator", - "members": [ - { - "label": "ownerAddress", - "type": "t_address", - "offset": 0, - "slot": "0" - }, - { - "label": "operatorIds", - "type": "t_array(t_uint256)dyn_storage", - "offset": 0, - "slot": "1" - }, - { - "label": "active", - "type": "t_bool", - "offset": 0, - "slot": "2" - }, - { - "label": "indexInOwner", - "type": "t_uint256", - "offset": 0, - "slot": "3" - } - ], - "numberOfBytes": "128" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - } - } - } - }, - "d4b4ef97a578fb99837166abcb29522ddbeb7da64c3d557e6a32652e3e47021a": { - "address": "0x16f1fEd6b86Ef0546ba787f8798441E27EFDC131", - "txHash": "0x41a6715bd438d181c38a96e141dc3f5622588826e145de2d2a74e25d2e587468", - "layout": { - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:23" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:28" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "label": "_ssvRegistryContract", - "offset": 0, - "slot": "101", - "type": "t_contract(ISSVRegistry)1930", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:45" - }, - { - "label": "_token", - "offset": 0, - "slot": "102", - "type": "t_contract(IERC20)950", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:46" - }, - { - "label": "_minimumBlocksBeforeLiquidation", - "offset": 0, - "slot": "103", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "label": "_operatorMaxFeeIncrease", - "offset": 0, - "slot": "104", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:48" - }, - { - "label": "_networkFee", - "offset": 0, - "slot": "105", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:50" - }, - { - "label": "_networkFeeIndex", - "offset": 0, - "slot": "106", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:51" - }, - { - "label": "_networkFeeIndexBlockNumber", - "offset": 0, - "slot": "107", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:52" - }, - { - "label": "_networkEarnings", - "offset": 0, - "slot": "108", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:53" - }, - { - "label": "_networkEarningsBlockNumber", - "offset": 0, - "slot": "109", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "label": "_withdrawnFromTreasury", - "offset": 0, - "slot": "110", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:55" - }, - { - "label": "_operatorDatas", - "offset": 0, - "slot": "111", - "type": "t_mapping(t_uint256,t_struct(OperatorData)1954_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:57" - }, - { - "label": "_owners", - "offset": 0, - "slot": "112", - "type": "t_mapping(t_address,t_struct(OwnerData)1971_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:58" - }, - { - "label": "_operatorsInUseByAddress", - "offset": 0, - "slot": "113", - "type": "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)1982_storage))", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:59" - }, - { - "label": "_operatorsInUseList", - "offset": 0, - "slot": "114", - "type": "t_mapping(t_address,t_array(t_uint256)dyn_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:60" - }, - { - "label": "_lastOperatorUpdateNetworkFeeRun", - "offset": 0, - "slot": "115", - "type": "t_mapping(t_uint256,t_uint256)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:61" - }, - { - "label": "_setOperatorFeePeriod", - "offset": 0, - "slot": "116", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:63" - }, - { - "label": "_approveOperatorFeePeriod", - "offset": 0, - "slot": "117", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:64" - }, - { - "label": "_feeChangeRequests", - "offset": 0, - "slot": "118", - "type": "t_mapping(t_uint256,t_struct(FeeChangeRequest)1989_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:65" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_array(t_uint256)dyn_storage": { - "label": "uint256[]", - "numberOfBytes": "32" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_contract(IERC20)950": { - "label": "contract IERC20", - "numberOfBytes": "20" - }, - "t_contract(ISSVRegistry)1930": { - "label": "contract ISSVRegistry", - "numberOfBytes": "20" - }, - "t_mapping(t_address,t_array(t_uint256)dyn_storage)": { - "label": "mapping(address => uint256[])", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)1982_storage))": { - "label": "mapping(address => mapping(uint256 => struct SSVNetwork.OperatorInUse))", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_struct(OwnerData)1971_storage)": { - "label": "mapping(address => struct SSVNetwork.OwnerData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(FeeChangeRequest)1989_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.FeeChangeRequest)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(OperatorData)1954_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(OperatorInUse)1982_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorInUse)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_uint256)": { - "label": "mapping(uint256 => uint256)", - "numberOfBytes": "32" - }, - "t_struct(FeeChangeRequest)1989_storage": { - "label": "struct SSVNetwork.FeeChangeRequest", - "members": [ - { - "label": "fee", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "approvalBeginTime", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "approvalEndTime", - "type": "t_uint256", - "offset": 0, - "slot": "2" - } - ], - "numberOfBytes": "96" - }, - "t_struct(OperatorData)1954_storage": { - "label": "struct SSVNetwork.OperatorData", - "members": [ - { - "label": "blockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "earnings", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "index", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "indexBlockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "4" - }, - { - "label": "previousFee", - "type": "t_uint256", - "offset": 0, - "slot": "5" - } - ], - "numberOfBytes": "192" - }, - "t_struct(OperatorInUse)1982_storage": { - "label": "struct SSVNetwork.OperatorInUse", - "members": [ - { - "label": "index", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "validatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "used", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "exists", - "type": "t_bool", - "offset": 0, - "slot": "3" - }, - { - "label": "indexInArray", - "type": "t_uint256", - "offset": 0, - "slot": "4" - } - ], - "numberOfBytes": "160" - }, - "t_struct(OwnerData)1971_storage": { - "label": "struct SSVNetwork.OwnerData", - "members": [ - { - "label": "deposited", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "withdrawn", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "earned", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "used", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "networkFee", - "type": "t_uint256", - "offset": 0, - "slot": "4" - }, - { - "label": "networkFeeIndex", - "type": "t_uint256", - "offset": 0, - "slot": "5" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "6" - }, - { - "label": "validatorsDisabled", - "type": "t_bool", - "offset": 0, - "slot": "7" - } - ], - "numberOfBytes": "256" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - } - } - } - }, - "2d779870a5a68b62a448777dae896b376aeb98e4402ddef38d046dd512e379f0": { - "address": "0x1E529C5e476Db0C53187BfDcaD17a88b5004e4bd", - "txHash": "0xa28edc8e14da8408acfbcae74e6680c40782c4cd0e91ff0282b96f529506a0ac", - "layout": { - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:23" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:28" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "label": "_ssvRegistryContract", - "offset": 0, - "slot": "101", - "type": "t_contract(ISSVRegistry)1158", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:45" - }, - { - "label": "_token", - "offset": 0, - "slot": "102", - "type": "t_contract(IERC20)299", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:46" - }, - { - "label": "_minimumBlocksBeforeLiquidation", - "offset": 0, - "slot": "103", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "label": "_operatorMaxFeeIncrease", - "offset": 0, - "slot": "104", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:48" - }, - { - "label": "_networkFee", - "offset": 0, - "slot": "105", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:50" - }, - { - "label": "_networkFeeIndex", - "offset": 0, - "slot": "106", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:51" - }, - { - "label": "_networkFeeIndexBlockNumber", - "offset": 0, - "slot": "107", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:52" - }, - { - "label": "_networkEarnings", - "offset": 0, - "slot": "108", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:53" - }, - { - "label": "_networkEarningsBlockNumber", - "offset": 0, - "slot": "109", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "label": "_withdrawnFromTreasury", - "offset": 0, - "slot": "110", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:55" - }, - { - "label": "_operatorDatas", - "offset": 0, - "slot": "111", - "type": "t_mapping(t_uint256,t_struct(OperatorData)1182_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:57" - }, - { - "label": "_owners", - "offset": 0, - "slot": "112", - "type": "t_mapping(t_address,t_struct(OwnerData)1199_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:58" - }, - { - "label": "_operatorsInUseByAddress", - "offset": 0, - "slot": "113", - "type": "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)1210_storage))", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:59" - }, - { - "label": "_operatorsInUseList", - "offset": 0, - "slot": "114", - "type": "t_mapping(t_address,t_array(t_uint256)dyn_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:60" - }, - { - "label": "_lastOperatorUpdateNetworkFeeRun", - "offset": 0, - "slot": "115", - "type": "t_mapping(t_uint256,t_uint256)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:61" - }, - { - "label": "_setOperatorFeePeriod", - "offset": 0, - "slot": "116", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:63" - }, - { - "label": "_approveOperatorFeePeriod", - "offset": 0, - "slot": "117", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:64" - }, - { - "label": "_feeChangeRequests", - "offset": 0, - "slot": "118", - "type": "t_mapping(t_uint256,t_struct(FeeChangeRequest)1217_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:65" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_array(t_uint256)dyn_storage": { - "label": "uint256[]", - "numberOfBytes": "32" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_contract(IERC20)299": { - "label": "contract IERC20", - "numberOfBytes": "20" - }, - "t_contract(ISSVRegistry)1158": { - "label": "contract ISSVRegistry", - "numberOfBytes": "20" - }, - "t_mapping(t_address,t_array(t_uint256)dyn_storage)": { - "label": "mapping(address => uint256[])", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)1210_storage))": { - "label": "mapping(address => mapping(uint256 => struct SSVNetwork.OperatorInUse))", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_struct(OwnerData)1199_storage)": { - "label": "mapping(address => struct SSVNetwork.OwnerData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(FeeChangeRequest)1217_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.FeeChangeRequest)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(OperatorData)1182_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(OperatorInUse)1210_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorInUse)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_uint256)": { - "label": "mapping(uint256 => uint256)", - "numberOfBytes": "32" - }, - "t_struct(FeeChangeRequest)1217_storage": { - "label": "struct SSVNetwork.FeeChangeRequest", - "members": [ - { - "label": "fee", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "approvalBeginTime", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "approvalEndTime", - "type": "t_uint256", - "offset": 0, - "slot": "2" - } - ], - "numberOfBytes": "96" - }, - "t_struct(OperatorData)1182_storage": { - "label": "struct SSVNetwork.OperatorData", - "members": [ - { - "label": "blockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "earnings", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "index", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "indexBlockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "4" - }, - { - "label": "previousFee", - "type": "t_uint256", - "offset": 0, - "slot": "5" - } - ], - "numberOfBytes": "192" - }, - "t_struct(OperatorInUse)1210_storage": { - "label": "struct SSVNetwork.OperatorInUse", - "members": [ - { - "label": "index", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "validatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "used", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "exists", - "type": "t_bool", - "offset": 0, - "slot": "3" - }, - { - "label": "indexInArray", - "type": "t_uint256", - "offset": 0, - "slot": "4" - } - ], - "numberOfBytes": "160" - }, - "t_struct(OwnerData)1199_storage": { - "label": "struct SSVNetwork.OwnerData", - "members": [ - { - "label": "deposited", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "withdrawn", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "earned", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "used", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "networkFee", - "type": "t_uint256", - "offset": 0, - "slot": "4" - }, - { - "label": "networkFeeIndex", - "type": "t_uint256", - "offset": 0, - "slot": "5" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "6" - }, - { - "label": "validatorsDisabled", - "type": "t_bool", - "offset": 0, - "slot": "7" - } - ], - "numberOfBytes": "256" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - } - } - } - }, - "f557f63bcbc898781de3d29c33c5f1afbfe1361bbdbfbe23ee7a2f269f484925": { - "address": "0xdE11D8AEb1a6cD2B3a9bDcf6Ec696512FAcf6720", - "txHash": "0x22e53cba7c190110ae87455601ea6cf5e5cfc2291d548e34e538a848da0628e3", - "layout": { - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:23" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:28" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "label": "_ssvRegistryContract", - "offset": 0, - "slot": "101", - "type": "t_contract(ISSVRegistry)1166", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:45" - }, - { - "label": "_token", - "offset": 0, - "slot": "102", - "type": "t_contract(IERC20)299", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:46" - }, - { - "label": "_minimumBlocksBeforeLiquidation", - "offset": 0, - "slot": "103", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "label": "_operatorMaxFeeIncrease", - "offset": 0, - "slot": "104", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:48" - }, - { - "label": "_networkFee", - "offset": 0, - "slot": "105", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:50" - }, - { - "label": "_networkFeeIndex", - "offset": 0, - "slot": "106", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:51" - }, - { - "label": "_networkFeeIndexBlockNumber", - "offset": 0, - "slot": "107", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:52" - }, - { - "label": "_networkEarnings", - "offset": 0, - "slot": "108", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:53" - }, - { - "label": "_networkEarningsBlockNumber", - "offset": 0, - "slot": "109", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "label": "_withdrawnFromTreasury", - "offset": 0, - "slot": "110", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:55" - }, - { - "label": "_operatorDatas", - "offset": 0, - "slot": "111", - "type": "t_mapping(t_uint256,t_struct(OperatorData)1190_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:57" - }, - { - "label": "_owners", - "offset": 0, - "slot": "112", - "type": "t_mapping(t_address,t_struct(OwnerData)1207_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:58" - }, - { - "label": "_operatorsInUseByAddress", - "offset": 0, - "slot": "113", - "type": "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)1218_storage))", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:59" - }, - { - "label": "_operatorsInUseList", - "offset": 0, - "slot": "114", - "type": "t_mapping(t_address,t_array(t_uint256)dyn_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:60" - }, - { - "label": "_lastOperatorUpdateNetworkFeeRun", - "offset": 0, - "slot": "115", - "type": "t_mapping(t_uint256,t_uint256)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:61" - }, - { - "label": "_setOperatorFeePeriod", - "offset": 0, - "slot": "116", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:63" - }, - { - "label": "_approveOperatorFeePeriod", - "offset": 0, - "slot": "117", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:64" - }, - { - "label": "_feeChangeRequests", - "offset": 0, - "slot": "118", - "type": "t_mapping(t_uint256,t_struct(FeeChangeRequest)1225_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:65" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_array(t_uint256)dyn_storage": { - "label": "uint256[]", - "numberOfBytes": "32" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_contract(IERC20)299": { - "label": "contract IERC20", - "numberOfBytes": "20" - }, - "t_contract(ISSVRegistry)1166": { - "label": "contract ISSVRegistry", - "numberOfBytes": "20" - }, - "t_mapping(t_address,t_array(t_uint256)dyn_storage)": { - "label": "mapping(address => uint256[])", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)1218_storage))": { - "label": "mapping(address => mapping(uint256 => struct SSVNetwork.OperatorInUse))", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_struct(OwnerData)1207_storage)": { - "label": "mapping(address => struct SSVNetwork.OwnerData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(FeeChangeRequest)1225_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.FeeChangeRequest)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(OperatorData)1190_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(OperatorInUse)1218_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorInUse)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_uint256)": { - "label": "mapping(uint256 => uint256)", - "numberOfBytes": "32" - }, - "t_struct(FeeChangeRequest)1225_storage": { - "label": "struct SSVNetwork.FeeChangeRequest", - "members": [ - { - "label": "fee", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "approvalBeginTime", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "approvalEndTime", - "type": "t_uint256", - "offset": 0, - "slot": "2" - } - ], - "numberOfBytes": "96" - }, - "t_struct(OperatorData)1190_storage": { - "label": "struct SSVNetwork.OperatorData", - "members": [ - { - "label": "blockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "earnings", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "index", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "indexBlockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "4" - }, - { - "label": "previousFee", - "type": "t_uint256", - "offset": 0, - "slot": "5" - } - ], - "numberOfBytes": "192" - }, - "t_struct(OperatorInUse)1218_storage": { - "label": "struct SSVNetwork.OperatorInUse", - "members": [ - { - "label": "index", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "validatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "used", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "exists", - "type": "t_bool", - "offset": 0, - "slot": "3" - }, - { - "label": "indexInArray", - "type": "t_uint256", - "offset": 0, - "slot": "4" - } - ], - "numberOfBytes": "160" - }, - "t_struct(OwnerData)1207_storage": { - "label": "struct SSVNetwork.OwnerData", - "members": [ - { - "label": "deposited", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "withdrawn", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "earned", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "used", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "networkFee", - "type": "t_uint256", - "offset": 0, - "slot": "4" - }, - { - "label": "networkFeeIndex", - "type": "t_uint256", - "offset": 0, - "slot": "5" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "6" - }, - { - "label": "validatorsDisabled", - "type": "t_bool", - "offset": 0, - "slot": "7" - } - ], - "numberOfBytes": "256" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - } - } - } - }, - "ae5984ead891d2e47210c2ff576be6f5a5f98ca46f06a86a9a6ca9733e061446": { - "address": "0x2634AFF73b6014A62ceC667e809255E6a46624A4", - "txHash": "0x8979f4c4c3e3ce142154070dde554d6f617ed823c498a8363bc64f5822b39a1e", - "layout": { - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:23" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:28" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "label": "_ssvRegistryContract", - "offset": 0, - "slot": "101", - "type": "t_contract(ISSVRegistry)1938", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:45" - }, - { - "label": "_token", - "offset": 0, - "slot": "102", - "type": "t_contract(IERC20)950", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:46" - }, - { - "label": "_minimumBlocksBeforeLiquidation", - "offset": 0, - "slot": "103", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "label": "_operatorMaxFeeIncrease", - "offset": 0, - "slot": "104", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:48" - }, - { - "label": "_networkFee", - "offset": 0, - "slot": "105", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:50" - }, - { - "label": "_networkFeeIndex", - "offset": 0, - "slot": "106", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:51" - }, - { - "label": "_networkFeeIndexBlockNumber", - "offset": 0, - "slot": "107", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:52" - }, - { - "label": "_networkEarnings", - "offset": 0, - "slot": "108", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:53" - }, - { - "label": "_networkEarningsBlockNumber", - "offset": 0, - "slot": "109", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "label": "_withdrawnFromTreasury", - "offset": 0, - "slot": "110", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:55" - }, - { - "label": "_operatorDatas", - "offset": 0, - "slot": "111", - "type": "t_mapping(t_uint256,t_struct(OperatorData)1962_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:57" - }, - { - "label": "_owners", - "offset": 0, - "slot": "112", - "type": "t_mapping(t_address,t_struct(OwnerData)1979_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:58" - }, - { - "label": "_operatorsInUseByAddress", - "offset": 0, - "slot": "113", - "type": "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)1990_storage))", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:59" - }, - { - "label": "_operatorsInUseList", - "offset": 0, - "slot": "114", - "type": "t_mapping(t_address,t_array(t_uint256)dyn_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:60" - }, - { - "label": "_lastOperatorUpdateNetworkFeeRun", - "offset": 0, - "slot": "115", - "type": "t_mapping(t_uint256,t_uint256)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:61" - }, - { - "label": "_setOperatorFeePeriod", - "offset": 0, - "slot": "116", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:63" - }, - { - "label": "_approveOperatorFeePeriod", - "offset": 0, - "slot": "117", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:64" - }, - { - "label": "_feeChangeRequests", - "offset": 0, - "slot": "118", - "type": "t_mapping(t_uint256,t_struct(FeeChangeRequest)1997_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:65" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_array(t_uint256)dyn_storage": { - "label": "uint256[]", - "numberOfBytes": "32" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_contract(IERC20)950": { - "label": "contract IERC20", - "numberOfBytes": "20" - }, - "t_contract(ISSVRegistry)1938": { - "label": "contract ISSVRegistry", - "numberOfBytes": "20" - }, - "t_mapping(t_address,t_array(t_uint256)dyn_storage)": { - "label": "mapping(address => uint256[])", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)1990_storage))": { - "label": "mapping(address => mapping(uint256 => struct SSVNetwork.OperatorInUse))", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_struct(OwnerData)1979_storage)": { - "label": "mapping(address => struct SSVNetwork.OwnerData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(FeeChangeRequest)1997_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.FeeChangeRequest)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(OperatorData)1962_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(OperatorInUse)1990_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorInUse)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_uint256)": { - "label": "mapping(uint256 => uint256)", - "numberOfBytes": "32" - }, - "t_struct(FeeChangeRequest)1997_storage": { - "label": "struct SSVNetwork.FeeChangeRequest", - "members": [ - { - "label": "fee", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "approvalBeginTime", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "approvalEndTime", - "type": "t_uint256", - "offset": 0, - "slot": "2" - } - ], - "numberOfBytes": "96" - }, - "t_struct(OperatorData)1962_storage": { - "label": "struct SSVNetwork.OperatorData", - "members": [ - { - "label": "blockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "earnings", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "index", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "indexBlockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "4" - }, - { - "label": "previousFee", - "type": "t_uint256", - "offset": 0, - "slot": "5" - } - ], - "numberOfBytes": "192" - }, - "t_struct(OperatorInUse)1990_storage": { - "label": "struct SSVNetwork.OperatorInUse", - "members": [ - { - "label": "index", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "validatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "used", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "exists", - "type": "t_bool", - "offset": 0, - "slot": "3" - }, - { - "label": "indexInArray", - "type": "t_uint256", - "offset": 0, - "slot": "4" - } - ], - "numberOfBytes": "160" - }, - "t_struct(OwnerData)1979_storage": { - "label": "struct SSVNetwork.OwnerData", - "members": [ - { - "label": "deposited", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "withdrawn", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "earned", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "used", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "networkFee", - "type": "t_uint256", - "offset": 0, - "slot": "4" - }, - { - "label": "networkFeeIndex", - "type": "t_uint256", - "offset": 0, - "slot": "5" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "6" - }, - { - "label": "validatorsDisabled", - "type": "t_bool", - "offset": 0, - "slot": "7" - } - ], - "numberOfBytes": "256" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - } - } - } - }, - "7fef33eab0d91be88e51726ebbd6ae0d932b9f362e0a0debd5da2c346d8bab48": { - "address": "0x3C49c1012999585146128997B5bB5B9286cb0fa0", - "txHash": "0x54334f3029071b9b0a9db816fb5f1d8066929b64ced10623c3372add45755e87", - "layout": { - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:23" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:28" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "label": "_ssvRegistryContract", - "offset": 0, - "slot": "101", - "type": "t_contract(ISSVRegistry)1938", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:45" - }, - { - "label": "_token", - "offset": 0, - "slot": "102", - "type": "t_contract(IERC20)950", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:46" - }, - { - "label": "_minimumBlocksBeforeLiquidation", - "offset": 0, - "slot": "103", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "label": "_operatorMaxFeeIncrease", - "offset": 0, - "slot": "104", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:48" - }, - { - "label": "_networkFee", - "offset": 0, - "slot": "105", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:50" - }, - { - "label": "_networkFeeIndex", - "offset": 0, - "slot": "106", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:51" - }, - { - "label": "_networkFeeIndexBlockNumber", - "offset": 0, - "slot": "107", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:52" - }, - { - "label": "_networkEarnings", - "offset": 0, - "slot": "108", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:53" - }, - { - "label": "_networkEarningsBlockNumber", - "offset": 0, - "slot": "109", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "label": "_withdrawnFromTreasury", - "offset": 0, - "slot": "110", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:55" - }, - { - "label": "_operatorDatas", - "offset": 0, - "slot": "111", - "type": "t_mapping(t_uint256,t_struct(OperatorData)1962_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:57" - }, - { - "label": "_owners", - "offset": 0, - "slot": "112", - "type": "t_mapping(t_address,t_struct(OwnerData)1979_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:58" - }, - { - "label": "_operatorsInUseByAddress", - "offset": 0, - "slot": "113", - "type": "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)1990_storage))", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:59" - }, - { - "label": "_operatorsInUseList", - "offset": 0, - "slot": "114", - "type": "t_mapping(t_address,t_array(t_uint256)dyn_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:60" - }, - { - "label": "_lastOperatorUpdateNetworkFeeRun", - "offset": 0, - "slot": "115", - "type": "t_mapping(t_uint256,t_uint256)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:61" - }, - { - "label": "_setOperatorFeePeriod", - "offset": 0, - "slot": "116", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:63" - }, - { - "label": "_approveOperatorFeePeriod", - "offset": 0, - "slot": "117", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:64" - }, - { - "label": "_feeChangeRequests", - "offset": 0, - "slot": "118", - "type": "t_mapping(t_uint256,t_struct(FeeChangeRequest)1997_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:65" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_array(t_uint256)dyn_storage": { - "label": "uint256[]", - "numberOfBytes": "32" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_contract(IERC20)950": { - "label": "contract IERC20", - "numberOfBytes": "20" - }, - "t_contract(ISSVRegistry)1938": { - "label": "contract ISSVRegistry", - "numberOfBytes": "20" - }, - "t_mapping(t_address,t_array(t_uint256)dyn_storage)": { - "label": "mapping(address => uint256[])", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)1990_storage))": { - "label": "mapping(address => mapping(uint256 => struct SSVNetwork.OperatorInUse))", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_struct(OwnerData)1979_storage)": { - "label": "mapping(address => struct SSVNetwork.OwnerData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(FeeChangeRequest)1997_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.FeeChangeRequest)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(OperatorData)1962_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(OperatorInUse)1990_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorInUse)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_uint256)": { - "label": "mapping(uint256 => uint256)", - "numberOfBytes": "32" - }, - "t_struct(FeeChangeRequest)1997_storage": { - "label": "struct SSVNetwork.FeeChangeRequest", - "members": [ - { - "label": "fee", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "approvalBeginTime", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "approvalEndTime", - "type": "t_uint256", - "offset": 0, - "slot": "2" - } - ], - "numberOfBytes": "96" - }, - "t_struct(OperatorData)1962_storage": { - "label": "struct SSVNetwork.OperatorData", - "members": [ - { - "label": "blockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "earnings", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "index", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "indexBlockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "4" - }, - { - "label": "previousFee", - "type": "t_uint256", - "offset": 0, - "slot": "5" - } - ], - "numberOfBytes": "192" - }, - "t_struct(OperatorInUse)1990_storage": { - "label": "struct SSVNetwork.OperatorInUse", - "members": [ - { - "label": "index", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "validatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "used", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "exists", - "type": "t_bool", - "offset": 0, - "slot": "3" - }, - { - "label": "indexInArray", - "type": "t_uint256", - "offset": 0, - "slot": "4" - } - ], - "numberOfBytes": "160" - }, - "t_struct(OwnerData)1979_storage": { - "label": "struct SSVNetwork.OwnerData", - "members": [ - { - "label": "deposited", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "withdrawn", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "earned", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "used", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "networkFee", - "type": "t_uint256", - "offset": 0, - "slot": "4" - }, - { - "label": "networkFeeIndex", - "type": "t_uint256", - "offset": 0, - "slot": "5" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "6" - }, - { - "label": "validatorsDisabled", - "type": "t_bool", - "offset": 0, - "slot": "7" - } - ], - "numberOfBytes": "256" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - } - } - } - }, - "663fd14399d5bfddd3523019121a39f05b3fd11298546abddae0db8777ec295f": { - "address": "0x168F3BE1cfEf7AA432E0F8C2d157Af7c4EFe592C", - "txHash": "0xe5aa3e1a5b170f5479d22538a5ae1528631e590a9101bea7de6bc7a2564b6f4c", - "layout": { - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:23" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:28" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "label": "_ssvRegistryContract", - "offset": 0, - "slot": "101", - "type": "t_contract(ISSVRegistry)1938", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:45" - }, - { - "label": "_token", - "offset": 0, - "slot": "102", - "type": "t_contract(IERC20)950", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:46" - }, - { - "label": "_minimumBlocksBeforeLiquidation", - "offset": 0, - "slot": "103", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "label": "_operatorMaxFeeIncrease", - "offset": 0, - "slot": "104", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:48" - }, - { - "label": "_networkFee", - "offset": 0, - "slot": "105", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:50" - }, - { - "label": "_networkFeeIndex", - "offset": 0, - "slot": "106", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:51" - }, - { - "label": "_networkFeeIndexBlockNumber", - "offset": 0, - "slot": "107", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:52" - }, - { - "label": "_networkEarnings", - "offset": 0, - "slot": "108", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:53" - }, - { - "label": "_networkEarningsBlockNumber", - "offset": 0, - "slot": "109", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "label": "_withdrawnFromTreasury", - "offset": 0, - "slot": "110", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:55" - }, - { - "label": "_operatorDatas", - "offset": 0, - "slot": "111", - "type": "t_mapping(t_uint256,t_struct(OperatorData)1962_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:57" - }, - { - "label": "_owners", - "offset": 0, - "slot": "112", - "type": "t_mapping(t_address,t_struct(OwnerData)1979_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:58" - }, - { - "label": "_operatorsInUseByAddress", - "offset": 0, - "slot": "113", - "type": "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)1990_storage))", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:59" - }, - { - "label": "_operatorsInUseList", - "offset": 0, - "slot": "114", - "type": "t_mapping(t_address,t_array(t_uint256)dyn_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:60" - }, - { - "label": "_lastOperatorUpdateNetworkFeeRun", - "offset": 0, - "slot": "115", - "type": "t_mapping(t_uint256,t_uint256)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:61" - }, - { - "label": "_setOperatorFeePeriod", - "offset": 0, - "slot": "116", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:63" - }, - { - "label": "_approveOperatorFeePeriod", - "offset": 0, - "slot": "117", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:64" - }, - { - "label": "_feeChangeRequests", - "offset": 0, - "slot": "118", - "type": "t_mapping(t_uint256,t_struct(FeeChangeRequest)1997_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:65" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_array(t_uint256)dyn_storage": { - "label": "uint256[]", - "numberOfBytes": "32" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_contract(IERC20)950": { - "label": "contract IERC20", - "numberOfBytes": "20" - }, - "t_contract(ISSVRegistry)1938": { - "label": "contract ISSVRegistry", - "numberOfBytes": "20" - }, - "t_mapping(t_address,t_array(t_uint256)dyn_storage)": { - "label": "mapping(address => uint256[])", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)1990_storage))": { - "label": "mapping(address => mapping(uint256 => struct SSVNetwork.OperatorInUse))", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_struct(OwnerData)1979_storage)": { - "label": "mapping(address => struct SSVNetwork.OwnerData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(FeeChangeRequest)1997_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.FeeChangeRequest)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(OperatorData)1962_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(OperatorInUse)1990_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorInUse)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_uint256)": { - "label": "mapping(uint256 => uint256)", - "numberOfBytes": "32" - }, - "t_struct(FeeChangeRequest)1997_storage": { - "label": "struct SSVNetwork.FeeChangeRequest", - "members": [ - { - "label": "fee", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "approvalBeginTime", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "approvalEndTime", - "type": "t_uint256", - "offset": 0, - "slot": "2" - } - ], - "numberOfBytes": "96" - }, - "t_struct(OperatorData)1962_storage": { - "label": "struct SSVNetwork.OperatorData", - "members": [ - { - "label": "blockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "earnings", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "index", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "indexBlockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "4" - }, - { - "label": "previousFee", - "type": "t_uint256", - "offset": 0, - "slot": "5" - } - ], - "numberOfBytes": "192" - }, - "t_struct(OperatorInUse)1990_storage": { - "label": "struct SSVNetwork.OperatorInUse", - "members": [ - { - "label": "index", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "validatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "used", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "exists", - "type": "t_bool", - "offset": 0, - "slot": "3" - }, - { - "label": "indexInArray", - "type": "t_uint256", - "offset": 0, - "slot": "4" - } - ], - "numberOfBytes": "160" - }, - "t_struct(OwnerData)1979_storage": { - "label": "struct SSVNetwork.OwnerData", - "members": [ - { - "label": "deposited", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "withdrawn", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "earned", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "used", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "networkFee", - "type": "t_uint256", - "offset": 0, - "slot": "4" - }, - { - "label": "networkFeeIndex", - "type": "t_uint256", - "offset": 0, - "slot": "5" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "6" - }, - { - "label": "validatorsDisabled", - "type": "t_bool", - "offset": 0, - "slot": "7" - } - ], - "numberOfBytes": "256" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - } - } - } - }, - "2f2200e16fa03b6a2258174c55b3b07ef0719d2c51b74744005de71a718c15d7": { - "address": "0x766785A02c335146085D44c1CA42D74FB5313654", - "txHash": "0x446149846f61bcedbfafef0f5e86be40fd5ae857f843fbd25690ad0d1a6ac1c2", - "layout": { - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:23" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:28" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "label": "_ssvRegistryContract", - "offset": 0, - "slot": "101", - "type": "t_contract(ISSVRegistry)1938", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:45" - }, - { - "label": "_token", - "offset": 0, - "slot": "102", - "type": "t_contract(IERC20)950", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:46" - }, - { - "label": "_minimumBlocksBeforeLiquidation", - "offset": 0, - "slot": "103", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "label": "_operatorMaxFeeIncrease", - "offset": 0, - "slot": "104", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:48" - }, - { - "label": "_networkFee", - "offset": 0, - "slot": "105", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:50" - }, - { - "label": "_networkFeeIndex", - "offset": 0, - "slot": "106", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:51" - }, - { - "label": "_networkFeeIndexBlockNumber", - "offset": 0, - "slot": "107", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:52" - }, - { - "label": "_networkEarnings", - "offset": 0, - "slot": "108", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:53" - }, - { - "label": "_networkEarningsBlockNumber", - "offset": 0, - "slot": "109", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "label": "_withdrawnFromTreasury", - "offset": 0, - "slot": "110", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:55" - }, - { - "label": "_operatorDatas", - "offset": 0, - "slot": "111", - "type": "t_mapping(t_uint256,t_struct(OperatorData)1962_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:57" - }, - { - "label": "_owners", - "offset": 0, - "slot": "112", - "type": "t_mapping(t_address,t_struct(OwnerData)1979_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:58" - }, - { - "label": "_operatorsInUseByAddress", - "offset": 0, - "slot": "113", - "type": "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)1990_storage))", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:59" - }, - { - "label": "_operatorsInUseList", - "offset": 0, - "slot": "114", - "type": "t_mapping(t_address,t_array(t_uint256)dyn_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:60" - }, - { - "label": "_lastOperatorUpdateNetworkFeeRun", - "offset": 0, - "slot": "115", - "type": "t_mapping(t_uint256,t_uint256)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:61" - }, - { - "label": "_setOperatorFeePeriod", - "offset": 0, - "slot": "116", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:63" - }, - { - "label": "_approveOperatorFeePeriod", - "offset": 0, - "slot": "117", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:64" - }, - { - "label": "_feeChangeRequests", - "offset": 0, - "slot": "118", - "type": "t_mapping(t_uint256,t_struct(FeeChangeRequest)1997_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:65" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_array(t_uint256)dyn_storage": { - "label": "uint256[]", - "numberOfBytes": "32" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_contract(IERC20)950": { - "label": "contract IERC20", - "numberOfBytes": "20" - }, - "t_contract(ISSVRegistry)1938": { - "label": "contract ISSVRegistry", - "numberOfBytes": "20" - }, - "t_mapping(t_address,t_array(t_uint256)dyn_storage)": { - "label": "mapping(address => uint256[])", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)1990_storage))": { - "label": "mapping(address => mapping(uint256 => struct SSVNetwork.OperatorInUse))", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_struct(OwnerData)1979_storage)": { - "label": "mapping(address => struct SSVNetwork.OwnerData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(FeeChangeRequest)1997_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.FeeChangeRequest)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(OperatorData)1962_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(OperatorInUse)1990_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorInUse)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_uint256)": { - "label": "mapping(uint256 => uint256)", - "numberOfBytes": "32" - }, - "t_struct(FeeChangeRequest)1997_storage": { - "label": "struct SSVNetwork.FeeChangeRequest", - "members": [ - { - "label": "fee", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "approvalBeginTime", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "approvalEndTime", - "type": "t_uint256", - "offset": 0, - "slot": "2" - } - ], - "numberOfBytes": "96" - }, - "t_struct(OperatorData)1962_storage": { - "label": "struct SSVNetwork.OperatorData", - "members": [ - { - "label": "blockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "earnings", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "index", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "indexBlockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "4" - }, - { - "label": "previousFee", - "type": "t_uint256", - "offset": 0, - "slot": "5" - } - ], - "numberOfBytes": "192" - }, - "t_struct(OperatorInUse)1990_storage": { - "label": "struct SSVNetwork.OperatorInUse", - "members": [ - { - "label": "index", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "validatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "used", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "exists", - "type": "t_bool", - "offset": 0, - "slot": "3" - }, - { - "label": "indexInArray", - "type": "t_uint256", - "offset": 0, - "slot": "4" - } - ], - "numberOfBytes": "160" - }, - "t_struct(OwnerData)1979_storage": { - "label": "struct SSVNetwork.OwnerData", - "members": [ - { - "label": "deposited", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "withdrawn", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "earned", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "used", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "networkFee", - "type": "t_uint256", - "offset": 0, - "slot": "4" - }, - { - "label": "networkFeeIndex", - "type": "t_uint256", - "offset": 0, - "slot": "5" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "6" - }, - { - "label": "validatorsDisabled", - "type": "t_bool", - "offset": 0, - "slot": "7" - } - ], - "numberOfBytes": "256" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - } - } - } - }, - "3641c20d95a09e5c74f1b824567f683e90937063940d6b87b5788efaa0004462": { - "address": "0x2FD7874d2A45D9c53C5716a2350D36a8B494C09C", - "txHash": "0xe16405dba2da260d2e453fcfbfa6afa7903e5da8bd9286fc1fd6e65b950a1193", - "layout": { - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:23" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:28" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "label": "_activeValidatorCount", - "offset": 0, - "slot": "101", - "type": "t_uint256", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:34" - }, - { - "label": "_lastOperatorId", - "offset": 0, - "slot": "102", - "type": "t_struct(Counter)1003_storage", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:36" - }, - { - "label": "_operators", - "offset": 0, - "slot": "103", - "type": "t_mapping(t_uint256,t_struct(Operator)4515_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:38" - }, - { - "label": "_validators", - "offset": 0, - "slot": "104", - "type": "t_mapping(t_bytes_memory_ptr,t_struct(Validator)4525_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:39" - }, - { - "label": "_operatorsByOwnerAddress", - "offset": 0, - "slot": "105", - "type": "t_mapping(t_address,t_array(t_uint256)dyn_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:41" - }, - { - "label": "_validatorsByOwnerAddress", - "offset": 0, - "slot": "106", - "type": "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:42" - }, - { - "label": "_owners", - "offset": 0, - "slot": "107", - "type": "t_mapping(t_address,t_struct(OwnerData)4530_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:43" - }, - { - "label": "validatorsPerOperator", - "offset": 0, - "slot": "108", - "type": "t_mapping(t_uint256,t_uint256)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:45" - }, - { - "label": "validatorsPerOperatorLimit", - "offset": 0, - "slot": "109", - "type": "t_uint256", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:46" - }, - { - "label": "_operatorPublicKeyToId", - "offset": 0, - "slot": "110", - "type": "t_mapping(t_bytes_memory_ptr,t_uint256)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:47" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_bytes_storage)dyn_storage": { - "label": "bytes[]", - "numberOfBytes": "32" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_array(t_uint256)dyn_storage": { - "label": "uint256[]", - "numberOfBytes": "32" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_bytes_memory_ptr": { - "label": "bytes", - "numberOfBytes": "32" - }, - "t_bytes_storage": { - "label": "bytes", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)": { - "label": "mapping(address => bytes[])", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_array(t_uint256)dyn_storage)": { - "label": "mapping(address => uint256[])", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_struct(OwnerData)4530_storage)": { - "label": "mapping(address => struct SSVRegistry.OwnerData)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes_memory_ptr,t_struct(Validator)4525_storage)": { - "label": "mapping(bytes => struct SSVRegistry.Validator)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes_memory_ptr,t_uint256)": { - "label": "mapping(bytes => uint256)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(Operator)4515_storage)": { - "label": "mapping(uint256 => struct SSVRegistry.Operator)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_uint256)": { - "label": "mapping(uint256 => uint256)", - "numberOfBytes": "32" - }, - "t_string_storage": { - "label": "string", - "numberOfBytes": "32" - }, - "t_struct(Counter)1003_storage": { - "label": "struct Counters.Counter", - "members": [ - { - "label": "_value", - "type": "t_uint256", - "offset": 0, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Operator)4515_storage": { - "label": "struct SSVRegistry.Operator", - "members": [ - { - "label": "name", - "type": "t_string_storage", - "offset": 0, - "slot": "0" - }, - { - "label": "ownerAddress", - "type": "t_address", - "offset": 0, - "slot": "1" - }, - { - "label": "publicKey", - "type": "t_bytes_storage", - "offset": 0, - "slot": "2" - }, - { - "label": "score", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "fee", - "type": "t_uint256", - "offset": 0, - "slot": "4" - }, - { - "label": "active", - "type": "t_bool", - "offset": 0, - "slot": "5" - }, - { - "label": "indexInOwner", - "type": "t_uint256", - "offset": 0, - "slot": "6" - } - ], - "numberOfBytes": "224" - }, - "t_struct(OwnerData)4530_storage": { - "label": "struct SSVRegistry.OwnerData", - "members": [ - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "validatorsDisabled", - "type": "t_bool", - "offset": 0, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_struct(Validator)4525_storage": { - "label": "struct SSVRegistry.Validator", - "members": [ - { - "label": "ownerAddress", - "type": "t_address", - "offset": 0, - "slot": "0" - }, - { - "label": "operatorIds", - "type": "t_array(t_uint256)dyn_storage", - "offset": 0, - "slot": "1" - }, - { - "label": "active", - "type": "t_bool", - "offset": 0, - "slot": "2" - }, - { - "label": "indexInOwner", - "type": "t_uint256", - "offset": 0, - "slot": "3" - } - ], - "numberOfBytes": "128" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - } - } - } - }, - "b84acd6ee0990dbc253e4db22a98ca7a778b5745d22a6668c6cc9b32b1e69d33": { - "address": "0x9B14332643755FcADf304260e7efbB6F04a6Ae04", - "txHash": "0xfea4f7617cce431bc9354cf928498eef4c78ef40dad061e417cac19ff6bb6c03", - "layout": { - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:23" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:28" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "label": "_ssvRegistryContract", - "offset": 0, - "slot": "101", - "type": "t_contract(ISSVRegistry)1142", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:45" - }, - { - "label": "_token", - "offset": 0, - "slot": "102", - "type": "t_contract(IERC20)299", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:46" - }, - { - "label": "_minimumBlocksBeforeLiquidation", - "offset": 0, - "slot": "103", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "label": "_operatorMaxFeeIncrease", - "offset": 0, - "slot": "104", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:48" - }, - { - "label": "_networkFee", - "offset": 0, - "slot": "105", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:50" - }, - { - "label": "_networkFeeIndex", - "offset": 0, - "slot": "106", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:51" - }, - { - "label": "_networkFeeIndexBlockNumber", - "offset": 0, - "slot": "107", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:52" - }, - { - "label": "_networkEarnings", - "offset": 0, - "slot": "108", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:53" - }, - { - "label": "_networkEarningsBlockNumber", - "offset": 0, - "slot": "109", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "label": "_withdrawnFromTreasury", - "offset": 0, - "slot": "110", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:55" - }, - { - "label": "_operatorDatas", - "offset": 0, - "slot": "111", - "type": "t_mapping(t_uint256,t_struct(OperatorData)1166_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:57" - }, - { - "label": "_owners", - "offset": 0, - "slot": "112", - "type": "t_mapping(t_address,t_struct(OwnerData)1183_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:58" - }, - { - "label": "_operatorsInUseByAddress", - "offset": 0, - "slot": "113", - "type": "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)1194_storage))", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:59" - }, - { - "label": "_operatorsInUseList", - "offset": 0, - "slot": "114", - "type": "t_mapping(t_address,t_array(t_uint256)dyn_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:60" - }, - { - "label": "_lastOperatorUpdateNetworkFeeRun", - "offset": 0, - "slot": "115", - "type": "t_mapping(t_uint256,t_uint256)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:61" - }, - { - "label": "_setOperatorFeePeriod", - "offset": 0, - "slot": "116", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:63" - }, - { - "label": "_approveOperatorFeePeriod", - "offset": 0, - "slot": "117", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:64" - }, - { - "label": "_feeChangeRequests", - "offset": 0, - "slot": "118", - "type": "t_mapping(t_uint256,t_struct(FeeChangeRequest)1201_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:65" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_array(t_uint256)dyn_storage": { - "label": "uint256[]", - "numberOfBytes": "32" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_contract(IERC20)299": { - "label": "contract IERC20", - "numberOfBytes": "20" - }, - "t_contract(ISSVRegistry)1142": { - "label": "contract ISSVRegistry", - "numberOfBytes": "20" - }, - "t_mapping(t_address,t_array(t_uint256)dyn_storage)": { - "label": "mapping(address => uint256[])", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)1194_storage))": { - "label": "mapping(address => mapping(uint256 => struct SSVNetwork.OperatorInUse))", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_struct(OwnerData)1183_storage)": { - "label": "mapping(address => struct SSVNetwork.OwnerData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(FeeChangeRequest)1201_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.FeeChangeRequest)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(OperatorData)1166_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(OperatorInUse)1194_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorInUse)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_uint256)": { - "label": "mapping(uint256 => uint256)", - "numberOfBytes": "32" - }, - "t_struct(FeeChangeRequest)1201_storage": { - "label": "struct SSVNetwork.FeeChangeRequest", - "members": [ - { - "label": "fee", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "approvalBeginTime", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "approvalEndTime", - "type": "t_uint256", - "offset": 0, - "slot": "2" - } - ], - "numberOfBytes": "96" - }, - "t_struct(OperatorData)1166_storage": { - "label": "struct SSVNetwork.OperatorData", - "members": [ - { - "label": "blockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "earnings", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "index", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "indexBlockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "4" - }, - { - "label": "previousFee", - "type": "t_uint256", - "offset": 0, - "slot": "5" - } - ], - "numberOfBytes": "192" - }, - "t_struct(OperatorInUse)1194_storage": { - "label": "struct SSVNetwork.OperatorInUse", - "members": [ - { - "label": "index", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "validatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "used", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "exists", - "type": "t_bool", - "offset": 0, - "slot": "3" - }, - { - "label": "indexInArray", - "type": "t_uint256", - "offset": 0, - "slot": "4" - } - ], - "numberOfBytes": "160" - }, - "t_struct(OwnerData)1183_storage": { - "label": "struct SSVNetwork.OwnerData", - "members": [ - { - "label": "deposited", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "withdrawn", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "earned", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "used", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "networkFee", - "type": "t_uint256", - "offset": 0, - "slot": "4" - }, - { - "label": "networkFeeIndex", - "type": "t_uint256", - "offset": 0, - "slot": "5" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "6" - }, - { - "label": "validatorsDisabled", - "type": "t_bool", - "offset": 0, - "slot": "7" - } - ], - "numberOfBytes": "256" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - } - } - } - }, - "a9de28a32b9b623094c20297e359a2f1d450c3957f9e78941b8904eb4b711592": { - "address": "0x3b88e6e880D09feB90d1e9C6Dea18A5015fB5F6D", - "txHash": "0x8f32f9f829b781205bedcf4c9b912230965ff9e9647af311a8d5797a0c2c508e", - "layout": { - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:23" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:28" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "label": "_ssvRegistryContract", - "offset": 0, - "slot": "101", - "type": "t_contract(ISSVRegistry)1914", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:45" - }, - { - "label": "_token", - "offset": 0, - "slot": "102", - "type": "t_contract(IERC20)950", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:46" - }, - { - "label": "_minimumBlocksBeforeLiquidation", - "offset": 0, - "slot": "103", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "label": "_operatorMaxFeeIncrease", - "offset": 0, - "slot": "104", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:48" - }, - { - "label": "_networkFee", - "offset": 0, - "slot": "105", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:50" - }, - { - "label": "_networkFeeIndex", - "offset": 0, - "slot": "106", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:51" - }, - { - "label": "_networkFeeIndexBlockNumber", - "offset": 0, - "slot": "107", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:52" - }, - { - "label": "_networkEarnings", - "offset": 0, - "slot": "108", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:53" - }, - { - "label": "_networkEarningsBlockNumber", - "offset": 0, - "slot": "109", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "label": "_withdrawnFromTreasury", - "offset": 0, - "slot": "110", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:55" - }, - { - "label": "_operatorDatas", - "offset": 0, - "slot": "111", - "type": "t_mapping(t_uint256,t_struct(OperatorData)1938_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:57" - }, - { - "label": "_owners", - "offset": 0, - "slot": "112", - "type": "t_mapping(t_address,t_struct(OwnerData)1955_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:58" - }, - { - "label": "_operatorsInUseByAddress", - "offset": 0, - "slot": "113", - "type": "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)1966_storage))", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:59" - }, - { - "label": "_operatorsInUseList", - "offset": 0, - "slot": "114", - "type": "t_mapping(t_address,t_array(t_uint256)dyn_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:60" - }, - { - "label": "_lastOperatorUpdateNetworkFeeRun", - "offset": 0, - "slot": "115", - "type": "t_mapping(t_uint256,t_uint256)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:61" - }, - { - "label": "_setOperatorFeePeriod", - "offset": 0, - "slot": "116", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:63" - }, - { - "label": "_approveOperatorFeePeriod", - "offset": 0, - "slot": "117", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:64" - }, - { - "label": "_feeChangeRequests", - "offset": 0, - "slot": "118", - "type": "t_mapping(t_uint256,t_struct(FeeChangeRequest)1973_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:65" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_array(t_uint256)dyn_storage": { - "label": "uint256[]", - "numberOfBytes": "32" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_contract(IERC20)950": { - "label": "contract IERC20", - "numberOfBytes": "20" - }, - "t_contract(ISSVRegistry)1914": { - "label": "contract ISSVRegistry", - "numberOfBytes": "20" - }, - "t_mapping(t_address,t_array(t_uint256)dyn_storage)": { - "label": "mapping(address => uint256[])", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)1966_storage))": { - "label": "mapping(address => mapping(uint256 => struct SSVNetwork.OperatorInUse))", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_struct(OwnerData)1955_storage)": { - "label": "mapping(address => struct SSVNetwork.OwnerData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(FeeChangeRequest)1973_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.FeeChangeRequest)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(OperatorData)1938_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(OperatorInUse)1966_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorInUse)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_uint256)": { - "label": "mapping(uint256 => uint256)", - "numberOfBytes": "32" - }, - "t_struct(FeeChangeRequest)1973_storage": { - "label": "struct SSVNetwork.FeeChangeRequest", - "members": [ - { - "label": "fee", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "approvalBeginTime", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "approvalEndTime", - "type": "t_uint256", - "offset": 0, - "slot": "2" - } - ], - "numberOfBytes": "96" - }, - "t_struct(OperatorData)1938_storage": { - "label": "struct SSVNetwork.OperatorData", - "members": [ - { - "label": "blockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "earnings", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "index", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "indexBlockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "4" - }, - { - "label": "previousFee", - "type": "t_uint256", - "offset": 0, - "slot": "5" - } - ], - "numberOfBytes": "192" - }, - "t_struct(OperatorInUse)1966_storage": { - "label": "struct SSVNetwork.OperatorInUse", - "members": [ - { - "label": "index", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "validatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "used", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "exists", - "type": "t_bool", - "offset": 0, - "slot": "3" - }, - { - "label": "indexInArray", - "type": "t_uint256", - "offset": 0, - "slot": "4" - } - ], - "numberOfBytes": "160" - }, - "t_struct(OwnerData)1955_storage": { - "label": "struct SSVNetwork.OwnerData", - "members": [ - { - "label": "deposited", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "withdrawn", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "earned", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "used", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "networkFee", - "type": "t_uint256", - "offset": 0, - "slot": "4" - }, - { - "label": "networkFeeIndex", - "type": "t_uint256", - "offset": 0, - "slot": "5" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "6" - }, - { - "label": "validatorsDisabled", - "type": "t_bool", - "offset": 0, - "slot": "7" - } - ], - "numberOfBytes": "256" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - } - } - } - }, - "1c9e7ff301eba33d844d99d367761c23eeae64bb37b091ff38c009030d7e5b90": { - "address": "0x712147DBE3dc425CA01827A239C9A10d441646ED", - "txHash": "0x3cd912d26f15e28a08b7689a2f8bdaed64da2635992eebb8717cc8141a0e6922", - "layout": { - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:23" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:28" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "label": "_ssvRegistryContract", - "offset": 0, - "slot": "101", - "type": "t_contract(ISSVRegistry)1914", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:45" - }, - { - "label": "_token", - "offset": 0, - "slot": "102", - "type": "t_contract(IERC20)950", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:46" - }, - { - "label": "_minimumBlocksBeforeLiquidation", - "offset": 0, - "slot": "103", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "label": "_operatorMaxFeeIncrease", - "offset": 0, - "slot": "104", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:48" - }, - { - "label": "_networkFee", - "offset": 0, - "slot": "105", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:50" - }, - { - "label": "_networkFeeIndex", - "offset": 0, - "slot": "106", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:51" - }, - { - "label": "_networkFeeIndexBlockNumber", - "offset": 0, - "slot": "107", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:52" - }, - { - "label": "_networkEarnings", - "offset": 0, - "slot": "108", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:53" - }, - { - "label": "_networkEarningsBlockNumber", - "offset": 0, - "slot": "109", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "label": "_withdrawnFromTreasury", - "offset": 0, - "slot": "110", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:55" - }, - { - "label": "_operatorDatas", - "offset": 0, - "slot": "111", - "type": "t_mapping(t_uint256,t_struct(OperatorData)1938_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:57" - }, - { - "label": "_owners", - "offset": 0, - "slot": "112", - "type": "t_mapping(t_address,t_struct(OwnerData)1955_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:58" - }, - { - "label": "_operatorsInUseByAddress", - "offset": 0, - "slot": "113", - "type": "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)1966_storage))", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:59" - }, - { - "label": "_operatorsInUseList", - "offset": 0, - "slot": "114", - "type": "t_mapping(t_address,t_array(t_uint256)dyn_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:60" - }, - { - "label": "_lastOperatorUpdateNetworkFeeRun", - "offset": 0, - "slot": "115", - "type": "t_mapping(t_uint256,t_uint256)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:61" - }, - { - "label": "_setOperatorFeePeriod", - "offset": 0, - "slot": "116", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:63" - }, - { - "label": "_approveOperatorFeePeriod", - "offset": 0, - "slot": "117", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:64" - }, - { - "label": "_feeChangeRequests", - "offset": 0, - "slot": "118", - "type": "t_mapping(t_uint256,t_struct(FeeChangeRequest)1973_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:65" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_array(t_uint256)dyn_storage": { - "label": "uint256[]", - "numberOfBytes": "32" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_contract(IERC20)950": { - "label": "contract IERC20", - "numberOfBytes": "20" - }, - "t_contract(ISSVRegistry)1914": { - "label": "contract ISSVRegistry", - "numberOfBytes": "20" - }, - "t_mapping(t_address,t_array(t_uint256)dyn_storage)": { - "label": "mapping(address => uint256[])", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)1966_storage))": { - "label": "mapping(address => mapping(uint256 => struct SSVNetwork.OperatorInUse))", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_struct(OwnerData)1955_storage)": { - "label": "mapping(address => struct SSVNetwork.OwnerData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(FeeChangeRequest)1973_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.FeeChangeRequest)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(OperatorData)1938_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(OperatorInUse)1966_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorInUse)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_uint256)": { - "label": "mapping(uint256 => uint256)", - "numberOfBytes": "32" - }, - "t_struct(FeeChangeRequest)1973_storage": { - "label": "struct SSVNetwork.FeeChangeRequest", - "members": [ - { - "label": "fee", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "approvalBeginTime", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "approvalEndTime", - "type": "t_uint256", - "offset": 0, - "slot": "2" - } - ], - "numberOfBytes": "96" - }, - "t_struct(OperatorData)1938_storage": { - "label": "struct SSVNetwork.OperatorData", - "members": [ - { - "label": "blockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "earnings", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "index", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "indexBlockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "4" - }, - { - "label": "previousFee", - "type": "t_uint256", - "offset": 0, - "slot": "5" - } - ], - "numberOfBytes": "192" - }, - "t_struct(OperatorInUse)1966_storage": { - "label": "struct SSVNetwork.OperatorInUse", - "members": [ - { - "label": "index", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "validatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "used", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "exists", - "type": "t_bool", - "offset": 0, - "slot": "3" - }, - { - "label": "indexInArray", - "type": "t_uint256", - "offset": 0, - "slot": "4" - } - ], - "numberOfBytes": "160" - }, - "t_struct(OwnerData)1955_storage": { - "label": "struct SSVNetwork.OwnerData", - "members": [ - { - "label": "deposited", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "withdrawn", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "earned", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "used", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "networkFee", - "type": "t_uint256", - "offset": 0, - "slot": "4" - }, - { - "label": "networkFeeIndex", - "type": "t_uint256", - "offset": 0, - "slot": "5" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "6" - }, - { - "label": "validatorsDisabled", - "type": "t_bool", - "offset": 0, - "slot": "7" - } - ], - "numberOfBytes": "256" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - } - } - } - }, - "91fe9325ead8120671f9e12977b0ed1ef460150f6161faf31000231bb2041db6": { - "address": "0x687018085d02C5F180d78Bc43DC3E74211f25b9A", - "txHash": "0x14437089ff6a284674f8dcd82fd4e908f9fae8fd4b5a681fbb10b7929da63b76", - "layout": { - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:23" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:28" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "label": "_activeValidatorCount", - "offset": 0, - "slot": "101", - "type": "t_uint256", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:34" - }, - { - "label": "_lastOperatorId", - "offset": 0, - "slot": "102", - "type": "t_struct(Counter)227_storage", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:36" - }, - { - "label": "_operators", - "offset": 0, - "slot": "103", - "type": "t_mapping(t_uint256,t_struct(Operator)664_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:38" - }, - { - "label": "_validators", - "offset": 0, - "slot": "104", - "type": "t_mapping(t_bytes_memory_ptr,t_struct(Validator)674_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:39" - }, - { - "label": "_operatorsByOwnerAddress", - "offset": 0, - "slot": "105", - "type": "t_mapping(t_address,t_array(t_uint256)dyn_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:41" - }, - { - "label": "_validatorsByOwnerAddress", - "offset": 0, - "slot": "106", - "type": "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:42" - }, - { - "label": "_owners", - "offset": 0, - "slot": "107", - "type": "t_mapping(t_address,t_struct(OwnerData)679_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:43" - }, - { - "label": "validatorsPerOperator", - "offset": 0, - "slot": "108", - "type": "t_mapping(t_uint256,t_uint256)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:45" - }, - { - "label": "validatorsPerOperatorLimit", - "offset": 0, - "slot": "109", - "type": "t_uint256", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:46" - }, - { - "label": "_operatorPublicKeyToId", - "offset": 0, - "slot": "110", - "type": "t_mapping(t_bytes_memory_ptr,t_uint256)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:47" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_bytes_storage)dyn_storage": { - "label": "bytes[]", - "numberOfBytes": "32" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_array(t_uint256)dyn_storage": { - "label": "uint256[]", - "numberOfBytes": "32" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_bytes_memory_ptr": { - "label": "bytes", - "numberOfBytes": "32" - }, - "t_bytes_storage": { - "label": "bytes", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)": { - "label": "mapping(address => bytes[])", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_array(t_uint256)dyn_storage)": { - "label": "mapping(address => uint256[])", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_struct(OwnerData)679_storage)": { - "label": "mapping(address => struct SSVRegistry.OwnerData)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes_memory_ptr,t_struct(Validator)674_storage)": { - "label": "mapping(bytes => struct SSVRegistry.Validator)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes_memory_ptr,t_uint256)": { - "label": "mapping(bytes => uint256)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(Operator)664_storage)": { - "label": "mapping(uint256 => struct SSVRegistry.Operator)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_uint256)": { - "label": "mapping(uint256 => uint256)", - "numberOfBytes": "32" - }, - "t_string_storage": { - "label": "string", - "numberOfBytes": "32" - }, - "t_struct(Counter)227_storage": { - "label": "struct Counters.Counter", - "members": [ - { - "label": "_value", - "type": "t_uint256", - "offset": 0, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Operator)664_storage": { - "label": "struct SSVRegistry.Operator", - "members": [ - { - "label": "name", - "type": "t_string_storage", - "offset": 0, - "slot": "0" - }, - { - "label": "ownerAddress", - "type": "t_address", - "offset": 0, - "slot": "1" - }, - { - "label": "publicKey", - "type": "t_bytes_storage", - "offset": 0, - "slot": "2" - }, - { - "label": "score", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "fee", - "type": "t_uint256", - "offset": 0, - "slot": "4" - }, - { - "label": "active", - "type": "t_bool", - "offset": 0, - "slot": "5" - }, - { - "label": "indexInOwner", - "type": "t_uint256", - "offset": 0, - "slot": "6" - } - ], - "numberOfBytes": "224" - }, - "t_struct(OwnerData)679_storage": { - "label": "struct SSVRegistry.OwnerData", - "members": [ - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "validatorsDisabled", - "type": "t_bool", - "offset": 0, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_struct(Validator)674_storage": { - "label": "struct SSVRegistry.Validator", - "members": [ - { - "label": "ownerAddress", - "type": "t_address", - "offset": 0, - "slot": "0" - }, - { - "label": "operatorIds", - "type": "t_array(t_uint256)dyn_storage", - "offset": 0, - "slot": "1" - }, - { - "label": "active", - "type": "t_bool", - "offset": 0, - "slot": "2" - }, - { - "label": "indexInOwner", - "type": "t_uint256", - "offset": 0, - "slot": "3" - } - ], - "numberOfBytes": "128" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - } - } - } - }, - "43c9c7fd4fe1491a613cf7034400a44a16897bf9a2962a9c0972861012496ce5": { - "address": "0x1A537f409e061422C139dEd05f50245ECD957895", - "txHash": "0xde542b42f887d098d512f447d4586fe24ae857dc18bf3371a6d1f3815b88dbb6", - "layout": { - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:23" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:28" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "label": "_ssvRegistryContract", - "offset": 0, - "slot": "101", - "type": "t_contract(ISSVRegistry)1142", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:45" - }, - { - "label": "_token", - "offset": 0, - "slot": "102", - "type": "t_contract(IERC20)299", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:46" - }, - { - "label": "_minimumBlocksBeforeLiquidation", - "offset": 0, - "slot": "103", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "label": "_operatorMaxFeeIncrease", - "offset": 0, - "slot": "104", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:48" - }, - { - "label": "_networkFee", - "offset": 0, - "slot": "105", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:50" - }, - { - "label": "_networkFeeIndex", - "offset": 0, - "slot": "106", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:51" - }, - { - "label": "_networkFeeIndexBlockNumber", - "offset": 0, - "slot": "107", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:52" - }, - { - "label": "_networkEarnings", - "offset": 0, - "slot": "108", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:53" - }, - { - "label": "_networkEarningsBlockNumber", - "offset": 0, - "slot": "109", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "label": "_withdrawnFromTreasury", - "offset": 0, - "slot": "110", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:55" - }, - { - "label": "_operatorDatas", - "offset": 0, - "slot": "111", - "type": "t_mapping(t_uint256,t_struct(OperatorData)1166_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:57" - }, - { - "label": "_owners", - "offset": 0, - "slot": "112", - "type": "t_mapping(t_address,t_struct(OwnerData)1183_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:58" - }, - { - "label": "_operatorsInUseByAddress", - "offset": 0, - "slot": "113", - "type": "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)1194_storage))", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:59" - }, - { - "label": "_operatorsInUseList", - "offset": 0, - "slot": "114", - "type": "t_mapping(t_address,t_array(t_uint256)dyn_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:60" - }, - { - "label": "_lastOperatorUpdateNetworkFeeRun", - "offset": 0, - "slot": "115", - "type": "t_mapping(t_uint256,t_uint256)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:61" - }, - { - "label": "_setOperatorFeePeriod", - "offset": 0, - "slot": "116", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:63" - }, - { - "label": "_approveOperatorFeePeriod", - "offset": 0, - "slot": "117", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:64" - }, - { - "label": "_feeChangeRequests", - "offset": 0, - "slot": "118", - "type": "t_mapping(t_uint256,t_struct(FeeChangeRequest)1201_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:65" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_array(t_uint256)dyn_storage": { - "label": "uint256[]", - "numberOfBytes": "32" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_contract(IERC20)299": { - "label": "contract IERC20", - "numberOfBytes": "20" - }, - "t_contract(ISSVRegistry)1142": { - "label": "contract ISSVRegistry", - "numberOfBytes": "20" - }, - "t_mapping(t_address,t_array(t_uint256)dyn_storage)": { - "label": "mapping(address => uint256[])", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)1194_storage))": { - "label": "mapping(address => mapping(uint256 => struct SSVNetwork.OperatorInUse))", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_struct(OwnerData)1183_storage)": { - "label": "mapping(address => struct SSVNetwork.OwnerData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(FeeChangeRequest)1201_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.FeeChangeRequest)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(OperatorData)1166_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(OperatorInUse)1194_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorInUse)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_uint256)": { - "label": "mapping(uint256 => uint256)", - "numberOfBytes": "32" - }, - "t_struct(FeeChangeRequest)1201_storage": { - "label": "struct SSVNetwork.FeeChangeRequest", - "members": [ - { - "label": "fee", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "approvalBeginTime", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "approvalEndTime", - "type": "t_uint256", - "offset": 0, - "slot": "2" - } - ], - "numberOfBytes": "96" - }, - "t_struct(OperatorData)1166_storage": { - "label": "struct SSVNetwork.OperatorData", - "members": [ - { - "label": "blockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "earnings", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "index", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "indexBlockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "4" - }, - { - "label": "previousFee", - "type": "t_uint256", - "offset": 0, - "slot": "5" - } - ], - "numberOfBytes": "192" - }, - "t_struct(OperatorInUse)1194_storage": { - "label": "struct SSVNetwork.OperatorInUse", - "members": [ - { - "label": "index", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "validatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "used", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "exists", - "type": "t_bool", - "offset": 0, - "slot": "3" - }, - { - "label": "indexInArray", - "type": "t_uint256", - "offset": 0, - "slot": "4" - } - ], - "numberOfBytes": "160" - }, - "t_struct(OwnerData)1183_storage": { - "label": "struct SSVNetwork.OwnerData", - "members": [ - { - "label": "deposited", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "withdrawn", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "earned", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "used", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "networkFee", - "type": "t_uint256", - "offset": 0, - "slot": "4" - }, - { - "label": "networkFeeIndex", - "type": "t_uint256", - "offset": 0, - "slot": "5" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "6" - }, - { - "label": "validatorsDisabled", - "type": "t_bool", - "offset": 0, - "slot": "7" - } - ], - "numberOfBytes": "256" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - } - } - } - }, - "ea61da3bd81329c50c53a758f45f97243816a7d4317d4775b2891dc935a39f29": { - "address": "0x9F1621b3f28349dF70327300BDF9eD98aA76798e", - "txHash": "0x6c5aac883f3121518ddb2b6195b56e0f0e19b354cecc3a6980d11328c512a8cc", - "layout": { - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:23" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:28" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "label": "_activeValidatorCount", - "offset": 0, - "slot": "101", - "type": "t_uint256", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:34" - }, - { - "label": "_lastOperatorId", - "offset": 0, - "slot": "102", - "type": "t_struct(Counter)1003_storage", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:36" - }, - { - "label": "_operators", - "offset": 0, - "slot": "103", - "type": "t_mapping(t_uint256,t_struct(Operator)4532_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:38" - }, - { - "label": "_validators", - "offset": 0, - "slot": "104", - "type": "t_mapping(t_bytes_memory_ptr,t_struct(Validator)4542_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:39" - }, - { - "label": "_operatorsByOwnerAddress", - "offset": 0, - "slot": "105", - "type": "t_mapping(t_address,t_array(t_uint256)dyn_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:41" - }, - { - "label": "_validatorsByOwnerAddress", - "offset": 0, - "slot": "106", - "type": "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:42" - }, - { - "label": "_owners", - "offset": 0, - "slot": "107", - "type": "t_mapping(t_address,t_struct(OwnerData)4547_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:43" - }, - { - "label": "validatorsPerOperator", - "offset": 0, - "slot": "108", - "type": "t_mapping(t_uint256,t_uint256)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:45" - }, - { - "label": "validatorsPerOperatorLimit", - "offset": 0, - "slot": "109", - "type": "t_uint256", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:46" - }, - { - "label": "_operatorPublicKeyToId", - "offset": 0, - "slot": "110", - "type": "t_mapping(t_bytes_memory_ptr,t_uint256)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:47" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_bytes_storage)dyn_storage": { - "label": "bytes[]", - "numberOfBytes": "32" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_array(t_uint256)dyn_storage": { - "label": "uint256[]", - "numberOfBytes": "32" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_bytes_memory_ptr": { - "label": "bytes", - "numberOfBytes": "32" - }, - "t_bytes_storage": { - "label": "bytes", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)": { - "label": "mapping(address => bytes[])", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_array(t_uint256)dyn_storage)": { - "label": "mapping(address => uint256[])", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_struct(OwnerData)4547_storage)": { - "label": "mapping(address => struct SSVRegistry.OwnerData)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes_memory_ptr,t_struct(Validator)4542_storage)": { - "label": "mapping(bytes => struct SSVRegistry.Validator)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes_memory_ptr,t_uint256)": { - "label": "mapping(bytes => uint256)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(Operator)4532_storage)": { - "label": "mapping(uint256 => struct SSVRegistry.Operator)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_uint256)": { - "label": "mapping(uint256 => uint256)", - "numberOfBytes": "32" - }, - "t_string_storage": { - "label": "string", - "numberOfBytes": "32" - }, - "t_struct(Counter)1003_storage": { - "label": "struct Counters.Counter", - "members": [ - { - "label": "_value", - "type": "t_uint256", - "offset": 0, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Operator)4532_storage": { - "label": "struct SSVRegistry.Operator", - "members": [ - { - "label": "name", - "type": "t_string_storage", - "offset": 0, - "slot": "0" - }, - { - "label": "ownerAddress", - "type": "t_address", - "offset": 0, - "slot": "1" - }, - { - "label": "publicKey", - "type": "t_bytes_storage", - "offset": 0, - "slot": "2" - }, - { - "label": "score", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "fee", - "type": "t_uint256", - "offset": 0, - "slot": "4" - }, - { - "label": "active", - "type": "t_bool", - "offset": 0, - "slot": "5" - }, - { - "label": "indexInOwner", - "type": "t_uint256", - "offset": 0, - "slot": "6" - } - ], - "numberOfBytes": "224" - }, - "t_struct(OwnerData)4547_storage": { - "label": "struct SSVRegistry.OwnerData", - "members": [ - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "validatorsDisabled", - "type": "t_bool", - "offset": 0, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_struct(Validator)4542_storage": { - "label": "struct SSVRegistry.Validator", - "members": [ - { - "label": "ownerAddress", - "type": "t_address", - "offset": 0, - "slot": "0" - }, - { - "label": "operatorIds", - "type": "t_array(t_uint256)dyn_storage", - "offset": 0, - "slot": "1" - }, - { - "label": "active", - "type": "t_bool", - "offset": 0, - "slot": "2" - }, - { - "label": "indexInOwner", - "type": "t_uint256", - "offset": 0, - "slot": "3" - } - ], - "numberOfBytes": "128" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - } - } - } - }, - "44880359e2962ae163e85b078eaeb8d4a1f8da6999a2519bec9dea8f32c26cca": { - "address": "0xf20df316E71cf623FCEa632e8f055Ae4925d0858", - "txHash": "0xef6260c6bf38f4af90b049cde7e96bed85b3e0beb5625b48b41793aa35f57b3b", - "layout": { - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:23" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:28" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "label": "_ssvRegistryContract", - "offset": 0, - "slot": "101", - "type": "t_contract(ISSVRegistry)1142", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:45" - }, - { - "label": "_token", - "offset": 0, - "slot": "102", - "type": "t_contract(IERC20)299", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:46" - }, - { - "label": "_minimumBlocksBeforeLiquidation", - "offset": 0, - "slot": "103", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "label": "_operatorMaxFeeIncrease", - "offset": 0, - "slot": "104", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:48" - }, - { - "label": "_networkFee", - "offset": 0, - "slot": "105", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:50" - }, - { - "label": "_networkFeeIndex", - "offset": 0, - "slot": "106", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:51" - }, - { - "label": "_networkFeeIndexBlockNumber", - "offset": 0, - "slot": "107", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:52" - }, - { - "label": "_networkEarnings", - "offset": 0, - "slot": "108", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:53" - }, - { - "label": "_networkEarningsBlockNumber", - "offset": 0, - "slot": "109", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "label": "_withdrawnFromTreasury", - "offset": 0, - "slot": "110", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:55" - }, - { - "label": "_operatorDatas", - "offset": 0, - "slot": "111", - "type": "t_mapping(t_uint256,t_struct(OperatorData)1166_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:57" - }, - { - "label": "_owners", - "offset": 0, - "slot": "112", - "type": "t_mapping(t_address,t_struct(OwnerData)1183_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:58" - }, - { - "label": "_operatorsInUseByAddress", - "offset": 0, - "slot": "113", - "type": "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)1194_storage))", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:59" - }, - { - "label": "_operatorsInUseList", - "offset": 0, - "slot": "114", - "type": "t_mapping(t_address,t_array(t_uint256)dyn_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:60" - }, - { - "label": "_lastOperatorUpdateNetworkFeeRun", - "offset": 0, - "slot": "115", - "type": "t_mapping(t_uint256,t_uint256)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:61" - }, - { - "label": "_setOperatorFeePeriod", - "offset": 0, - "slot": "116", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:63" - }, - { - "label": "_approveOperatorFeePeriod", - "offset": 0, - "slot": "117", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:64" - }, - { - "label": "_feeChangeRequests", - "offset": 0, - "slot": "118", - "type": "t_mapping(t_uint256,t_struct(FeeChangeRequest)1201_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:65" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_array(t_uint256)dyn_storage": { - "label": "uint256[]", - "numberOfBytes": "32" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_contract(IERC20)299": { - "label": "contract IERC20", - "numberOfBytes": "20" - }, - "t_contract(ISSVRegistry)1142": { - "label": "contract ISSVRegistry", - "numberOfBytes": "20" - }, - "t_mapping(t_address,t_array(t_uint256)dyn_storage)": { - "label": "mapping(address => uint256[])", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)1194_storage))": { - "label": "mapping(address => mapping(uint256 => struct SSVNetwork.OperatorInUse))", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_struct(OwnerData)1183_storage)": { - "label": "mapping(address => struct SSVNetwork.OwnerData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(FeeChangeRequest)1201_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.FeeChangeRequest)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(OperatorData)1166_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(OperatorInUse)1194_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorInUse)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_uint256)": { - "label": "mapping(uint256 => uint256)", - "numberOfBytes": "32" - }, - "t_struct(FeeChangeRequest)1201_storage": { - "label": "struct SSVNetwork.FeeChangeRequest", - "members": [ - { - "label": "fee", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "approvalBeginTime", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "approvalEndTime", - "type": "t_uint256", - "offset": 0, - "slot": "2" - } - ], - "numberOfBytes": "96" - }, - "t_struct(OperatorData)1166_storage": { - "label": "struct SSVNetwork.OperatorData", - "members": [ - { - "label": "blockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "earnings", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "index", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "indexBlockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "4" - }, - { - "label": "previousFee", - "type": "t_uint256", - "offset": 0, - "slot": "5" - } - ], - "numberOfBytes": "192" - }, - "t_struct(OperatorInUse)1194_storage": { - "label": "struct SSVNetwork.OperatorInUse", - "members": [ - { - "label": "index", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "validatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "used", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "exists", - "type": "t_bool", - "offset": 0, - "slot": "3" - }, - { - "label": "indexInArray", - "type": "t_uint256", - "offset": 0, - "slot": "4" - } - ], - "numberOfBytes": "160" - }, - "t_struct(OwnerData)1183_storage": { - "label": "struct SSVNetwork.OwnerData", - "members": [ - { - "label": "deposited", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "withdrawn", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "earned", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "used", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "networkFee", - "type": "t_uint256", - "offset": 0, - "slot": "4" - }, - { - "label": "networkFeeIndex", - "type": "t_uint256", - "offset": 0, - "slot": "5" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "6" - }, - { - "label": "validatorsDisabled", - "type": "t_bool", - "offset": 0, - "slot": "7" - } - ], - "numberOfBytes": "256" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - } - } - } - }, - "ef4cbfab967249c519508f2410a677e77e2f349fd73dd14bafaae41bfde112c6": { - "address": "0x035A8c9A827d59af98DE0705126faC981B060692", - "txHash": "0xce3f3aed9495a49bb2a6ff5c2fb736a6eb2924b713dc73c4547748088abe0e3a", - "layout": { - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:23" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:28" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "label": "_ssvRegistryContract", - "offset": 0, - "slot": "101", - "type": "t_contract(ISSVRegistry)1918", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:45" - }, - { - "label": "_token", - "offset": 0, - "slot": "102", - "type": "t_contract(IERC20)950", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:46" - }, - { - "label": "_minimumBlocksBeforeLiquidation", - "offset": 0, - "slot": "103", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "label": "_operatorMaxFeeIncrease", - "offset": 0, - "slot": "104", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:48" - }, - { - "label": "_networkFee", - "offset": 0, - "slot": "105", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:50" - }, - { - "label": "_networkFeeIndex", - "offset": 0, - "slot": "106", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:51" - }, - { - "label": "_networkFeeIndexBlockNumber", - "offset": 0, - "slot": "107", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:52" - }, - { - "label": "_networkEarnings", - "offset": 0, - "slot": "108", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:53" - }, - { - "label": "_networkEarningsBlockNumber", - "offset": 0, - "slot": "109", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "label": "_withdrawnFromTreasury", - "offset": 0, - "slot": "110", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:55" - }, - { - "label": "_operatorDatas", - "offset": 0, - "slot": "111", - "type": "t_mapping(t_uint256,t_struct(OperatorData)1942_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:57" - }, - { - "label": "_owners", - "offset": 0, - "slot": "112", - "type": "t_mapping(t_address,t_struct(OwnerData)1959_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:58" - }, - { - "label": "_operatorsInUseByAddress", - "offset": 0, - "slot": "113", - "type": "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)1970_storage))", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:59" - }, - { - "label": "_operatorsInUseList", - "offset": 0, - "slot": "114", - "type": "t_mapping(t_address,t_array(t_uint256)dyn_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:60" - }, - { - "label": "_lastOperatorUpdateNetworkFeeRun", - "offset": 0, - "slot": "115", - "type": "t_mapping(t_uint256,t_uint256)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:61" - }, - { - "label": "_setOperatorFeePeriod", - "offset": 0, - "slot": "116", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:63" - }, - { - "label": "_approveOperatorFeePeriod", - "offset": 0, - "slot": "117", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:64" - }, - { - "label": "_feeChangeRequests", - "offset": 0, - "slot": "118", - "type": "t_mapping(t_uint256,t_struct(FeeChangeRequest)1977_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:65" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_array(t_uint256)dyn_storage": { - "label": "uint256[]", - "numberOfBytes": "32" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_contract(IERC20)950": { - "label": "contract IERC20", - "numberOfBytes": "20" - }, - "t_contract(ISSVRegistry)1918": { - "label": "contract ISSVRegistry", - "numberOfBytes": "20" - }, - "t_mapping(t_address,t_array(t_uint256)dyn_storage)": { - "label": "mapping(address => uint256[])", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)1970_storage))": { - "label": "mapping(address => mapping(uint256 => struct SSVNetwork.OperatorInUse))", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_struct(OwnerData)1959_storage)": { - "label": "mapping(address => struct SSVNetwork.OwnerData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(FeeChangeRequest)1977_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.FeeChangeRequest)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(OperatorData)1942_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(OperatorInUse)1970_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorInUse)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_uint256)": { - "label": "mapping(uint256 => uint256)", - "numberOfBytes": "32" - }, - "t_struct(FeeChangeRequest)1977_storage": { - "label": "struct SSVNetwork.FeeChangeRequest", - "members": [ - { - "label": "fee", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "approvalBeginTime", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "approvalEndTime", - "type": "t_uint256", - "offset": 0, - "slot": "2" - } - ], - "numberOfBytes": "96" - }, - "t_struct(OperatorData)1942_storage": { - "label": "struct SSVNetwork.OperatorData", - "members": [ - { - "label": "blockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "earnings", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "index", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "indexBlockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "4" - }, - { - "label": "previousFee", - "type": "t_uint256", - "offset": 0, - "slot": "5" - } - ], - "numberOfBytes": "192" - }, - "t_struct(OperatorInUse)1970_storage": { - "label": "struct SSVNetwork.OperatorInUse", - "members": [ - { - "label": "index", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "validatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "used", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "exists", - "type": "t_bool", - "offset": 0, - "slot": "3" - }, - { - "label": "indexInArray", - "type": "t_uint256", - "offset": 0, - "slot": "4" - } - ], - "numberOfBytes": "160" - }, - "t_struct(OwnerData)1959_storage": { - "label": "struct SSVNetwork.OwnerData", - "members": [ - { - "label": "deposited", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "withdrawn", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "earned", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "used", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "networkFee", - "type": "t_uint256", - "offset": 0, - "slot": "4" - }, - { - "label": "networkFeeIndex", - "type": "t_uint256", - "offset": 0, - "slot": "5" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "6" - }, - { - "label": "validatorsDisabled", - "type": "t_bool", - "offset": 0, - "slot": "7" - } - ], - "numberOfBytes": "256" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - } - } - } - }, - "37d0587e2ab0c2e47bac372b9c3e29c8b23fd7873aa0391d94b7dde4f8124697": { - "address": "0xe1130a5fcD4783E9737905141e5441659dcddEB5", - "txHash": "0xf5d59399a61741217d6d0f40ea194d53c8ca795e35d216a1eccc1f90a1bd2c60", - "layout": { - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:23" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:28" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "label": "_activeValidatorCount", - "offset": 0, - "slot": "101", - "type": "t_uint256", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:34" - }, - { - "label": "_lastOperatorId", - "offset": 0, - "slot": "102", - "type": "t_struct(Counter)1003_storage", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:36" - }, - { - "label": "_operators", - "offset": 0, - "slot": "103", - "type": "t_mapping(t_uint256,t_struct(Operator)4600_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:38" - }, - { - "label": "_validators", - "offset": 0, - "slot": "104", - "type": "t_mapping(t_bytes_memory_ptr,t_struct(Validator)4610_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:39" - }, - { - "label": "_operatorsByOwnerAddress", - "offset": 0, - "slot": "105", - "type": "t_mapping(t_address,t_array(t_uint256)dyn_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:41" - }, - { - "label": "_validatorsByOwnerAddress", - "offset": 0, - "slot": "106", - "type": "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:42" - }, - { - "label": "_owners", - "offset": 0, - "slot": "107", - "type": "t_mapping(t_address,t_struct(OwnerData)4615_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:43" - }, - { - "label": "validatorsPerOperator", - "offset": 0, - "slot": "108", - "type": "t_mapping(t_uint256,t_uint256)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:45" - }, - { - "label": "validatorsPerOperatorLimit", - "offset": 0, - "slot": "109", - "type": "t_uint256", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:46" - }, - { - "label": "_operatorPublicKeyToId", - "offset": 0, - "slot": "110", - "type": "t_mapping(t_bytes_memory_ptr,t_uint256)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:47" - }, - { - "label": "operatorsPerOwnerLimit", - "offset": 0, - "slot": "111", - "type": "t_uint256", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:48" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_bytes_storage)dyn_storage": { - "label": "bytes[]", - "numberOfBytes": "32" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_array(t_uint256)dyn_storage": { - "label": "uint256[]", - "numberOfBytes": "32" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_bytes_memory_ptr": { - "label": "bytes", - "numberOfBytes": "32" - }, - "t_bytes_storage": { - "label": "bytes", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)": { - "label": "mapping(address => bytes[])", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_array(t_uint256)dyn_storage)": { - "label": "mapping(address => uint256[])", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_struct(OwnerData)4615_storage)": { - "label": "mapping(address => struct SSVRegistry.OwnerData)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes_memory_ptr,t_struct(Validator)4610_storage)": { - "label": "mapping(bytes => struct SSVRegistry.Validator)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes_memory_ptr,t_uint256)": { - "label": "mapping(bytes => uint256)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(Operator)4600_storage)": { - "label": "mapping(uint256 => struct SSVRegistry.Operator)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_uint256)": { - "label": "mapping(uint256 => uint256)", - "numberOfBytes": "32" - }, - "t_string_storage": { - "label": "string", - "numberOfBytes": "32" - }, - "t_struct(Counter)1003_storage": { - "label": "struct Counters.Counter", - "members": [ - { - "label": "_value", - "type": "t_uint256", - "offset": 0, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Operator)4600_storage": { - "label": "struct SSVRegistry.Operator", - "members": [ - { - "label": "name", - "type": "t_string_storage", - "offset": 0, - "slot": "0" - }, - { - "label": "ownerAddress", - "type": "t_address", - "offset": 0, - "slot": "1" - }, - { - "label": "publicKey", - "type": "t_bytes_storage", - "offset": 0, - "slot": "2" - }, - { - "label": "score", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "fee", - "type": "t_uint256", - "offset": 0, - "slot": "4" - }, - { - "label": "active", - "type": "t_bool", - "offset": 0, - "slot": "5" - }, - { - "label": "indexInOwner", - "type": "t_uint256", - "offset": 0, - "slot": "6" - } - ], - "numberOfBytes": "224" - }, - "t_struct(OwnerData)4615_storage": { - "label": "struct SSVRegistry.OwnerData", - "members": [ - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "validatorsDisabled", - "type": "t_bool", - "offset": 0, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_struct(Validator)4610_storage": { - "label": "struct SSVRegistry.Validator", - "members": [ - { - "label": "ownerAddress", - "type": "t_address", - "offset": 0, - "slot": "0" - }, - { - "label": "operatorIds", - "type": "t_array(t_uint256)dyn_storage", - "offset": 0, - "slot": "1" - }, - { - "label": "active", - "type": "t_bool", - "offset": 0, - "slot": "2" - }, - { - "label": "indexInOwner", - "type": "t_uint256", - "offset": 0, - "slot": "3" - } - ], - "numberOfBytes": "128" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - } - } - } - }, - "cb6fba5d58e9f15cc30f60f17e4df7036377e98bc0f544705e2522f6c0b93a16": { - "address": "0x68b36f52a3773763D91817C7b4D593f69D68c0a2", - "txHash": "0x0defff3f9676d548b6d2d0cd8adf2163a5064237c52f98081285bfd73b63c6bf", - "layout": { - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:23" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:28" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "label": "_ssvRegistryContract", - "offset": 0, - "slot": "101", - "type": "t_contract(ISSVRegistry)1946", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:45" - }, - { - "label": "_token", - "offset": 0, - "slot": "102", - "type": "t_contract(IERC20)950", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:46" - }, - { - "label": "_minimumBlocksBeforeLiquidation", - "offset": 0, - "slot": "103", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "label": "_operatorMaxFeeIncrease", - "offset": 0, - "slot": "104", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:48" - }, - { - "label": "_networkFee", - "offset": 0, - "slot": "105", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:50" - }, - { - "label": "_networkFeeIndex", - "offset": 0, - "slot": "106", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:51" - }, - { - "label": "_networkFeeIndexBlockNumber", - "offset": 0, - "slot": "107", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:52" - }, - { - "label": "_networkEarnings", - "offset": 0, - "slot": "108", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:53" - }, - { - "label": "_networkEarningsBlockNumber", - "offset": 0, - "slot": "109", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "label": "_withdrawnFromTreasury", - "offset": 0, - "slot": "110", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:55" - }, - { - "label": "_operatorDatas", - "offset": 0, - "slot": "111", - "type": "t_mapping(t_uint256,t_struct(OperatorData)1970_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:57" - }, - { - "label": "_owners", - "offset": 0, - "slot": "112", - "type": "t_mapping(t_address,t_struct(OwnerData)1987_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:58" - }, - { - "label": "_operatorsInUseByAddress", - "offset": 0, - "slot": "113", - "type": "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)1998_storage))", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:59" - }, - { - "label": "_operatorsInUseList", - "offset": 0, - "slot": "114", - "type": "t_mapping(t_address,t_array(t_uint256)dyn_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:60" - }, - { - "label": "_lastOperatorUpdateNetworkFeeRun", - "offset": 0, - "slot": "115", - "type": "t_mapping(t_uint256,t_uint256)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:61" - }, - { - "label": "_setOperatorFeePeriod", - "offset": 0, - "slot": "116", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:63" - }, - { - "label": "_approveOperatorFeePeriod", - "offset": 0, - "slot": "117", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:64" - }, - { - "label": "_feeChangeRequests", - "offset": 0, - "slot": "118", - "type": "t_mapping(t_uint256,t_struct(FeeChangeRequest)2005_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:65" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_array(t_uint256)dyn_storage": { - "label": "uint256[]", - "numberOfBytes": "32" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_contract(IERC20)950": { - "label": "contract IERC20", - "numberOfBytes": "20" - }, - "t_contract(ISSVRegistry)1946": { - "label": "contract ISSVRegistry", - "numberOfBytes": "20" - }, - "t_mapping(t_address,t_array(t_uint256)dyn_storage)": { - "label": "mapping(address => uint256[])", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)1998_storage))": { - "label": "mapping(address => mapping(uint256 => struct SSVNetwork.OperatorInUse))", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_struct(OwnerData)1987_storage)": { - "label": "mapping(address => struct SSVNetwork.OwnerData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(FeeChangeRequest)2005_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.FeeChangeRequest)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(OperatorData)1970_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(OperatorInUse)1998_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorInUse)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_uint256)": { - "label": "mapping(uint256 => uint256)", - "numberOfBytes": "32" - }, - "t_struct(FeeChangeRequest)2005_storage": { - "label": "struct SSVNetwork.FeeChangeRequest", - "members": [ - { - "label": "fee", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "approvalBeginTime", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "approvalEndTime", - "type": "t_uint256", - "offset": 0, - "slot": "2" - } - ], - "numberOfBytes": "96" - }, - "t_struct(OperatorData)1970_storage": { - "label": "struct SSVNetwork.OperatorData", - "members": [ - { - "label": "blockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "earnings", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "index", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "indexBlockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "4" - }, - { - "label": "previousFee", - "type": "t_uint256", - "offset": 0, - "slot": "5" - } - ], - "numberOfBytes": "192" - }, - "t_struct(OperatorInUse)1998_storage": { - "label": "struct SSVNetwork.OperatorInUse", - "members": [ - { - "label": "index", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "validatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "used", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "exists", - "type": "t_bool", - "offset": 0, - "slot": "3" - }, - { - "label": "indexInArray", - "type": "t_uint256", - "offset": 0, - "slot": "4" - } - ], - "numberOfBytes": "160" - }, - "t_struct(OwnerData)1987_storage": { - "label": "struct SSVNetwork.OwnerData", - "members": [ - { - "label": "deposited", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "withdrawn", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "earned", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "used", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "networkFee", - "type": "t_uint256", - "offset": 0, - "slot": "4" - }, - { - "label": "networkFeeIndex", - "type": "t_uint256", - "offset": 0, - "slot": "5" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "6" - }, - { - "label": "validatorsDisabled", - "type": "t_bool", - "offset": 0, - "slot": "7" - } - ], - "numberOfBytes": "256" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - } - } - } - }, - "0ab944ed993758bbcef5cbcf09ed4e6a3282bd066007288cb694ec271550e6ff": { - "address": "0x32c681B5d35F6eaD9B6Ec5A49A05EF695712727D", - "txHash": "0x87942864ae09432a45b0a7a229f3bde68714daf3581f7e27be57daec3c3a19ed", - "layout": { - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:23" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:28" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "label": "_activeValidatorCount", - "offset": 0, - "slot": "101", - "type": "t_uint256", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:34" - }, - { - "label": "_lastOperatorId", - "offset": 0, - "slot": "102", - "type": "t_struct(Counter)1003_storage", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:36" - }, - { - "label": "_operators", - "offset": 0, - "slot": "103", - "type": "t_mapping(t_uint256,t_struct(Operator)4511_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:38" - }, - { - "label": "_validators", - "offset": 0, - "slot": "104", - "type": "t_mapping(t_bytes_memory_ptr,t_struct(Validator)4521_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:39" - }, - { - "label": "_operatorsByOwnerAddress", - "offset": 0, - "slot": "105", - "type": "t_mapping(t_address,t_array(t_uint256)dyn_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:41" - }, - { - "label": "_validatorsByOwnerAddress", - "offset": 0, - "slot": "106", - "type": "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:42" - }, - { - "label": "_owners", - "offset": 0, - "slot": "107", - "type": "t_mapping(t_address,t_struct(OwnerData)4526_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:43" - }, - { - "label": "validatorsPerOperator", - "offset": 0, - "slot": "108", - "type": "t_mapping(t_uint256,t_uint256)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:45" - }, - { - "label": "validatorsPerOperatorLimit", - "offset": 0, - "slot": "109", - "type": "t_uint256", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:46" - }, - { - "label": "_operatorPublicKeyToId", - "offset": 0, - "slot": "110", - "type": "t_mapping(t_bytes_memory_ptr,t_uint256)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:47" - }, - { - "label": "registeredOperatorsPerAccountLimit", - "offset": 0, - "slot": "111", - "type": "t_uint256", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:48" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_bytes_storage)dyn_storage": { - "label": "bytes[]", - "numberOfBytes": "32" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_array(t_uint256)dyn_storage": { - "label": "uint256[]", - "numberOfBytes": "32" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_bytes_memory_ptr": { - "label": "bytes", - "numberOfBytes": "32" - }, - "t_bytes_storage": { - "label": "bytes", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)": { - "label": "mapping(address => bytes[])", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_array(t_uint256)dyn_storage)": { - "label": "mapping(address => uint256[])", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_struct(OwnerData)4526_storage)": { - "label": "mapping(address => struct SSVRegistry.OwnerData)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes_memory_ptr,t_struct(Validator)4521_storage)": { - "label": "mapping(bytes => struct SSVRegistry.Validator)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes_memory_ptr,t_uint256)": { - "label": "mapping(bytes => uint256)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(Operator)4511_storage)": { - "label": "mapping(uint256 => struct SSVRegistry.Operator)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_uint256)": { - "label": "mapping(uint256 => uint256)", - "numberOfBytes": "32" - }, - "t_string_storage": { - "label": "string", - "numberOfBytes": "32" - }, - "t_struct(Counter)1003_storage": { - "label": "struct Counters.Counter", - "members": [ - { - "label": "_value", - "type": "t_uint256", - "offset": 0, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Operator)4511_storage": { - "label": "struct SSVRegistry.Operator", - "members": [ - { - "label": "name", - "type": "t_string_storage", - "offset": 0, - "slot": "0" - }, - { - "label": "ownerAddress", - "type": "t_address", - "offset": 0, - "slot": "1" - }, - { - "label": "publicKey", - "type": "t_bytes_storage", - "offset": 0, - "slot": "2" - }, - { - "label": "score", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "fee", - "type": "t_uint256", - "offset": 0, - "slot": "4" - }, - { - "label": "active", - "type": "t_bool", - "offset": 0, - "slot": "5" - }, - { - "label": "indexInOwner", - "type": "t_uint256", - "offset": 0, - "slot": "6" - } - ], - "numberOfBytes": "224" - }, - "t_struct(OwnerData)4526_storage": { - "label": "struct SSVRegistry.OwnerData", - "members": [ - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "validatorsDisabled", - "type": "t_bool", - "offset": 0, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_struct(Validator)4521_storage": { - "label": "struct SSVRegistry.Validator", - "members": [ - { - "label": "ownerAddress", - "type": "t_address", - "offset": 0, - "slot": "0" - }, - { - "label": "operatorIds", - "type": "t_array(t_uint256)dyn_storage", - "offset": 0, - "slot": "1" - }, - { - "label": "active", - "type": "t_bool", - "offset": 0, - "slot": "2" - }, - { - "label": "indexInOwner", - "type": "t_uint256", - "offset": 0, - "slot": "3" - } - ], - "numberOfBytes": "128" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - } - } - } - }, - "78295b9e6f34d6e24582399c186fc32a263154d8af40d1612d163355245e4498": { - "address": "0xD1B2bBc138A6C9eCaA1eD0cCAC29D2231A8a37c3", - "txHash": "0xe5a96c5368069054e79fd31c13db79a6b05fdbed401d144fb1ea7cccb4b45e33", - "layout": { - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:23" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:28" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "label": "_ssvRegistryContract", - "offset": 0, - "slot": "101", - "type": "t_contract(ISSVRegistry)1145", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:44" - }, - { - "label": "_token", - "offset": 0, - "slot": "102", - "type": "t_contract(IERC20)299", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:45" - }, - { - "label": "_minimumBlocksBeforeLiquidation", - "offset": 0, - "slot": "103", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:46" - }, - { - "label": "_operatorMaxFeeIncrease", - "offset": 0, - "slot": "104", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "label": "_networkFee", - "offset": 0, - "slot": "105", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:49" - }, - { - "label": "_networkFeeIndex", - "offset": 0, - "slot": "106", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:50" - }, - { - "label": "_networkFeeIndexBlockNumber", - "offset": 0, - "slot": "107", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:51" - }, - { - "label": "_networkEarnings", - "offset": 0, - "slot": "108", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:52" - }, - { - "label": "_networkEarningsBlockNumber", - "offset": 0, - "slot": "109", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:53" - }, - { - "label": "_withdrawnFromTreasury", - "offset": 0, - "slot": "110", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "label": "_operatorDatas", - "offset": 0, - "slot": "111", - "type": "t_mapping(t_uint256,t_struct(OperatorData)1167_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:56" - }, - { - "label": "_owners", - "offset": 0, - "slot": "112", - "type": "t_mapping(t_address,t_struct(OwnerData)1184_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:57" - }, - { - "label": "_operatorsInUseByAddress", - "offset": 0, - "slot": "113", - "type": "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)1195_storage))", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:58" - }, - { - "label": "_operatorsInUseList", - "offset": 0, - "slot": "114", - "type": "t_mapping(t_address,t_array(t_uint256)dyn_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:59" - }, - { - "label": "_lastOperatorUpdateNetworkFeeRun", - "offset": 0, - "slot": "115", - "type": "t_mapping(t_uint256,t_uint256)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:60" - }, - { - "label": "_setOperatorFeePeriod", - "offset": 0, - "slot": "116", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:62" - }, - { - "label": "_approveOperatorFeePeriod", - "offset": 0, - "slot": "117", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:63" - }, - { - "label": "_feeChangeRequests", - "offset": 0, - "slot": "118", - "type": "t_mapping(t_uint256,t_struct(FeeChangeRequest)1202_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:64" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_array(t_uint256)dyn_storage": { - "label": "uint256[]", - "numberOfBytes": "32" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_contract(IERC20)299": { - "label": "contract IERC20", - "numberOfBytes": "20" - }, - "t_contract(ISSVRegistry)1145": { - "label": "contract ISSVRegistry", - "numberOfBytes": "20" - }, - "t_mapping(t_address,t_array(t_uint256)dyn_storage)": { - "label": "mapping(address => uint256[])", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)1195_storage))": { - "label": "mapping(address => mapping(uint256 => struct SSVNetwork.OperatorInUse))", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_struct(OwnerData)1184_storage)": { - "label": "mapping(address => struct SSVNetwork.OwnerData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(FeeChangeRequest)1202_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.FeeChangeRequest)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(OperatorData)1167_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(OperatorInUse)1195_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorInUse)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_uint256)": { - "label": "mapping(uint256 => uint256)", - "numberOfBytes": "32" - }, - "t_struct(FeeChangeRequest)1202_storage": { - "label": "struct SSVNetwork.FeeChangeRequest", - "members": [ - { - "label": "fee", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "approvalBeginTime", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "approvalEndTime", - "type": "t_uint256", - "offset": 0, - "slot": "2" - } - ], - "numberOfBytes": "96" - }, - "t_struct(OperatorData)1167_storage": { - "label": "struct SSVNetwork.OperatorData", - "members": [ - { - "label": "blockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "earnings", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "index", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "indexBlockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "4" - } - ], - "numberOfBytes": "160" - }, - "t_struct(OperatorInUse)1195_storage": { - "label": "struct SSVNetwork.OperatorInUse", - "members": [ - { - "label": "index", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "validatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "used", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "exists", - "type": "t_bool", - "offset": 0, - "slot": "3" - }, - { - "label": "indexInArray", - "type": "t_uint256", - "offset": 0, - "slot": "4" - } - ], - "numberOfBytes": "160" - }, - "t_struct(OwnerData)1184_storage": { - "label": "struct SSVNetwork.OwnerData", - "members": [ - { - "label": "deposited", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "withdrawn", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "earned", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "used", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "networkFee", - "type": "t_uint256", - "offset": 0, - "slot": "4" - }, - { - "label": "networkFeeIndex", - "type": "t_uint256", - "offset": 0, - "slot": "5" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "6" - }, - { - "label": "validatorsDisabled", - "type": "t_bool", - "offset": 0, - "slot": "7" - } - ], - "numberOfBytes": "256" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - } - } - } - }, - "e7f574477b6b8e9706a6ac1323a0f703475e964e5613f4b70b6b5eed2996671c": { - "address": "0xC1099B13178856C94a5cDb3ec92B061A3E21e8d9", - "txHash": "0x92fc6cfee744d88829caf948293510457abce92b30c5b5eb094d7fb3130c303e", - "layout": { - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:23" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:28" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "label": "_ssvRegistryContract", - "offset": 0, - "slot": "101", - "type": "t_contract(ISSVRegistry)1145", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:44" - }, - { - "label": "_token", - "offset": 0, - "slot": "102", - "type": "t_contract(IERC20)299", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:45" - }, - { - "label": "_minimumBlocksBeforeLiquidation", - "offset": 0, - "slot": "103", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:46" - }, - { - "label": "_operatorMaxFeeIncrease", - "offset": 0, - "slot": "104", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "label": "_networkFee", - "offset": 0, - "slot": "105", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:49" - }, - { - "label": "_networkFeeIndex", - "offset": 0, - "slot": "106", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:50" - }, - { - "label": "_networkFeeIndexBlockNumber", - "offset": 0, - "slot": "107", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:51" - }, - { - "label": "_networkEarnings", - "offset": 0, - "slot": "108", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:52" - }, - { - "label": "_networkEarningsBlockNumber", - "offset": 0, - "slot": "109", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:53" - }, - { - "label": "_withdrawnFromTreasury", - "offset": 0, - "slot": "110", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "label": "_operatorDatas", - "offset": 0, - "slot": "111", - "type": "t_mapping(t_uint256,t_struct(OperatorData)1167_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:56" - }, - { - "label": "_owners", - "offset": 0, - "slot": "112", - "type": "t_mapping(t_address,t_struct(OwnerData)1184_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:57" - }, - { - "label": "_operatorsInUseByAddress", - "offset": 0, - "slot": "113", - "type": "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)1195_storage))", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:58" - }, - { - "label": "_operatorsInUseList", - "offset": 0, - "slot": "114", - "type": "t_mapping(t_address,t_array(t_uint256)dyn_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:59" - }, - { - "label": "_lastOperatorUpdateNetworkFeeRun", - "offset": 0, - "slot": "115", - "type": "t_mapping(t_uint256,t_uint256)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:60" - }, - { - "label": "_setOperatorFeePeriod", - "offset": 0, - "slot": "116", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:62" - }, - { - "label": "_approveOperatorFeePeriod", - "offset": 0, - "slot": "117", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:63" - }, - { - "label": "_feeChangeRequests", - "offset": 0, - "slot": "118", - "type": "t_mapping(t_uint256,t_struct(FeeChangeRequest)1202_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:64" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_array(t_uint256)dyn_storage": { - "label": "uint256[]", - "numberOfBytes": "32" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_contract(IERC20)299": { - "label": "contract IERC20", - "numberOfBytes": "20" - }, - "t_contract(ISSVRegistry)1145": { - "label": "contract ISSVRegistry", - "numberOfBytes": "20" - }, - "t_mapping(t_address,t_array(t_uint256)dyn_storage)": { - "label": "mapping(address => uint256[])", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)1195_storage))": { - "label": "mapping(address => mapping(uint256 => struct SSVNetwork.OperatorInUse))", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_struct(OwnerData)1184_storage)": { - "label": "mapping(address => struct SSVNetwork.OwnerData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(FeeChangeRequest)1202_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.FeeChangeRequest)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(OperatorData)1167_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(OperatorInUse)1195_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorInUse)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_uint256)": { - "label": "mapping(uint256 => uint256)", - "numberOfBytes": "32" - }, - "t_struct(FeeChangeRequest)1202_storage": { - "label": "struct SSVNetwork.FeeChangeRequest", - "members": [ - { - "label": "fee", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "approvalBeginTime", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "approvalEndTime", - "type": "t_uint256", - "offset": 0, - "slot": "2" - } - ], - "numberOfBytes": "96" - }, - "t_struct(OperatorData)1167_storage": { - "label": "struct SSVNetwork.OperatorData", - "members": [ - { - "label": "blockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "earnings", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "index", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "indexBlockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "4" - } - ], - "numberOfBytes": "160" - }, - "t_struct(OperatorInUse)1195_storage": { - "label": "struct SSVNetwork.OperatorInUse", - "members": [ - { - "label": "index", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "validatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "used", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "exists", - "type": "t_bool", - "offset": 0, - "slot": "3" - }, - { - "label": "indexInArray", - "type": "t_uint256", - "offset": 0, - "slot": "4" - } - ], - "numberOfBytes": "160" - }, - "t_struct(OwnerData)1184_storage": { - "label": "struct SSVNetwork.OwnerData", - "members": [ - { - "label": "deposited", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "withdrawn", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "earned", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "used", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "networkFee", - "type": "t_uint256", - "offset": 0, - "slot": "4" - }, - { - "label": "networkFeeIndex", - "type": "t_uint256", - "offset": 0, - "slot": "5" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "6" - }, - { - "label": "validatorsDisabled", - "type": "t_bool", - "offset": 0, - "slot": "7" - } - ], - "numberOfBytes": "256" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - } - } - } - }, - "098282ac761c51912ee507318413e8d6b167811709f42f4d9e763496a9c9788b": { - "address": "0x57A3F4DE4021Bed66F817B15043562b69971a3Ae", - "txHash": "0x6dd25843673401798c175386aeed2689d63e38139f9f6cbfd39b6f29a0de41b2", - "layout": { - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:23" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:28" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "label": "_activeValidatorCount", - "offset": 0, - "slot": "101", - "type": "t_uint256", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:34" - }, - { - "label": "_lastOperatorId", - "offset": 0, - "slot": "102", - "type": "t_struct(Counter)1003_storage", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:36" - }, - { - "label": "_operators", - "offset": 0, - "slot": "103", - "type": "t_mapping(t_uint256,t_struct(Operator)4511_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:38" - }, - { - "label": "_validators", - "offset": 0, - "slot": "104", - "type": "t_mapping(t_bytes_memory_ptr,t_struct(Validator)4521_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:39" - }, - { - "label": "_operatorsByOwnerAddress", - "offset": 0, - "slot": "105", - "type": "t_mapping(t_address,t_array(t_uint256)dyn_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:41" - }, - { - "label": "_validatorsByOwnerAddress", - "offset": 0, - "slot": "106", - "type": "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:42" - }, - { - "label": "_owners", - "offset": 0, - "slot": "107", - "type": "t_mapping(t_address,t_struct(OwnerData)4526_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:43" - }, - { - "label": "validatorsPerOperator", - "offset": 0, - "slot": "108", - "type": "t_mapping(t_uint256,t_uint256)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:45" - }, - { - "label": "validatorsPerOperatorLimit", - "offset": 0, - "slot": "109", - "type": "t_uint256", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:46" - }, - { - "label": "_operatorPublicKeyToId", - "offset": 0, - "slot": "110", - "type": "t_mapping(t_bytes_memory_ptr,t_uint256)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:47" - }, - { - "label": "registeredOperatorsPerAccountLimit", - "offset": 0, - "slot": "111", - "type": "t_uint256", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:48" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_bytes_storage)dyn_storage": { - "label": "bytes[]", - "numberOfBytes": "32" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_array(t_uint256)dyn_storage": { - "label": "uint256[]", - "numberOfBytes": "32" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_bytes_memory_ptr": { - "label": "bytes", - "numberOfBytes": "32" - }, - "t_bytes_storage": { - "label": "bytes", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)": { - "label": "mapping(address => bytes[])", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_array(t_uint256)dyn_storage)": { - "label": "mapping(address => uint256[])", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_struct(OwnerData)4526_storage)": { - "label": "mapping(address => struct SSVRegistry.OwnerData)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes_memory_ptr,t_struct(Validator)4521_storage)": { - "label": "mapping(bytes => struct SSVRegistry.Validator)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes_memory_ptr,t_uint256)": { - "label": "mapping(bytes => uint256)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(Operator)4511_storage)": { - "label": "mapping(uint256 => struct SSVRegistry.Operator)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_uint256)": { - "label": "mapping(uint256 => uint256)", - "numberOfBytes": "32" - }, - "t_string_storage": { - "label": "string", - "numberOfBytes": "32" - }, - "t_struct(Counter)1003_storage": { - "label": "struct Counters.Counter", - "members": [ - { - "label": "_value", - "type": "t_uint256", - "offset": 0, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Operator)4511_storage": { - "label": "struct SSVRegistry.Operator", - "members": [ - { - "label": "name", - "type": "t_string_storage", - "offset": 0, - "slot": "0" - }, - { - "label": "ownerAddress", - "type": "t_address", - "offset": 0, - "slot": "1" - }, - { - "label": "publicKey", - "type": "t_bytes_storage", - "offset": 0, - "slot": "2" - }, - { - "label": "score", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "fee", - "type": "t_uint256", - "offset": 0, - "slot": "4" - }, - { - "label": "active", - "type": "t_bool", - "offset": 0, - "slot": "5" - }, - { - "label": "indexInOwner", - "type": "t_uint256", - "offset": 0, - "slot": "6" - } - ], - "numberOfBytes": "224" - }, - "t_struct(OwnerData)4526_storage": { - "label": "struct SSVRegistry.OwnerData", - "members": [ - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "validatorsDisabled", - "type": "t_bool", - "offset": 0, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_struct(Validator)4521_storage": { - "label": "struct SSVRegistry.Validator", - "members": [ - { - "label": "ownerAddress", - "type": "t_address", - "offset": 0, - "slot": "0" - }, - { - "label": "operatorIds", - "type": "t_array(t_uint256)dyn_storage", - "offset": 0, - "slot": "1" - }, - { - "label": "active", - "type": "t_bool", - "offset": 0, - "slot": "2" - }, - { - "label": "indexInOwner", - "type": "t_uint256", - "offset": 0, - "slot": "3" - } - ], - "numberOfBytes": "128" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - } - } - } - }, - "491e17656472cbfaad7ad7294f23d2c625564b2a5467edfd6ec931668b44d802": { - "address": "0x30C8cB43696e1620d0659b8B1726C4cAf3EB77B6", - "txHash": "0x4f77438a1684b0379cc74b51a6b661c207111b016afd4bd75d3822a3c5d893a0", - "layout": { - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:23" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:28" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "label": "_ssvRegistryContract", - "offset": 0, - "slot": "101", - "type": "t_contract(ISSVRegistry)1917", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:44" - }, - { - "label": "_token", - "offset": 0, - "slot": "102", - "type": "t_contract(IERC20)950", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:45" - }, - { - "label": "_minimumBlocksBeforeLiquidation", - "offset": 0, - "slot": "103", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:46" - }, - { - "label": "_operatorMaxFeeIncrease", - "offset": 0, - "slot": "104", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "label": "_networkFee", - "offset": 0, - "slot": "105", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:49" - }, - { - "label": "_networkFeeIndex", - "offset": 0, - "slot": "106", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:50" - }, - { - "label": "_networkFeeIndexBlockNumber", - "offset": 0, - "slot": "107", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:51" - }, - { - "label": "_networkEarnings", - "offset": 0, - "slot": "108", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:52" - }, - { - "label": "_networkEarningsBlockNumber", - "offset": 0, - "slot": "109", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:53" - }, - { - "label": "_withdrawnFromTreasury", - "offset": 0, - "slot": "110", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "label": "_operatorDatas", - "offset": 0, - "slot": "111", - "type": "t_mapping(t_uint256,t_struct(OperatorData)1939_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:56" - }, - { - "label": "_owners", - "offset": 0, - "slot": "112", - "type": "t_mapping(t_address,t_struct(OwnerData)1956_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:57" - }, - { - "label": "_operatorsInUseByAddress", - "offset": 0, - "slot": "113", - "type": "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)1967_storage))", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:58" - }, - { - "label": "_operatorsInUseList", - "offset": 0, - "slot": "114", - "type": "t_mapping(t_address,t_array(t_uint256)dyn_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:59" - }, - { - "label": "_lastOperatorUpdateNetworkFeeRun", - "offset": 0, - "slot": "115", - "type": "t_mapping(t_uint256,t_uint256)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:60" - }, - { - "label": "_setOperatorFeePeriod", - "offset": 0, - "slot": "116", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:62" - }, - { - "label": "_approveOperatorFeePeriod", - "offset": 0, - "slot": "117", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:63" - }, - { - "label": "_feeChangeRequests", - "offset": 0, - "slot": "118", - "type": "t_mapping(t_uint256,t_struct(FeeChangeRequest)1974_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:64" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_array(t_uint256)dyn_storage": { - "label": "uint256[]", - "numberOfBytes": "32" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_contract(IERC20)950": { - "label": "contract IERC20", - "numberOfBytes": "20" - }, - "t_contract(ISSVRegistry)1917": { - "label": "contract ISSVRegistry", - "numberOfBytes": "20" - }, - "t_mapping(t_address,t_array(t_uint256)dyn_storage)": { - "label": "mapping(address => uint256[])", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)1967_storage))": { - "label": "mapping(address => mapping(uint256 => struct SSVNetwork.OperatorInUse))", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_struct(OwnerData)1956_storage)": { - "label": "mapping(address => struct SSVNetwork.OwnerData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(FeeChangeRequest)1974_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.FeeChangeRequest)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(OperatorData)1939_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(OperatorInUse)1967_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorInUse)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_uint256)": { - "label": "mapping(uint256 => uint256)", - "numberOfBytes": "32" - }, - "t_struct(FeeChangeRequest)1974_storage": { - "label": "struct SSVNetwork.FeeChangeRequest", - "members": [ - { - "label": "fee", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "approvalBeginTime", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "approvalEndTime", - "type": "t_uint256", - "offset": 0, - "slot": "2" - } - ], - "numberOfBytes": "96" - }, - "t_struct(OperatorData)1939_storage": { - "label": "struct SSVNetwork.OperatorData", - "members": [ - { - "label": "blockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "earnings", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "index", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "indexBlockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "4" - } - ], - "numberOfBytes": "160" - }, - "t_struct(OperatorInUse)1967_storage": { - "label": "struct SSVNetwork.OperatorInUse", - "members": [ - { - "label": "index", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "validatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "used", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "exists", - "type": "t_bool", - "offset": 0, - "slot": "3" - }, - { - "label": "indexInArray", - "type": "t_uint256", - "offset": 0, - "slot": "4" - } - ], - "numberOfBytes": "160" - }, - "t_struct(OwnerData)1956_storage": { - "label": "struct SSVNetwork.OwnerData", - "members": [ - { - "label": "deposited", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "withdrawn", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "earned", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "used", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "networkFee", - "type": "t_uint256", - "offset": 0, - "slot": "4" - }, - { - "label": "networkFeeIndex", - "type": "t_uint256", - "offset": 0, - "slot": "5" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "6" - }, - { - "label": "validatorsDisabled", - "type": "t_bool", - "offset": 0, - "slot": "7" - } - ], - "numberOfBytes": "256" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - } - } - } - }, - "7181a9ab954b655fdbe22f4c7aeec94732521a726864f38b87b2c7580d50fb8d": { - "address": "0xd220566c2085f53c57bb0F8E9C5B0ecFbd3045d4", - "txHash": "0xc9bc6668111802af2a9b144c77dc79b19a8476d354763adf8c08d54594e9b9dc", - "layout": { - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:23" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:28" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "label": "_activeValidatorCount", - "offset": 0, - "slot": "101", - "type": "t_uint256", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:34" - }, - { - "label": "_lastOperatorId", - "offset": 0, - "slot": "102", - "type": "t_struct(Counter)1003_storage", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:36" - }, - { - "label": "_operators", - "offset": 0, - "slot": "103", - "type": "t_mapping(t_uint256,t_struct(Operator)4535_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:38" - }, - { - "label": "_validators", - "offset": 0, - "slot": "104", - "type": "t_mapping(t_bytes_memory_ptr,t_struct(Validator)4545_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:39" - }, - { - "label": "_operatorsByOwnerAddress", - "offset": 0, - "slot": "105", - "type": "t_mapping(t_address,t_array(t_uint256)dyn_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:41" - }, - { - "label": "_validatorsByOwnerAddress", - "offset": 0, - "slot": "106", - "type": "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:42" - }, - { - "label": "_owners", - "offset": 0, - "slot": "107", - "type": "t_mapping(t_address,t_struct(OwnerData)4550_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:43" - }, - { - "label": "validatorsPerOperator", - "offset": 0, - "slot": "108", - "type": "t_mapping(t_uint256,t_uint256)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:45" - }, - { - "label": "validatorsPerOperatorLimit", - "offset": 0, - "slot": "109", - "type": "t_uint256", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:46" - }, - { - "label": "_operatorPublicKeyToId", - "offset": 0, - "slot": "110", - "type": "t_mapping(t_bytes_memory_ptr,t_uint256)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:47" - }, - { - "label": "registeredOperatorsPerAccountLimit", - "offset": 0, - "slot": "111", - "type": "t_uint256", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:48" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_bytes_storage)dyn_storage": { - "label": "bytes[]", - "numberOfBytes": "32" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_array(t_uint256)dyn_storage": { - "label": "uint256[]", - "numberOfBytes": "32" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_bytes_memory_ptr": { - "label": "bytes", - "numberOfBytes": "32" - }, - "t_bytes_storage": { - "label": "bytes", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_array(t_bytes_storage)dyn_storage)": { - "label": "mapping(address => bytes[])", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_array(t_uint256)dyn_storage)": { - "label": "mapping(address => uint256[])", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_struct(OwnerData)4550_storage)": { - "label": "mapping(address => struct SSVRegistry.OwnerData)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes_memory_ptr,t_struct(Validator)4545_storage)": { - "label": "mapping(bytes => struct SSVRegistry.Validator)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes_memory_ptr,t_uint256)": { - "label": "mapping(bytes => uint256)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(Operator)4535_storage)": { - "label": "mapping(uint256 => struct SSVRegistry.Operator)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_uint256)": { - "label": "mapping(uint256 => uint256)", - "numberOfBytes": "32" - }, - "t_string_storage": { - "label": "string", - "numberOfBytes": "32" - }, - "t_struct(Counter)1003_storage": { - "label": "struct Counters.Counter", - "members": [ - { - "label": "_value", - "type": "t_uint256", - "offset": 0, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Operator)4535_storage": { - "label": "struct SSVRegistry.Operator", - "members": [ - { - "label": "name", - "type": "t_string_storage", - "offset": 0, - "slot": "0" - }, - { - "label": "ownerAddress", - "type": "t_address", - "offset": 0, - "slot": "1" - }, - { - "label": "publicKey", - "type": "t_bytes_storage", - "offset": 0, - "slot": "2" - }, - { - "label": "score", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "fee", - "type": "t_uint256", - "offset": 0, - "slot": "4" - }, - { - "label": "active", - "type": "t_bool", - "offset": 0, - "slot": "5" - }, - { - "label": "indexInOwner", - "type": "t_uint256", - "offset": 0, - "slot": "6" - } - ], - "numberOfBytes": "224" - }, - "t_struct(OwnerData)4550_storage": { - "label": "struct SSVRegistry.OwnerData", - "members": [ - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "validatorsDisabled", - "type": "t_bool", - "offset": 0, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_struct(Validator)4545_storage": { - "label": "struct SSVRegistry.Validator", - "members": [ - { - "label": "ownerAddress", - "type": "t_address", - "offset": 0, - "slot": "0" - }, - { - "label": "operatorIds", - "type": "t_array(t_uint256)dyn_storage", - "offset": 0, - "slot": "1" - }, - { - "label": "active", - "type": "t_bool", - "offset": 0, - "slot": "2" - }, - { - "label": "indexInOwner", - "type": "t_uint256", - "offset": 0, - "slot": "3" - } - ], - "numberOfBytes": "128" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - } - } - } - }, - "43e8a71368bbd8cce5134b383a3975e2b923a3da15b288d6b718f1bb12019d2a": { - "address": "0xb8188337DCDF6263DFcFf9C8a766124D7113C5f2", - "txHash": "0x0a98c991ffb3fda5a3cc24cc908fb1666b4da06b219612bf7c923c5c80c1050b", - "layout": { - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:23" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:28" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" - }, - { - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:20" - }, - { - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:74" - }, - { - "label": "_ssvRegistryContract", - "offset": 0, - "slot": "101", - "type": "t_contract(ISSVRegistry)1933", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:44" - }, - { - "label": "_token", - "offset": 0, - "slot": "102", - "type": "t_contract(IERC20)950", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:45" - }, - { - "label": "_minimumBlocksBeforeLiquidation", - "offset": 0, - "slot": "103", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:46" - }, - { - "label": "_operatorMaxFeeIncrease", - "offset": 0, - "slot": "104", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "label": "_networkFee", - "offset": 0, - "slot": "105", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:49" - }, - { - "label": "_networkFeeIndex", - "offset": 0, - "slot": "106", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:50" - }, - { - "label": "_networkFeeIndexBlockNumber", - "offset": 0, - "slot": "107", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:51" - }, - { - "label": "_networkEarnings", - "offset": 0, - "slot": "108", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:52" - }, - { - "label": "_networkEarningsBlockNumber", - "offset": 0, - "slot": "109", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:53" - }, - { - "label": "_withdrawnFromTreasury", - "offset": 0, - "slot": "110", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "label": "_operatorDatas", - "offset": 0, - "slot": "111", - "type": "t_mapping(t_uint256,t_struct(OperatorData)1955_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:56" - }, - { - "label": "_owners", - "offset": 0, - "slot": "112", - "type": "t_mapping(t_address,t_struct(OwnerData)1972_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:57" - }, - { - "label": "_operatorsInUseByAddress", - "offset": 0, - "slot": "113", - "type": "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)1983_storage))", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:58" - }, - { - "label": "_operatorsInUseList", - "offset": 0, - "slot": "114", - "type": "t_mapping(t_address,t_array(t_uint256)dyn_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:59" - }, - { - "label": "_lastOperatorUpdateNetworkFeeRun", - "offset": 0, - "slot": "115", - "type": "t_mapping(t_uint256,t_uint256)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:60" - }, - { - "label": "_declareOperatorFeePeriod", - "offset": 0, - "slot": "116", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:62" - }, - { - "label": "_executeOperatorFeePeriod", - "offset": 0, - "slot": "117", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:63" - }, - { - "label": "_feeChangeRequests", - "offset": 0, - "slot": "118", - "type": "t_mapping(t_uint256,t_struct(FeeChangeRequest)1990_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:64" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_array(t_uint256)dyn_storage": { - "label": "uint256[]", - "numberOfBytes": "32" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_contract(IERC20)950": { - "label": "contract IERC20", - "numberOfBytes": "20" - }, - "t_contract(ISSVRegistry)1933": { - "label": "contract ISSVRegistry", - "numberOfBytes": "20" - }, - "t_mapping(t_address,t_array(t_uint256)dyn_storage)": { - "label": "mapping(address => uint256[])", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_mapping(t_uint256,t_struct(OperatorInUse)1983_storage))": { - "label": "mapping(address => mapping(uint256 => struct SSVNetwork.OperatorInUse))", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_struct(OwnerData)1972_storage)": { - "label": "mapping(address => struct SSVNetwork.OwnerData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(FeeChangeRequest)1990_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.FeeChangeRequest)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(OperatorData)1955_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_struct(OperatorInUse)1983_storage)": { - "label": "mapping(uint256 => struct SSVNetwork.OperatorInUse)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_uint256)": { - "label": "mapping(uint256 => uint256)", - "numberOfBytes": "32" - }, - "t_struct(FeeChangeRequest)1990_storage": { - "label": "struct SSVNetwork.FeeChangeRequest", - "members": [ - { - "label": "fee", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "approvalBeginTime", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "approvalEndTime", - "type": "t_uint256", - "offset": 0, - "slot": "2" - } - ], - "numberOfBytes": "96" - }, - "t_struct(OperatorData)1955_storage": { - "label": "struct SSVNetwork.OperatorData", - "members": [ - { - "label": "blockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "earnings", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "index", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "indexBlockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "4" - } - ], - "numberOfBytes": "160" - }, - "t_struct(OperatorInUse)1983_storage": { - "label": "struct SSVNetwork.OperatorInUse", - "members": [ - { - "label": "index", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "validatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "used", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "exists", - "type": "t_bool", - "offset": 0, - "slot": "3" - }, - { - "label": "indexInArray", - "type": "t_uint256", - "offset": 0, - "slot": "4" - } - ], - "numberOfBytes": "160" - }, - "t_struct(OwnerData)1972_storage": { - "label": "struct SSVNetwork.OwnerData", - "members": [ - { - "label": "deposited", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "withdrawn", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "earned", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "used", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "networkFee", - "type": "t_uint256", - "offset": 0, - "slot": "4" - }, - { - "label": "networkFeeIndex", - "type": "t_uint256", - "offset": 0, - "slot": "5" - }, - { - "label": "activeValidatorCount", - "type": "t_uint256", - "offset": 0, - "slot": "6" - }, - { - "label": "validatorsDisabled", - "type": "t_bool", - "offset": 0, - "slot": "7" - } - ], - "numberOfBytes": "256" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - } - } - } - }, - "a137d6976fb8417660caab4bd2f922f40e1be67494354ba6d1e2b4677b308b8a": { - "address": "0x37Ab7eA3377239ff8A8AB8924C3a68eF956997f3", - "txHash": "0x4d9b40db96bbdacd2022d1318154298ede8c12bd06e376dabb93df32472e4001", - "layout": { - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:87" - }, - { - "label": "_ssvRegistryContract", - "offset": 0, - "slot": "101", - "type": "t_contract(ISSVRegistry)2133", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "label": "_token", - "offset": 0, - "slot": "102", - "type": "t_contract(IERC20)1319", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:48" - }, - { - "label": "_minimumBlocksBeforeLiquidation", - "offset": 20, - "slot": "102", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:49" - }, - { - "label": "_operatorMaxFeeIncrease", - "offset": 0, - "slot": "103", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:50" - }, - { - "label": "_networkFee", - "offset": 8, - "slot": "103", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:52" - }, - { - "label": "_networkFeeIndex", - "offset": 16, - "slot": "103", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:53" - }, - { - "label": "_networkFeeIndexBlockNumber", - "offset": 0, - "slot": "104", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "label": "_networkEarnings", - "offset": 0, - "slot": "105", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:55" - }, - { - "label": "_networkEarningsBlockNumber", - "offset": 0, - "slot": "106", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:56" - }, - { - "label": "_withdrawnFromTreasury", - "offset": 0, - "slot": "107", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:57" - }, - { - "label": "_operatorDatas", - "offset": 0, - "slot": "108", - "type": "t_mapping(t_uint32,t_struct(OperatorData)2163_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:59" - }, - { - "label": "_owners", - "offset": 0, - "slot": "109", - "type": "t_mapping(t_address,t_struct(OwnerData)2178_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:60" - }, - { - "label": "_operatorsInUseByAddress", - "offset": 0, - "slot": "110", - "type": "t_mapping(t_address,t_mapping(t_uint32,t_struct(OperatorInUse)2189_storage))", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:61" - }, - { - "label": "_operatorsInUseList", - "offset": 0, - "slot": "111", - "type": "t_mapping(t_address,t_array(t_uint32)dyn_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:62" - }, - { - "label": "_declareOperatorFeePeriod", - "offset": 0, - "slot": "112", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:64" - }, - { - "label": "_executeOperatorFeePeriod", - "offset": 8, - "slot": "112", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:65" - }, - { - "label": "_feeChangeRequests", - "offset": 0, - "slot": "113", - "type": "t_mapping(t_uint32,t_struct(FeeChangeRequest)2196_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:66" - }, - { - "label": "______gap", - "offset": 0, - "slot": "114", - "type": "t_array(t_uint256)50_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:810" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_array(t_uint32)dyn_storage": { - "label": "uint32[]", - "numberOfBytes": "32" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_contract(IERC20)1319": { - "label": "contract IERC20", - "numberOfBytes": "20" - }, - "t_contract(ISSVRegistry)2133": { - "label": "contract ISSVRegistry", - "numberOfBytes": "20" - }, - "t_mapping(t_address,t_array(t_uint32)dyn_storage)": { - "label": "mapping(address => uint32[])", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_mapping(t_uint32,t_struct(OperatorInUse)2189_storage))": { - "label": "mapping(address => mapping(uint32 => struct SSVNetwork.OperatorInUse))", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_struct(OwnerData)2178_storage)": { - "label": "mapping(address => struct SSVNetwork.OwnerData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint32,t_struct(FeeChangeRequest)2196_storage)": { - "label": "mapping(uint32 => struct SSVNetwork.FeeChangeRequest)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint32,t_struct(OperatorData)2163_storage)": { - "label": "mapping(uint32 => struct SSVNetwork.OperatorData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint32,t_struct(OperatorInUse)2189_storage)": { - "label": "mapping(uint32 => struct SSVNetwork.OperatorInUse)", - "numberOfBytes": "32" - }, - "t_struct(FeeChangeRequest)2196_storage": { - "label": "struct SSVNetwork.FeeChangeRequest", - "members": [ - { - "label": "fee", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "approvalBeginTime", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "approvalEndTime", - "type": "t_uint256", - "offset": 0, - "slot": "2" - } - ], - "numberOfBytes": "96" - }, - "t_struct(OperatorData)2163_storage": { - "label": "struct SSVNetwork.OperatorData", - "members": [ - { - "label": "blockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "earnings", - "type": "t_uint64", - "offset": 0, - "slot": "1" - }, - { - "label": "index", - "type": "t_uint64", - "offset": 8, - "slot": "1" - }, - { - "label": "indexBlockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "activeValidatorCount", - "type": "t_uint32", - "offset": 0, - "slot": "3" - } - ], - "numberOfBytes": "128" - }, - "t_struct(OperatorInUse)2189_storage": { - "label": "struct SSVNetwork.OperatorInUse", - "members": [ - { - "label": "index", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "used", - "type": "t_uint64", - "offset": 8, - "slot": "0" - }, - { - "label": "validatorCount", - "type": "t_uint32", - "offset": 16, - "slot": "0" - }, - { - "label": "indexInArray", - "type": "t_uint32", - "offset": 20, - "slot": "0" - }, - { - "label": "exists", - "type": "t_bool", - "offset": 24, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(OwnerData)2178_storage": { - "label": "struct SSVNetwork.OwnerData", - "members": [ - { - "label": "deposited", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "withdrawn", - "type": "t_uint64", - "offset": 8, - "slot": "0" - }, - { - "label": "used", - "type": "t_uint64", - "offset": 16, - "slot": "0" - }, - { - "label": "networkFee", - "type": "t_uint64", - "offset": 24, - "slot": "0" - }, - { - "label": "networkFeeIndex", - "type": "t_uint64", - "offset": 0, - "slot": "1" - }, - { - "label": "activeValidatorCount", - "type": "t_uint32", - "offset": 8, - "slot": "1" - }, - { - "label": "validatorsDisabled", - "type": "t_bool", - "offset": 12, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint32": { - "label": "uint32", - "numberOfBytes": "4" - }, - "t_uint64": { - "label": "uint64", - "numberOfBytes": "8" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "8e963b78dd2789e61e41bc9b746b63957dd1ec3744546b2eb37c569420383a25": { - "address": "0x5CeCA85e9087D1528540920d64eB348C71BBCD34", - "txHash": "0x73c6d29dc9566b610d020f61028edc2e6ad6109dfe3f67515fbbf7195a2a09dd", - "layout": { - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:87" - }, - { - "label": "_lastOperatorId", - "offset": 0, - "slot": "101", - "type": "t_struct(Counter)1372_storage", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:41" - }, - { - "label": "_operators", - "offset": 0, - "slot": "102", - "type": "t_mapping(t_uint32,t_struct(Operator)4837_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:43" - }, - { - "label": "_validators", - "offset": 0, - "slot": "103", - "type": "t_mapping(t_bytes_memory_ptr,t_struct(Validator)4847_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:44" - }, - { - "label": "_operatorsByOwnerAddress", - "offset": 0, - "slot": "104", - "type": "t_mapping(t_address,t_array(t_uint32)dyn_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:45" - }, - { - "label": "_owners", - "offset": 0, - "slot": "105", - "type": "t_mapping(t_address,t_struct(OwnerData)4855_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:46" - }, - { - "label": "_activeValidatorCount", - "offset": 0, - "slot": "106", - "type": "t_uint32", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:48" - }, - { - "label": "______gap", - "offset": 0, - "slot": "107", - "type": "t_array(t_uint256)50_storage", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:312" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_bytes_storage)dyn_storage": { - "label": "bytes[]", - "numberOfBytes": "32" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_array(t_uint32)dyn_storage": { - "label": "uint32[]", - "numberOfBytes": "32" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_bytes_memory_ptr": { - "label": "bytes", - "numberOfBytes": "32" - }, - "t_bytes_storage": { - "label": "bytes", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_array(t_uint32)dyn_storage)": { - "label": "mapping(address => uint32[])", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_struct(OwnerData)4855_storage)": { - "label": "mapping(address => struct SSVRegistry.OwnerData)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes_memory_ptr,t_struct(Validator)4847_storage)": { - "label": "mapping(bytes => struct SSVRegistry.Validator)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint32,t_struct(Operator)4837_storage)": { - "label": "mapping(uint32 => struct SSVRegistry.Operator)", - "numberOfBytes": "32" - }, - "t_string_storage": { - "label": "string", - "numberOfBytes": "32" - }, - "t_struct(Counter)1372_storage": { - "label": "struct Counters.Counter", - "members": [ - { - "label": "_value", - "type": "t_uint256", - "offset": 0, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Operator)4837_storage": { - "label": "struct SSVRegistry.Operator", - "members": [ - { - "label": "name", - "type": "t_string_storage", - "offset": 0, - "slot": "0" - }, - { - "label": "publicKey", - "type": "t_bytes_storage", - "offset": 0, - "slot": "1" - }, - { - "label": "fee", - "type": "t_uint64", - "offset": 0, - "slot": "2" - }, - { - "label": "ownerAddress", - "type": "t_address", - "offset": 8, - "slot": "2" - }, - { - "label": "score", - "type": "t_uint32", - "offset": 28, - "slot": "2" - }, - { - "label": "indexInOwner", - "type": "t_uint32", - "offset": 0, - "slot": "3" - }, - { - "label": "validatorCount", - "type": "t_uint32", - "offset": 4, - "slot": "3" - }, - { - "label": "active", - "type": "t_bool", - "offset": 8, - "slot": "3" - } - ], - "numberOfBytes": "128" - }, - "t_struct(OwnerData)4855_storage": { - "label": "struct SSVRegistry.OwnerData", - "members": [ - { - "label": "activeValidatorCount", - "type": "t_uint32", - "offset": 0, - "slot": "0" - }, - { - "label": "validatorsDisabled", - "type": "t_bool", - "offset": 4, - "slot": "0" - }, - { - "label": "validators", - "type": "t_array(t_bytes_storage)dyn_storage", - "offset": 0, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_struct(Validator)4847_storage": { - "label": "struct SSVRegistry.Validator", - "members": [ - { - "label": "operatorIds", - "type": "t_array(t_uint32)dyn_storage", - "offset": 0, - "slot": "0" - }, - { - "label": "ownerAddress", - "type": "t_address", - "offset": 0, - "slot": "1" - }, - { - "label": "indexInOwner", - "type": "t_uint32", - "offset": 20, - "slot": "1" - }, - { - "label": "active", - "type": "t_bool", - "offset": 24, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint32": { - "label": "uint32", - "numberOfBytes": "4" - }, - "t_uint64": { - "label": "uint64", - "numberOfBytes": "8" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "9fbc3c50a96da0f4a4b05451aae4b5508e1501da7c2dea105259f5af42dd03ee": { - "address": "0x3D776231fE7EE264c89a9B09647ACFD955cD1d9b", - "txHash": "0xc65b440b9d585cf6d25c8552fc89c6609755aadd259ae8143dc71a9b8ffd9128", - "layout": { - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:87" - }, - { - "label": "_ssvRegistryContract", - "offset": 0, - "slot": "101", - "type": "t_contract(ISSVRegistry)2133", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "label": "_token", - "offset": 0, - "slot": "102", - "type": "t_contract(IERC20)1319", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:48" - }, - { - "label": "_minimumBlocksBeforeLiquidation", - "offset": 20, - "slot": "102", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:49" - }, - { - "label": "_operatorMaxFeeIncrease", - "offset": 0, - "slot": "103", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:50" - }, - { - "label": "_networkFee", - "offset": 8, - "slot": "103", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:52" - }, - { - "label": "_networkFeeIndex", - "offset": 16, - "slot": "103", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:53" - }, - { - "label": "_networkFeeIndexBlockNumber", - "offset": 0, - "slot": "104", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "label": "_networkEarnings", - "offset": 0, - "slot": "105", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:55" - }, - { - "label": "_networkEarningsBlockNumber", - "offset": 0, - "slot": "106", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:56" - }, - { - "label": "_withdrawnFromTreasury", - "offset": 0, - "slot": "107", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:57" - }, - { - "label": "_operatorDatas", - "offset": 0, - "slot": "108", - "type": "t_mapping(t_uint32,t_struct(OperatorData)2163_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:59" - }, - { - "label": "_owners", - "offset": 0, - "slot": "109", - "type": "t_mapping(t_address,t_struct(OwnerData)2178_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:60" - }, - { - "label": "_operatorsInUseByAddress", - "offset": 0, - "slot": "110", - "type": "t_mapping(t_address,t_mapping(t_uint32,t_struct(OperatorInUse)2189_storage))", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:61" - }, - { - "label": "_operatorsInUseList", - "offset": 0, - "slot": "111", - "type": "t_mapping(t_address,t_array(t_uint32)dyn_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:62" - }, - { - "label": "_declareOperatorFeePeriod", - "offset": 0, - "slot": "112", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:64" - }, - { - "label": "_executeOperatorFeePeriod", - "offset": 8, - "slot": "112", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:65" - }, - { - "label": "_feeChangeRequests", - "offset": 0, - "slot": "113", - "type": "t_mapping(t_uint32,t_struct(FeeChangeRequest)2196_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:66" - }, - { - "label": "______gap", - "offset": 0, - "slot": "114", - "type": "t_array(t_uint256)50_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:810" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_array(t_uint32)dyn_storage": { - "label": "uint32[]", - "numberOfBytes": "32" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_contract(IERC20)1319": { - "label": "contract IERC20", - "numberOfBytes": "20" - }, - "t_contract(ISSVRegistry)2133": { - "label": "contract ISSVRegistry", - "numberOfBytes": "20" - }, - "t_mapping(t_address,t_array(t_uint32)dyn_storage)": { - "label": "mapping(address => uint32[])", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_mapping(t_uint32,t_struct(OperatorInUse)2189_storage))": { - "label": "mapping(address => mapping(uint32 => struct SSVNetwork.OperatorInUse))", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_struct(OwnerData)2178_storage)": { - "label": "mapping(address => struct SSVNetwork.OwnerData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint32,t_struct(FeeChangeRequest)2196_storage)": { - "label": "mapping(uint32 => struct SSVNetwork.FeeChangeRequest)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint32,t_struct(OperatorData)2163_storage)": { - "label": "mapping(uint32 => struct SSVNetwork.OperatorData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint32,t_struct(OperatorInUse)2189_storage)": { - "label": "mapping(uint32 => struct SSVNetwork.OperatorInUse)", - "numberOfBytes": "32" - }, - "t_struct(FeeChangeRequest)2196_storage": { - "label": "struct SSVNetwork.FeeChangeRequest", - "members": [ - { - "label": "fee", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "approvalBeginTime", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "approvalEndTime", - "type": "t_uint256", - "offset": 0, - "slot": "2" - } - ], - "numberOfBytes": "96" - }, - "t_struct(OperatorData)2163_storage": { - "label": "struct SSVNetwork.OperatorData", - "members": [ - { - "label": "blockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "earnings", - "type": "t_uint64", - "offset": 0, - "slot": "1" - }, - { - "label": "index", - "type": "t_uint64", - "offset": 8, - "slot": "1" - }, - { - "label": "indexBlockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "activeValidatorCount", - "type": "t_uint32", - "offset": 0, - "slot": "3" - } - ], - "numberOfBytes": "128" - }, - "t_struct(OperatorInUse)2189_storage": { - "label": "struct SSVNetwork.OperatorInUse", - "members": [ - { - "label": "index", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "used", - "type": "t_uint64", - "offset": 8, - "slot": "0" - }, - { - "label": "validatorCount", - "type": "t_uint32", - "offset": 16, - "slot": "0" - }, - { - "label": "indexInArray", - "type": "t_uint32", - "offset": 20, - "slot": "0" - }, - { - "label": "exists", - "type": "t_bool", - "offset": 24, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(OwnerData)2178_storage": { - "label": "struct SSVNetwork.OwnerData", - "members": [ - { - "label": "deposited", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "withdrawn", - "type": "t_uint64", - "offset": 8, - "slot": "0" - }, - { - "label": "used", - "type": "t_uint64", - "offset": 16, - "slot": "0" - }, - { - "label": "networkFee", - "type": "t_uint64", - "offset": 24, - "slot": "0" - }, - { - "label": "networkFeeIndex", - "type": "t_uint64", - "offset": 0, - "slot": "1" - }, - { - "label": "activeValidatorCount", - "type": "t_uint32", - "offset": 8, - "slot": "1" - }, - { - "label": "validatorsDisabled", - "type": "t_bool", - "offset": 12, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint32": { - "label": "uint32", - "numberOfBytes": "4" - }, - "t_uint64": { - "label": "uint64", - "numberOfBytes": "8" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "7ae45990633d68c16107a7c80e119861d9b29ea79b764ccb309281b1579a5b7c": { - "address": "0xC3e7ec559D2EC1B9e0d75a00FfB54304a3571bAA", - "txHash": "0x8705996dc5bbf5ef63a975cb41a5435cccf1d28510ca63394f9df1e446bc73b2", - "layout": { - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:87" - }, - { - "label": "_lastOperatorId", - "offset": 0, - "slot": "101", - "type": "t_struct(Counter)1372_storage", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:41" - }, - { - "label": "_operators", - "offset": 0, - "slot": "102", - "type": "t_mapping(t_uint32,t_struct(Operator)4837_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:43" - }, - { - "label": "_validators", - "offset": 0, - "slot": "103", - "type": "t_mapping(t_bytes_memory_ptr,t_struct(Validator)4847_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:44" - }, - { - "label": "_operatorsByOwnerAddress", - "offset": 0, - "slot": "104", - "type": "t_mapping(t_address,t_array(t_uint32)dyn_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:45" - }, - { - "label": "_owners", - "offset": 0, - "slot": "105", - "type": "t_mapping(t_address,t_struct(OwnerData)4855_storage)", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:46" - }, - { - "label": "_activeValidatorCount", - "offset": 0, - "slot": "106", - "type": "t_uint32", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:48" - }, - { - "label": "______gap", - "offset": 0, - "slot": "107", - "type": "t_array(t_uint256)50_storage", - "contract": "SSVRegistry", - "src": "contracts/SSVRegistry.sol:312" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_bytes_storage)dyn_storage": { - "label": "bytes[]", - "numberOfBytes": "32" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_array(t_uint32)dyn_storage": { - "label": "uint32[]", - "numberOfBytes": "32" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_bytes_memory_ptr": { - "label": "bytes", - "numberOfBytes": "32" - }, - "t_bytes_storage": { - "label": "bytes", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_array(t_uint32)dyn_storage)": { - "label": "mapping(address => uint32[])", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_struct(OwnerData)4855_storage)": { - "label": "mapping(address => struct SSVRegistry.OwnerData)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes_memory_ptr,t_struct(Validator)4847_storage)": { - "label": "mapping(bytes => struct SSVRegistry.Validator)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint32,t_struct(Operator)4837_storage)": { - "label": "mapping(uint32 => struct SSVRegistry.Operator)", - "numberOfBytes": "32" - }, - "t_string_storage": { - "label": "string", - "numberOfBytes": "32" - }, - "t_struct(Counter)1372_storage": { - "label": "struct Counters.Counter", - "members": [ - { - "label": "_value", - "type": "t_uint256", - "offset": 0, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Operator)4837_storage": { - "label": "struct SSVRegistry.Operator", - "members": [ - { - "label": "name", - "type": "t_string_storage", - "offset": 0, - "slot": "0" - }, - { - "label": "publicKey", - "type": "t_bytes_storage", - "offset": 0, - "slot": "1" - }, - { - "label": "fee", - "type": "t_uint64", - "offset": 0, - "slot": "2" - }, - { - "label": "ownerAddress", - "type": "t_address", - "offset": 8, - "slot": "2" - }, - { - "label": "score", - "type": "t_uint32", - "offset": 28, - "slot": "2" - }, - { - "label": "indexInOwner", - "type": "t_uint32", - "offset": 0, - "slot": "3" - }, - { - "label": "validatorCount", - "type": "t_uint32", - "offset": 4, - "slot": "3" - }, - { - "label": "active", - "type": "t_bool", - "offset": 8, - "slot": "3" - } - ], - "numberOfBytes": "128" - }, - "t_struct(OwnerData)4855_storage": { - "label": "struct SSVRegistry.OwnerData", - "members": [ - { - "label": "activeValidatorCount", - "type": "t_uint32", - "offset": 0, - "slot": "0" - }, - { - "label": "validatorsDisabled", - "type": "t_bool", - "offset": 4, - "slot": "0" - }, - { - "label": "validators", - "type": "t_array(t_bytes_storage)dyn_storage", - "offset": 0, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_struct(Validator)4847_storage": { - "label": "struct SSVRegistry.Validator", - "members": [ - { - "label": "operatorIds", - "type": "t_array(t_uint32)dyn_storage", - "offset": 0, - "slot": "0" - }, - { - "label": "ownerAddress", - "type": "t_address", - "offset": 0, - "slot": "1" - }, - { - "label": "indexInOwner", - "type": "t_uint32", - "offset": 20, - "slot": "1" - }, - { - "label": "active", - "type": "t_bool", - "offset": 24, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint32": { - "label": "uint32", - "numberOfBytes": "4" - }, - "t_uint64": { - "label": "uint64", - "numberOfBytes": "8" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "8ccca9e8e4945603d703a9f6291c363b0d55c2da050d38f2ddd015496db999d7": { - "address": "0x37FEC9dDB914de93aBBab16c2eb8bBa661a8c961", - "txHash": "0x511a2f5dd4152bc2368cba492f7f8309f75e6a0f2dd68a38ba79ff76bf64b014", - "layout": { - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:87" - }, - { - "label": "_ssvRegistryContract", - "offset": 0, - "slot": "101", - "type": "t_contract(ISSVRegistry)2133", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:47" - }, - { - "label": "_token", - "offset": 0, - "slot": "102", - "type": "t_contract(IERC20)1319", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:48" - }, - { - "label": "_minimumBlocksBeforeLiquidation", - "offset": 20, - "slot": "102", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:49" - }, - { - "label": "_operatorMaxFeeIncrease", - "offset": 0, - "slot": "103", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:50" - }, - { - "label": "_networkFee", - "offset": 8, - "slot": "103", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:52" - }, - { - "label": "_networkFeeIndex", - "offset": 16, - "slot": "103", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:53" - }, - { - "label": "_networkFeeIndexBlockNumber", - "offset": 0, - "slot": "104", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:54" - }, - { - "label": "_networkEarnings", - "offset": 0, - "slot": "105", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:55" - }, - { - "label": "_networkEarningsBlockNumber", - "offset": 0, - "slot": "106", - "type": "t_uint256", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:56" - }, - { - "label": "_withdrawnFromTreasury", - "offset": 0, - "slot": "107", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:57" - }, - { - "label": "_operatorDatas", - "offset": 0, - "slot": "108", - "type": "t_mapping(t_uint32,t_struct(OperatorData)2163_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:59" - }, - { - "label": "_owners", - "offset": 0, - "slot": "109", - "type": "t_mapping(t_address,t_struct(OwnerData)2178_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:60" - }, - { - "label": "_operatorsInUseByAddress", - "offset": 0, - "slot": "110", - "type": "t_mapping(t_address,t_mapping(t_uint32,t_struct(OperatorInUse)2189_storage))", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:61" - }, - { - "label": "_operatorsInUseList", - "offset": 0, - "slot": "111", - "type": "t_mapping(t_address,t_array(t_uint32)dyn_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:62" - }, - { - "label": "_declareOperatorFeePeriod", - "offset": 0, - "slot": "112", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:64" - }, - { - "label": "_executeOperatorFeePeriod", - "offset": 8, - "slot": "112", - "type": "t_uint64", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:65" - }, - { - "label": "_feeChangeRequests", - "offset": 0, - "slot": "113", - "type": "t_mapping(t_uint32,t_struct(FeeChangeRequest)2196_storage)", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:66" - }, - { - "label": "______gap", - "offset": 0, - "slot": "114", - "type": "t_array(t_uint256)50_storage", - "contract": "SSVNetwork", - "src": "contracts/SSVNetwork.sol:810" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_array(t_uint32)dyn_storage": { - "label": "uint32[]", - "numberOfBytes": "32" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_contract(IERC20)1319": { - "label": "contract IERC20", - "numberOfBytes": "20" - }, - "t_contract(ISSVRegistry)2133": { - "label": "contract ISSVRegistry", - "numberOfBytes": "20" - }, - "t_mapping(t_address,t_array(t_uint32)dyn_storage)": { - "label": "mapping(address => uint32[])", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_mapping(t_uint32,t_struct(OperatorInUse)2189_storage))": { - "label": "mapping(address => mapping(uint32 => struct SSVNetwork.OperatorInUse))", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_struct(OwnerData)2178_storage)": { - "label": "mapping(address => struct SSVNetwork.OwnerData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint32,t_struct(FeeChangeRequest)2196_storage)": { - "label": "mapping(uint32 => struct SSVNetwork.FeeChangeRequest)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint32,t_struct(OperatorData)2163_storage)": { - "label": "mapping(uint32 => struct SSVNetwork.OperatorData)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint32,t_struct(OperatorInUse)2189_storage)": { - "label": "mapping(uint32 => struct SSVNetwork.OperatorInUse)", - "numberOfBytes": "32" - }, - "t_struct(FeeChangeRequest)2196_storage": { - "label": "struct SSVNetwork.FeeChangeRequest", - "members": [ - { - "label": "fee", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "approvalBeginTime", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "approvalEndTime", - "type": "t_uint256", - "offset": 0, - "slot": "2" - } - ], - "numberOfBytes": "96" - }, - "t_struct(OperatorData)2163_storage": { - "label": "struct SSVNetwork.OperatorData", - "members": [ - { - "label": "blockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "earnings", - "type": "t_uint64", - "offset": 0, - "slot": "1" - }, - { - "label": "index", - "type": "t_uint64", - "offset": 8, - "slot": "1" - }, - { - "label": "indexBlockNumber", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "activeValidatorCount", - "type": "t_uint32", - "offset": 0, - "slot": "3" - } - ], - "numberOfBytes": "128" - }, - "t_struct(OperatorInUse)2189_storage": { - "label": "struct SSVNetwork.OperatorInUse", - "members": [ - { - "label": "index", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "used", - "type": "t_uint64", - "offset": 8, - "slot": "0" - }, - { - "label": "validatorCount", - "type": "t_uint32", - "offset": 16, - "slot": "0" - }, - { - "label": "indexInArray", - "type": "t_uint32", - "offset": 20, - "slot": "0" - }, - { - "label": "exists", - "type": "t_bool", - "offset": 24, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(OwnerData)2178_storage": { - "label": "struct SSVNetwork.OwnerData", - "members": [ - { - "label": "deposited", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "withdrawn", - "type": "t_uint64", - "offset": 8, - "slot": "0" - }, - { - "label": "used", - "type": "t_uint64", - "offset": 16, - "slot": "0" - }, - { - "label": "networkFee", - "type": "t_uint64", - "offset": 24, - "slot": "0" - }, - { - "label": "networkFeeIndex", - "type": "t_uint64", - "offset": 0, - "slot": "1" - }, - { - "label": "activeValidatorCount", - "type": "t_uint32", - "offset": 8, - "slot": "1" - }, - { - "label": "validatorsDisabled", - "type": "t_bool", - "offset": 12, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint32": { - "label": "uint32", - "numberOfBytes": "4" - }, - "t_uint64": { - "label": "uint64", - "numberOfBytes": "8" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - } - } -} diff --git a/.openzeppelin/mainnet.json b/.openzeppelin/mainnet.json deleted file mode 100644 index 5b0d86ab..00000000 --- a/.openzeppelin/mainnet.json +++ /dev/null @@ -1,170 +0,0 @@ -{ - "manifestVersion": "3.2", - "admin": { - "address": "0xaf8a99140871538ac7a6883890c83892aF950bED", - "txHash": "0x448aa0d55730452d0c3a2d2001cf56197ac7c6b8fa24bcde7b1d3ea645443baa", - "deployTransaction": { - "hash": "0x448aa0d55730452d0c3a2d2001cf56197ac7c6b8fa24bcde7b1d3ea645443baa", - "type": 0, - "accessList": null, - "blockHash": null, - "blockNumber": null, - "transactionIndex": null, - "confirmations": 0, - "from": "0x3187a42658417a4d60866163A4534Ce00D40C0C8", - "gasPrice": { - "type": "BigNumber", - "hex": "0x09c7652400" - }, - "gasLimit": { - "type": "BigNumber", - "hex": "0x0762b4" - }, - "to": null, - "value": { - "type": "BigNumber", - "hex": "0x00" - }, - "nonce": 8, - "data": "0x608060405234801561001057600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610759806100616000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead146101645761007b565b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610515565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee366004610554565b610292565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461058c565b61031c565b34801561013057600080fd5b506100d161013f366004610554565b6103ad565b34801561015057600080fd5b506100d161015f366004610515565b610405565b34801561017057600080fd5b506100a061017f366004610515565b6104ef565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d9190610538565b949350505050565b6000546001600160a01b031633146102485760405162461bcd60e51b815260040161023f906106c0565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146102bc5760405162461bcd60e51b815260040161023f906106c0565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561030057600080fd5b505af1158015610314573d6000803e3d6000fd5b505050505050565b6000546001600160a01b031633146103465760405162461bcd60e51b815260040161023f906106c0565b60405163278f794360e11b81526001600160a01b03841690634f1ef286903490610376908690869060040161065d565b6000604051808303818588803b15801561038f57600080fd5b505af11580156103a3573d6000803e3d6000fd5b5050505050505050565b6000546001600160a01b031633146103d75760405162461bcd60e51b815260040161023f906106c0565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe6906024016102e6565b6000546001600160a01b0316331461042f5760405162461bcd60e51b815260040161023f906106c0565b6001600160a01b0381166104945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161023f565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b600060208284031215610526578081fd5b81356105318161070b565b9392505050565b600060208284031215610549578081fd5b81516105318161070b565b60008060408385031215610566578081fd5b82356105718161070b565b915060208301356105818161070b565b809150509250929050565b6000806000606084860312156105a0578081fd5b83356105ab8161070b565b925060208401356105bb8161070b565b9150604084013567ffffffffffffffff808211156105d7578283fd5b818601915086601f8301126105ea578283fd5b8135818111156105fc576105fc6106f5565b604051601f8201601f19908116603f01168101908382118183101715610624576106246106f5565b8160405282815289602084870101111561063c578586fd5b82602086016020830137856020848301015280955050505050509250925092565b600060018060a01b038416825260206040818401528351806040850152825b818110156106985785810183015185820160600152820161067c565b818111156106a95783606083870101525b50601f01601f191692909201606001949350505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461072057600080fd5b5056fea2646970667358221220d849f96f3086b9f82cdcf665adb8c697ace05638da1c7c16ab2d26293717af6764736f6c63430008020033", - "r": "0x9279312f1874ba0669f96f50218c71dacd44c349ab7a21ab15a6326932a10b6b", - "s": "0x03082669d14c90746ee5a55abbc4cee24a07c24f0404ea72570d2f9e7559ffd6", - "v": 38, - "creates": "0xaf8a99140871538ac7a6883890c83892aF950bED", - "chainId": 1 - } - }, - "proxies": [ - { - "address": "0xedf62bBaE1c246a2879d4CDF7D057843D236534a", - "txHash": "0x4369ac13010a739cf5ab7870ad03b6a7d281e76fd099028e16e91cbb21d4dcbd", - "kind": "transparent" - }, - { - "address": "0xc398C2935a274a3a39D86B4E3d36dabA616442e6", - "txHash": "0x2afeb4d533bf5ceb4816f93f349eaf10c154b2e972af9bbafbe80f4ca1e34e30", - "kind": "transparent" - } - ], - "impls": { - "465630543d7a7c3cda9d0c8c5c83972657651e848f528060f68573798893ff16": { - "address": "0x051cD7c00d37d54A9eAAcBb0Ef17AB790D93e4a5", - "txHash": "0x1d92d59ea4708904c40275cbf3a016dc3bdb15bc280bc9dd6c46bc08692ce875", - "layout": { - "storage": [ - { - "contract": "Initializable", - "label": "_initialized", - "type": "t_bool", - "src": "@openzeppelin/contracts/proxy/utils/Initializable.sol:21" - }, - { - "contract": "Initializable", - "label": "_initializing", - "type": "t_bool", - "src": "@openzeppelin/contracts/proxy/utils/Initializable.sol:26" - }, - { - "contract": "TokenVestingController", - "label": "_token", - "type": "t_contract(IERC20)987", - "src": "contracts/vesting/TokenVestingController.sol:13" - }, - { - "contract": "TokenVestingController", - "label": "_minimumAmountPerContract", - "type": "t_uint256", - "src": "contracts/vesting/TokenVestingController.sol:14" - }, - { - "contract": "TokenVestingController", - "label": "_vestings", - "type": "t_mapping(t_address,t_array(t_contract(TokenVesting)5114)dyn_storage)", - "src": "contracts/vesting/TokenVestingController.sol:15" - }, - { - "contract": "TokenVestingController", - "label": "_owners", - "type": "t_mapping(t_contract(TokenVesting)5114,t_address)", - "src": "contracts/vesting/TokenVestingController.sol:16" - } - ], - "types": { - "t_contract(IERC20)987": { - "label": "contract IERC20" - }, - "t_uint256": { - "label": "uint256" - }, - "t_mapping(t_address,t_array(t_contract(TokenVesting)5114)dyn_storage)": { - "label": "mapping(address => contract TokenVesting[])" - }, - "t_address": { - "label": "address" - }, - "t_array(t_contract(TokenVesting)5114)dyn_storage": { - "label": "contract TokenVesting[]" - }, - "t_contract(TokenVesting)5114": { - "label": "contract TokenVesting" - }, - "t_mapping(t_contract(TokenVesting)5114,t_address)": { - "label": "mapping(contract TokenVesting => address)" - }, - "t_bool": { - "label": "bool" - } - } - } - }, - "baf9cc9d16f9682ee3153164cd1610c561f4a2b4e9bf09bd3b7fc9f175992efc": { - "address": "0x77511aA462c73C28016084477e5C7dFC315Db8b1", - "txHash": "0x15dbd84fadb837b594007a3c099a111de564e63700204077a3be4c81550750d6", - "layout": { - "storage": [ - { - "contract": "Initializable", - "label": "_initialized", - "type": "t_bool", - "src": "@openzeppelin/contracts/proxy/utils/Initializable.sol:21" - }, - { - "contract": "Initializable", - "label": "_initializing", - "type": "t_bool", - "src": "@openzeppelin/contracts/proxy/utils/Initializable.sol:26" - }, - { - "contract": "DEX", - "label": "_cdtToken", - "type": "t_contract(IERC20)987", - "src": "contracts/DEX.sol:14" - }, - { - "contract": "DEX", - "label": "_ssvToken", - "type": "t_contract(IERC20)987", - "src": "contracts/DEX.sol:15" - }, - { - "contract": "DEX", - "label": "_rate", - "type": "t_uint256", - "src": "contracts/DEX.sol:16" - } - ], - "types": { - "t_contract(IERC20)987": { - "label": "contract IERC20" - }, - "t_uint256": { - "label": "uint256" - }, - "t_bool": { - "label": "bool" - } - } - } - } - } -} diff --git a/README.md b/README.md index bd801722..98caa6f5 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,7 @@ Before run the cli command, in `.env` need to add the following seetings: ```sh SSVREGISTRY_ADDRESS=#SSV Registry contract address -SSVTOKEN_ADDRESS=#SSV Token contract address +SSV_TOKEN_ADDRESS=#SSV Token contract address ``` After that: diff --git a/contracts/ISSVNetwork.sol b/contracts/ISSVNetwork.sol index a1549e62..191eafb3 100644 --- a/contracts/ISSVNetwork.sol +++ b/contracts/ISSVNetwork.sol @@ -1,54 +1,80 @@ // File: contracts/ISSVNetwork.sol // SPDX-License-Identifier: GPL-3.0-or-later pragma solidity ^0.8.2; - -import "./ISSVRegistry.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; + interface ISSVNetwork { + /**********/ + /* Events */ + /**********/ + + /** + * @dev Emitted when a new operator has been added. + * @param id operator's ID. + * @param owner Operator's ethereum address that can collect fees. + * @param publicKey Operator's public key. Will be used to encrypt secret shares of validators keys. + * @param fee Operator's fee. + */ + event OperatorAdded( + uint64 id, + address indexed owner, + bytes publicKey, + uint256 fee + ); + /** - * @dev Emitted when the account has been enabled. - * @param ownerAddress Operator's owner. + * @dev Emitted when operator has been removed. + * @param id operator's ID. */ - event AccountEnable(address indexed ownerAddress); + event OperatorRemoved(uint64 id); /** - * @dev Emitted when the account has been liquidated. - * @param ownerAddress Operator's owner. + * @dev Emitted when the validator has been added. + * @param publicKey The public key of a validator. + * @param clusterId The cluster id the validator been added to. + * @param shares snappy compressed shares(a set of encrypted and public shares). */ - event AccountLiquidation(address indexed ownerAddress); + event ValidatorAdded( + bytes publicKey, + bytes32 clusterId, + bytes shares + ); /** - * @dev Emitted when the operator has been added. - * @param id operator's ID. - * @param name Operator's display name. - * @param ownerAddress Operator's ethereum address that can collect fees. - * @param publicKey Operator's public key. Will be used to encrypt secret shares of validators keys. - * @param fee Operator's initial fee. + * @dev Emitted when validator was transferred between pods. + * @param publicKey The public key of a validator. + * @param clusterId The validator's new cluster id. + * @param shares snappy compressed shares(a set of encrypted and public shares). */ - event OperatorRegistration( - uint32 indexed id, - string name, - address indexed ownerAddress, + event ValidatorTransferred( bytes publicKey, - uint256 fee + bytes32 clusterId, + bytes shares ); /** - * @dev Emitted when the operator has been removed. - * @param operatorId operator's ID. - * @param ownerAddress Operator's owner. + * @dev Emitted when the validator is removed. + * @param publicKey The public key of a validator. + * @param clusterId The pod id the validator has been removed from. */ - event OperatorRemoval(uint32 operatorId, address indexed ownerAddress); + event ValidatorRemoved(bytes publicKey, bytes32 clusterId); event OperatorFeeDeclaration( address indexed ownerAddress, - uint32 operatorId, + uint64 operatorId, uint256 blockNumber, uint256 fee ); - event DeclaredOperatorFeeCancelation(address indexed ownerAddress, uint32 operatorId); + /** + * @dev Emitted when operator changed fee. + * @param id operator's ID. + * @param fee operator's new fee. + */ + event OperatorFeeSet(uint64 id, uint64 fee); + + event DeclaredOperatorFeeCancelation(address indexed ownerAddress, uint64 operatorId); /** * @dev Emitted when an operator's fee is updated. @@ -58,63 +84,22 @@ interface ISSVNetwork { */ event OperatorFeeExecution( address indexed ownerAddress, - uint32 operatorId, + uint64 operatorId, uint256 blockNumber, uint256 fee ); - /** - * @dev Emitted when an operator's score is updated. - * @param operatorId operator's ID. - * @param ownerAddress Operator's owner. - * @param blockNumber from which block number. - * @param score updated score value. - */ - event OperatorScoreUpdate( - uint32 operatorId, - address indexed ownerAddress, - uint256 blockNumber, - uint256 score - ); + event PodLiquidated(address ownerAddress, bytes32 clusterId); - /** - * @dev Emitted when the validator has been added. - * @param ownerAddress The user's ethereum address that is the owner of the validator. - * @param publicKey The public key of a validator. - * @param operatorIds The operators public keys list for this validator. - * @param sharesPublicKeys The shared publick keys list for this validator. - * @param encryptedKeys The encrypted keys list for this validator. - */ - event ValidatorRegistration( - address indexed ownerAddress, - bytes publicKey, - uint32[] operatorIds, - bytes[] sharesPublicKeys, - bytes[] encryptedKeys - ); + event PodEnabled(address ownerAddress, bytes32 clusterId); - /** - * @dev Emitted when the validator is removed. - * @param ownerAddress Validator's owner. - * @param publicKey The public key of a validator. - */ - event ValidatorRemoval(address indexed ownerAddress, bytes publicKey); + event OperatorFeeIncreaseLimitUpdate(uint64 value); - /** - * @dev Emitted when an owner deposits funds. - * @param value Amount of tokens. - * @param ownerAddress Owner's address. - * @param senderAddress Sender's address. - */ - event FundsDeposit(uint256 value, address indexed ownerAddress, address indexed senderAddress); + event DeclareOperatorFeePeriodUpdate(uint256 value); - /** - * @dev Emitted when an owner withdraws funds. - * @param value Amount of tokens. - * @param ownerAddress Owner's address. - */ - event FundsWithdrawal(uint256 value, address indexed ownerAddress); + event ExecuteOperatorFeePeriodUpdate(uint256 value); + event PodCreated(address ownerAddress, bytes32 clusterId); /** * @dev Emitted when the network fee is updated. * @param oldFee The old fee @@ -122,127 +107,99 @@ interface ISSVNetwork { */ event NetworkFeeUpdate(uint256 oldFee, uint256 newFee); - /** - * @dev Emitted when transfer fees are withdrawn. - * @param value The amount of tokens withdrawn. - * @param recipient The recipient address. - */ - event NetworkFeesWithdrawal(uint256 value, address recipient); - - event DeclareOperatorFeePeriodUpdate(uint256 value); - - event ExecuteOperatorFeePeriodUpdate(uint256 value); - - event LiquidationThresholdPeriodUpdate(uint256 value); - - event OperatorFeeIncreaseLimitUpdate(uint256 value); + event PodFundsWithdrawal(uint256 value, bytes32 clusterId, address owner); + event OperatorFundsWithdrawal(uint256 value, uint64 operatorId, address owner); - event ValidatorsPerOperatorLimitUpdate(uint256 value); - event RegisteredOperatorsPerAccountLimitUpdate(uint256 value); + event FundsDeposit(uint256 value, bytes32 clusterId, address owner); - event MinimumBlocksBeforeLiquidationUpdate(uint256 value); + /**********/ + /* Errors */ + /**********/ - event OperatorMaxFeeIncreaseUpdate(uint256 value); - - /** errors */ - error ValidatorWithPublicKeyNotExist(); - error CallerNotValidatorOwner(); - error OperatorWithPublicKeyNotExist(); - error CallerNotOperatorOwner(); + error CallerNotOwner(); error FeeTooLow(); error FeeExceedsIncreaseLimit(); error NoPendingFeeChangeRequest(); error ApprovalNotWithinTimeframe(); + error OperatorWithPublicKeyNotExist(); + error OperatorNotFound(); + error OperatorDoesNotExist(); error NotEnoughBalance(); - error BurnRatePositive(); - error AccountAlreadyEnabled(); + error ValidatorAlreadyExists(); + error PodLiquidatable(); + error PodNotLiquidatable(); + error InvalidPublicKeyLength(); + error OperatorIdsStructureInvalid(); + error ValidatorNotOwned(); + error InvalidCluster(); + error ParametersMismatch(); error NegativeBalance(); - error BelowMinimumBlockPeriod(); - error ExceedManagingOperatorsPerAccountLimit(); + error ClusterAlreadyExists(); + error ClusterNotExists(); + error PodAlreadyEnabled(); + error PodAlreadyExists(); + error PodNotExists(); + error BurnRatePositive(); + + /****************/ + /* Initializers */ + /****************/ /** - * @dev Initializes the contract. - * @param registryAddress_ The registry address. - * @param token_ The network token. - * @param minimumBlocksBeforeLiquidation_ The minimum blocks before liquidation. - * @param declareOperatorFeePeriod_ The period an operator needs to wait before they can approve their fee. - * @param executeOperatorFeePeriod_ The length of the period in which an operator can approve their fee. - */ + * @dev Initializes the contract. + * @param token_ The network token. + * @param operatorMaxFeeIncrease_ The step limit to increase the operator fee + * @param declareOperatorFeePeriod_ The period an operator needs to wait before they can approve their fee. + * @param executeOperatorFeePeriod_ The length of the period in which an operator can approve their fee. + */ function initialize( - ISSVRegistry registryAddress_, IERC20 token_, - uint64 minimumBlocksBeforeLiquidation_, uint64 operatorMaxFeeIncrease_, uint64 declareOperatorFeePeriod_, uint64 executeOperatorFeePeriod_ ) external; + /*******************************/ + /* Operator External Functions */ + /*******************************/ + /** * @dev Registers a new operator. - * @param name Operator's display name. * @param publicKey Operator's public key. Used to encrypt secret shares of validators keys. + * @param fee operator's fee. */ function registerOperator( - string calldata name, bytes calldata publicKey, uint256 fee - ) external returns (uint32); + ) external returns (uint64); /** * @dev Removes an operator. - * @param operatorId Operator's id. + * @param id Operator's id. */ - function removeOperator(uint32 operatorId) external; + function removeOperator(uint64 id) external; - /** - * @dev Set operator's fee change request by public key. - * @param operatorId Operator's id. - * @param operatorFee The operator's updated fee. - */ - function declareOperatorFee(uint32 operatorId, uint256 operatorFee) external; + function declareOperatorFee(uint64 operatorId, uint256 fee) external; - function cancelDeclaredOperatorFee(uint32 operatorId) external; + function executeOperatorFee(uint64 operatorId) external; - function executeOperatorFee(uint32 operatorId) external; + function cancelDeclaredOperatorFee(uint64 operatorId) external; - /** - * @dev Updates operator's score by public key. - * @param operatorId Operator's id. - * @param score The operators's updated score. - */ - function updateOperatorScore(uint32 operatorId, uint32 score) external; + /********************************/ + /* Validator External Functions */ + /********************************/ /** * @dev Registers a new validator. * @param publicKey Validator public key. - * @param operatorIds Operator public keys. - * @param sharesPublicKeys Shares public keys. - * @param sharesEncrypted Encrypted private keys. - * @param amount Amount of tokens to deposit. + * @param clusterId Cluster id. + * @param shares snappy compressed shares(a set of encrypted and public shares). */ function registerValidator( bytes calldata publicKey, - uint32[] calldata operatorIds, - bytes[] calldata sharesPublicKeys, - bytes[] calldata sharesEncrypted, - uint256 amount - ) external; - - /** - * @dev Updates a validator. - * @param publicKey Validator public key. - * @param operatorIds Operator public keys. - * @param sharesPublicKeys Shares public keys. - * @param sharesEncrypted Encrypted private keys. - * @param amount Amount of tokens to deposit. - */ - function updateValidator( - bytes calldata publicKey, - uint32[] calldata operatorIds, - bytes[] calldata sharesPublicKeys, - bytes[] calldata sharesEncrypted, - uint256 amount + bytes32 clusterId, + bytes calldata shares ) external; /** @@ -252,152 +209,100 @@ interface ISSVNetwork { function removeValidator(bytes calldata publicKey) external; /** - * @dev Deposits tokens for the sender. - * @param ownerAddress Owners' addresses. - * @param tokenAmount Tokens amount. + * @dev Transfers a validator. + * @param publicKey Validator public key. + * @param newClusterId new cluster id to transfer the validator to. + * @param shares snappy compressed shares(a set of encrypted and public shares). */ - function deposit(address ownerAddress, uint256 tokenAmount) external; + function transferValidator( + bytes calldata publicKey, + bytes32 newClusterId, + bytes calldata shares + ) external; - /** - * @dev Withdraw tokens for the sender. - * @param tokenAmount Tokens amount. - */ - function withdraw(uint256 tokenAmount) external; + /**************************/ + /* Pod External Functions */ + /**************************/ - /** - * @dev Withdraw total balance to the sender, deactivating their validators if necessary. - */ - function withdrawAll() external; + function registerPod(uint64[] memory operatorIds, uint256 amount) external; - /** - * @dev Liquidates multiple owners. - * @param ownerAddresses Owners' addresses. - */ - function liquidate(address[] calldata ownerAddresses) external; + function liquidate(address ownerAddress, bytes32 clusterId) external; - /** - * @dev Enables msg.sender account. - * @param amount Tokens amount. - */ - function reactivateAccount(uint256 amount) external; + function reactivatePod(bytes32 clusterId, uint256 amount) external; - /** - * @dev Updates the number of blocks left for an owner before they can be liquidated. - * @param blocks The new value. - */ - function updateLiquidationThresholdPeriod(uint64 blocks) external; + /******************************/ + /* Balance External Functions */ + /******************************/ + + function deposit(address owner, bytes32 clusterId, uint256 amount) external; + + function deposit(bytes32 clusterId, uint256 amount) external; + + function withdrawOperatorBalance(uint64 operatorId, uint256 tokenAmount) external; + + function withdrawOperatorBalance(uint64 operatorId) external; + + function withdrawPodBalance(bytes32 clusterId, uint256 tokenAmount) external; + + /**************************/ + /* DAO External Functions */ + /**************************/ + + function updateNetworkFee(uint256 fee) external; - /** - * @dev Updates the maximum fee increase in pecentage. - * @param newOperatorMaxFeeIncrease The new value. - */ function updateOperatorFeeIncreaseLimit(uint64 newOperatorMaxFeeIncrease) external; function updateDeclareOperatorFeePeriod(uint64 newDeclareOperatorFeePeriod) external; function updateExecuteOperatorFeePeriod(uint64 newExecuteOperatorFeePeriod) external; - /** - * @dev Updates the network fee. - * @param fee the new fee - */ - function updateNetworkFee(uint256 fee) external; - /** - * @dev Withdraws network fees. - * @param amount Amount to withdraw - */ - function withdrawNetworkEarnings(uint256 amount) external; + /************************************/ + /* Operator External View Functions */ + /************************************/ - /** - * @dev Gets total balance for an owner. - * @param ownerAddress Owner's address. - */ - function getAddressBalance(address ownerAddress) external view returns (uint256); + function getOperatorFee(uint64 operatorId) external view returns (uint256); - function isLiquidated(address ownerAddress) external view returns (bool); + function getOperatorDeclaredFee(uint64 operatorId) external view returns (uint256, uint256, uint256); - /** - * @dev Gets an operator by operator id. - * @param operatorId Operator's id. - */ - function getOperatorById(uint32 operatorId) - external view - returns ( - string memory, - address, - bytes memory, - uint256, - uint256, - uint256, - bool - ); + /*******************************/ + /* Pod External View Functions */ + /*******************************/ - /** - * @dev Gets a validator public keys by owner's address. - * @param ownerAddress Owner's Address. - */ - function getValidatorsByOwnerAddress(address ownerAddress) - external view - returns (bytes[] memory); + function getClusterId(uint64[] memory operatorIds) external view returns(bytes32); - /** - * @dev Gets operators list which are in use by validator. - * @param validatorPublicKey Validator's public key. - */ - function getOperatorsByValidator(bytes calldata validatorPublicKey) - external view - returns (uint32[] memory); + function getPod(uint64[] memory operatorIds) external view returns(bytes32); - function getOperatorDeclaredFee(uint32 operatorId) external view returns (uint256, uint256, uint256); + function isLiquidatable(address ownerAddress, bytes32 clusterId) external view returns(bool); - /** - * @dev Gets operator current fee. - * @param operatorId Operator's id. - */ - function getOperatorFee(uint32 operatorId) external view returns (uint256); + function isLiquidated(address ownerAddress, bytes32 clusterId) external view returns(bool); - /** - * @dev Gets the network fee for an address. - * @param ownerAddress Owner's address. - */ - function addressNetworkFee(address ownerAddress) external view returns (uint256); + /***********************************/ + /* Balance External View Functions */ + /***********************************/ /** - * @dev Returns the burn rate of an owner, returns 0 if negative. - * @param ownerAddress Owner's address. + * @dev Gets the operators current snapshot. + * @param id Operator's id. + * @return currentBlock the block that the snapshot is updated to. + * @return index the index of the operator. + * @return balance the current balance of the operator. */ - function getAddressBurnRate(address ownerAddress) external view returns (uint256); + function operatorSnapshot(uint64 id) external view returns (uint64 currentBlock, uint64 index, uint256 balance); - /** - * @dev Check if an owner is liquidatable. - * @param ownerAddress Owner's address. - */ - function isLiquidatable(address ownerAddress) external view returns (bool); + function podBalanceOf(address owner, bytes32 clusterId) external view returns (uint256); - /** - * @dev Returns the network fee. - */ - function getNetworkFee() external view returns (uint256); + /*******************************/ + /* DAO External View Functions */ + /*******************************/ - /** - * @dev Gets the available network earnings - */ - function getNetworkEarnings() external view returns (uint256); - - /** - * @dev Returns the number of blocks left for an owner before they can be liquidated. - */ - function getLiquidationThresholdPeriod() external view returns (uint256); + function getNetworkFee() external view returns (uint256); - /** - * @dev Returns the maximum fee increase in pecentage - */ - function getOperatorFeeIncreaseLimit() external view returns (uint256); + function getNetworkBalance() external view returns (uint256); - function getExecuteOperatorFeePeriod() external view returns (uint256); + function getOperatorFeeIncreaseLimit() external view returns (uint64); - function getDeclaredOperatorFeePeriod() external view returns (uint256); + function getExecuteOperatorFeePeriod() external view returns (uint64); - function validatorsPerOperatorCount(uint32 operatorId) external view returns (uint32); -} + function getDeclaredOperatorFeePeriod() external view returns (uint64); +} \ No newline at end of file diff --git a/contracts/ISSVRegistry.sol b/contracts/ISSVRegistry.sol deleted file mode 100644 index d5992ed2..00000000 --- a/contracts/ISSVRegistry.sol +++ /dev/null @@ -1,171 +0,0 @@ -// File: contracts/ISSVRegistry.sol -// SPDX-License-Identifier: GPL-3.0-or-later -pragma solidity ^0.8.2; - -interface ISSVRegistry { - struct Oess { - uint32 operatorId; - bytes sharedPublicKey; - bytes encryptedKey; - } - - /** errors */ - error ExceedRegisteredOperatorsByAccountLimit(); - error OperatorDeleted(); - error ValidatorAlreadyExists(); - error ExceedValidatorLimit(); - error OperatorNotFound(); - error InvalidPublicKeyLength(); - error OessDataStructureInvalid(); - - /** - * @dev Initializes the contract - */ - function initialize() external; - - /** - * @dev Registers a new operator. - * @param name Operator's display name. - * @param ownerAddress Operator's ethereum address that can collect fees. - * @param publicKey Operator's public key. Will be used to encrypt secret shares of validators keys. - * @param fee The fee which the operator charges for each block. - */ - function registerOperator(string calldata name, address ownerAddress, bytes calldata publicKey, uint64 fee) external returns (uint32); - - /** - * @dev removes an operator. - * @param operatorId Operator id. - */ - function removeOperator(uint32 operatorId) external; - - /** - * @dev Updates an operator fee. - * @param operatorId Operator id. - * @param fee New operator fee. - */ - function updateOperatorFee( - uint32 operatorId, - uint64 fee - ) external; - - /** - * @dev Updates an operator fee. - * @param operatorId Operator id. - * @param score New score. - */ - function updateOperatorScore( - uint32 operatorId, - uint32 score - ) external; - - /** - * @dev Registers a new validator. - * @param ownerAddress The user's ethereum address that is the owner of the validator. - * @param publicKey Validator public key. - * @param operatorIds Operator ids. - * @param sharesPublicKeys Shares public keys. - * @param sharesEncrypted Encrypted private keys. - */ - function registerValidator( - address ownerAddress, - bytes calldata publicKey, - uint32[] calldata operatorIds, - bytes[] calldata sharesPublicKeys, - bytes[] calldata sharesEncrypted - ) external; - - /** - * @dev removes a validator. - * @param publicKey Validator's public key. - */ - function removeValidator(bytes calldata publicKey) external; - - function enableOwnerValidators(address ownerAddress) external; - - function disableOwnerValidators(address ownerAddress) external; - - function isLiquidated(address ownerAddress) external view returns (bool); - - /** - * @dev Gets an operator by operator id. - * @param operatorId Operator id. - */ - function getOperatorById(uint32 operatorId) - external view - returns ( - string memory, - address, - bytes memory, - uint256, - uint256, - uint256, - bool - ); - - /** - * @dev Returns operators for owner. - * @param ownerAddress Owner's address. - */ - function getOperatorsByOwnerAddress(address ownerAddress) - external view - returns (uint32[] memory); - - /** - * @dev Gets operators list which are in use by validator. - * @param validatorPublicKey Validator's public key. - */ - function getOperatorsByValidator(bytes calldata validatorPublicKey) - external view - returns (uint32[] memory); - - /** - * @dev Gets operator's owner. - * @param operatorId Operator id. - */ - function getOperatorOwner(uint32 operatorId) external view returns (address); - - /** - * @dev Gets operator current fee. - * @param operatorId Operator id. - */ - function getOperatorFee(uint32 operatorId) - external view - returns (uint64); - - /** - * @dev Gets active validator count. - */ - function activeValidatorCount() external view returns (uint32); - - /** - * @dev Gets an validator by public key. - * @param publicKey Validator's public key. - */ - function validators(bytes calldata publicKey) - external view - returns ( - address, - bytes memory, - bool - ); - - /** - * @dev Gets a validator public keys by owner's address. - * @param ownerAddress Owner's Address. - */ - function getValidatorsByAddress(address ownerAddress) - external view - returns (bytes[] memory); - - /** - * @dev Get validator's owner. - * @param publicKey Validator's public key. - */ - function getValidatorOwner(bytes calldata publicKey) external view returns (address); - - /** - * @dev Get validators amount per operator. - * @param operatorId Operator public key - */ - function validatorsPerOperatorCount(uint32 operatorId) external view returns (uint32); -} \ No newline at end of file diff --git a/contracts/SSVNetwork.sol b/contracts/SSVNetwork.sol index 72125212..8c9dce63 100644 --- a/contracts/SSVNetwork.sol +++ b/contracts/SSVNetwork.sol @@ -1,811 +1,948 @@ -// File: contracts/SSVNetwork.sol +// File: contracts/SSVRegistry.sol // SPDX-License-Identifier: GPL-3.0-or-later pragma solidity ^0.8.2; +import "./ISSVNetwork.sol"; + +import "@openzeppelin/contracts/utils/Counters.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; -import "./utils/VersionedContract.sol"; import "./utils/Types.sol"; -import "./ISSVNetwork.sol"; -contract SSVNetwork is OwnableUpgradeable, ISSVNetwork, VersionedContract { +// import "hardhat/console.sol"; + +contract SSVNetwork is OwnableUpgradeable, ISSVNetwork { + /*************/ + /* Libraries */ + /*************/ + using Types256 for uint256; using Types64 for uint64; - struct OperatorData { - uint256 blockNumber; - uint64 earnings; + using Counters for Counters.Counter; + + + /***********/ + /* Structs */ + /***********/ + + struct Snapshot { + /// @dev block is the last block in which last index was set + uint64 block; + /// @dev index is the last index calculated by index += (currentBlock - block) * fee uint64 index; - uint256 indexBlockNumber; - uint32 activeValidatorCount; + /// @dev accumulated is all the accumulated earnings, calculated by accumulated + lastIndex * validatorCount + uint64 balance; + } + + struct Operator { + address owner; + uint64 fee; + uint32 validatorCount; + + Snapshot snapshot; } - struct OwnerData { - uint64 deposited; + struct OperatorFeeChangeRequest { + uint64 fee; + uint64 approvalBeginTime; + uint64 approvalEndTime; + } + + struct DAO { + uint32 validatorCount; uint64 withdrawn; - uint64 used; - uint64 networkFee; - uint64 networkFeeIndex; - uint32 activeValidatorCount; - bool validatorsDisabled; + + Snapshot earnings; } - struct OperatorInUse { - uint64 index; - uint64 used; + struct Cluster { + uint64[] operatorIds; + } + + struct Pod { uint32 validatorCount; - uint32 indexInArray; - bool exists; + + uint64 networkFee; + uint64 networkFeeIndex; + + Snapshot usage; + + bool disabled; } - struct FeeChangeRequest { - uint64 fee; - uint256 approvalBeginTime; - uint256 approvalEndTime; + struct Validator { + bytes32 clusterId; + address owner; + bool active; } - ISSVRegistry private _ssvRegistryContract; - IERC20 private _token; - uint64 private _minimumBlocksBeforeLiquidation; - uint64 private _operatorMaxFeeIncrease; + /*************/ + /* Constants */ + /*************/ + + uint64 constant LIQUIDATION_MIN_BLOCKS = 50; + uint64 constant MINIMAL_OPERATOR_FEE = 100000000; + + /********************/ + /* Global Variables */ + /********************/ + + Counters.Counter private lastOperatorId; + + /*************/ + /* Variables */ + /*************/ + + mapping(uint64 => Operator) private _operators; + mapping(uint64 => OperatorFeeChangeRequest) private _operatorFeeChangeRequests; + mapping(bytes32 => Cluster) private _clusters; + mapping(bytes32 => Pod) private _pods; + mapping(bytes32 => Validator) _validatorPKs; uint64 private _networkFee; uint64 private _networkFeeIndex; - uint256 private _networkFeeIndexBlockNumber; - uint64 private _networkEarnings; - uint256 private _networkEarningsBlockNumber; - uint64 private _withdrawnFromTreasury; - - mapping(uint32 => OperatorData) private _operatorDatas; - mapping(address => OwnerData) private _owners; - mapping(address => mapping(uint32 => OperatorInUse)) private _operatorsInUseByAddress; - mapping(address => uint32[]) private _operatorsInUseList; + uint64 private _networkFeeIndexBlockNumber; uint64 private _declareOperatorFeePeriod; uint64 private _executeOperatorFeePeriod; - mapping(uint32 => FeeChangeRequest) private _feeChangeRequests; + uint64 private _operatorMaxFeeIncrease; + + + DAO private _dao; + IERC20 private _token; - uint16 constant private MINIMAL_OPERATOR_FEE = 1000; - uint16 constant private MANAGING_OPERATORS_PER_ACCOUNT_LIMIT = 50; - uint16 constant private MINIMAL_LIQUIDATION_THRESHOLD = 6570; + /****************/ + /* Initializers */ + /****************/ function initialize( - ISSVRegistry registryAddress_, IERC20 token_, - uint64 minimumBlocksBeforeLiquidation_, uint64 operatorMaxFeeIncrease_, uint64 declareOperatorFeePeriod_, uint64 executeOperatorFeePeriod_ - ) external initializer override { - __SSVNetwork_init(registryAddress_, token_, minimumBlocksBeforeLiquidation_, operatorMaxFeeIncrease_, declareOperatorFeePeriod_, executeOperatorFeePeriod_); + ) external override { + __SSVNetwork_init(token_, operatorMaxFeeIncrease_, declareOperatorFeePeriod_, executeOperatorFeePeriod_); } function __SSVNetwork_init( - ISSVRegistry registryAddress_, IERC20 token_, - uint64 minimumBlocksBeforeLiquidation_, uint64 operatorMaxFeeIncrease_, uint64 declareOperatorFeePeriod_, uint64 executeOperatorFeePeriod_ ) internal initializer { __Ownable_init_unchained(); - __SSVNetwork_init_unchained(registryAddress_, token_, minimumBlocksBeforeLiquidation_, operatorMaxFeeIncrease_, declareOperatorFeePeriod_, executeOperatorFeePeriod_); + __SSVNetwork_init_unchained(token_, operatorMaxFeeIncrease_, declareOperatorFeePeriod_, executeOperatorFeePeriod_); } function __SSVNetwork_init_unchained( - ISSVRegistry registryAddress_, IERC20 token_, - uint64 minimumBlocksBeforeLiquidation_, uint64 operatorMaxFeeIncrease_, uint64 declareOperatorFeePeriod_, uint64 executeOperatorFeePeriod_ ) internal onlyInitializing { - _ssvRegistryContract = registryAddress_; _token = token_; - _updateLiquidationThresholdPeriod(minimumBlocksBeforeLiquidation_); - _updateOperatorFeeIncreaseLimit(operatorMaxFeeIncrease_); - _updateDeclareOperatorFeePeriod(declareOperatorFeePeriod_); - _updateExecuteOperatorFeePeriod(executeOperatorFeePeriod_); - _ssvRegistryContract.initialize(); + _operatorMaxFeeIncrease = operatorMaxFeeIncrease_; + _declareOperatorFeePeriod = declareOperatorFeePeriod_; + _executeOperatorFeePeriod = executeOperatorFeePeriod_; } - modifier onlyValidatorOwnerOrContractOwner(bytes calldata publicKey) { - _onlyValidatorOwnerOrContractOwner(publicKey); - _; - } + /*************/ + /* Modifiers */ + /*************/ - modifier onlyOperatorOwnerOrContractOwner(uint32 operatorId) { + modifier onlyOperatorOwnerOrContractOwner(uint64 operatorId) { _onlyOperatorOwnerOrContractOwner(operatorId); _; } - modifier ensureMinimalOperatorFee(uint256 fee) { - _ensureMinimalOperatorFee(fee.shrink()); - _; - } + /*******************************/ + /* Operator External Functions */ + /*******************************/ - /** - * @dev See {ISSVNetwork-registerOperator}. - */ function registerOperator( - string calldata name, - bytes calldata publicKey, + bytes calldata encryptionPK, uint256 fee - ) ensureMinimalOperatorFee(fee) external override returns (uint32 operatorId) { - operatorId = _ssvRegistryContract.registerOperator( - name, - msg.sender, - publicKey, - fee.shrink() - ); + ) external override returns (uint64 id) { + if (fee < MINIMAL_OPERATOR_FEE) { + revert FeeTooLow(); + } - _operatorDatas[operatorId] = OperatorData({ blockNumber: block.number, earnings: 0, index: 0, indexBlockNumber: block.number, activeValidatorCount: 0 }); - emit OperatorRegistration(operatorId, name, msg.sender, publicKey, fee.shrink().expand()); + lastOperatorId.increment(); + id = uint64(lastOperatorId.current()); + _operators[id] = Operator({ owner: msg.sender, snapshot: Snapshot({ block: uint64(block.number), index: 0, balance: 0}), validatorCount: 0, fee: fee.shrink()}); + emit OperatorAdded(id, msg.sender, encryptionPK, fee); } - /** - * @dev See {ISSVNetwork-removeOperator}. - */ - function removeOperator(uint32 operatorId) onlyOperatorOwnerOrContractOwner(operatorId) external override { - address owner = _ssvRegistryContract.getOperatorOwner(operatorId); + function removeOperator(uint64 operatorId) external override { + Operator memory operator = _operators[operatorId]; + if (operator.owner != msg.sender) revert CallerNotOwner(); + + operator.snapshot = _getSnapshot(operator, uint64(block.number)); - _updateOperatorFeeUnsafe(operatorId, 0); - _ssvRegistryContract.removeOperator(operatorId); + if (operator.snapshot.balance > 0) { + _transferOperatorBalanceUnsafe(operatorId, operator.snapshot.balance.expand()); + } - emit OperatorRemoval(operatorId, owner); + delete _operators[operatorId]; + emit OperatorRemoved(operatorId); } - function declareOperatorFee(uint32 operatorId, uint256 operatorFee) onlyOperatorOwnerOrContractOwner(operatorId) ensureMinimalOperatorFee(operatorFee) external override { - if (operatorFee.shrink() > _ssvRegistryContract.getOperatorFee(operatorId) * (10000 + _operatorMaxFeeIncrease) / 10000) { - revert FeeExceedsIncreaseLimit(); + function declareOperatorFee(uint64 operatorId, uint256 fee) onlyOperatorOwnerOrContractOwner(operatorId) external override { + Operator memory operator = _operators[operatorId]; + + if (fee < MINIMAL_OPERATOR_FEE) { + revert FeeTooLow(); } - _feeChangeRequests[operatorId] = FeeChangeRequest(operatorFee.shrink(), block.timestamp + _declareOperatorFeePeriod, block.timestamp + _declareOperatorFeePeriod + _executeOperatorFeePeriod); - emit OperatorFeeDeclaration(msg.sender, operatorId, block.number, operatorFee); - } + uint64 shrunkFee = fee.shrink(); - function cancelDeclaredOperatorFee(uint32 operatorId) onlyOperatorOwnerOrContractOwner(operatorId) external override { - delete _feeChangeRequests[operatorId]; + // @dev 100% = 10000, 10% = 1000 - using 10000 to represent 2 digit precision + uint64 maxAllowedFee = operator.fee * (10000 + _operatorMaxFeeIncrease) / 10000; + if (shrunkFee > maxAllowedFee) { + revert FeeExceedsIncreaseLimit(); + } - emit DeclaredOperatorFeeCancelation(msg.sender, operatorId); + _operatorFeeChangeRequests[operatorId] = OperatorFeeChangeRequest( + shrunkFee, + uint64(block.timestamp) + _declareOperatorFeePeriod, + uint64(block.timestamp) + _declareOperatorFeePeriod + _executeOperatorFeePeriod + ); + emit OperatorFeeDeclaration(msg.sender, operatorId, block.number, fee); } - function executeOperatorFee(uint32 operatorId) onlyOperatorOwnerOrContractOwner(operatorId) external override { - FeeChangeRequest storage feeChangeRequest = _feeChangeRequests[operatorId]; + function executeOperatorFee(uint64 operatorId) onlyOperatorOwnerOrContractOwner(operatorId) external override { + OperatorFeeChangeRequest memory feeChangeRequest = _operatorFeeChangeRequests[operatorId]; if(feeChangeRequest.fee == 0) { revert NoPendingFeeChangeRequest(); } + if(block.timestamp < feeChangeRequest.approvalBeginTime || block.timestamp > feeChangeRequest.approvalEndTime) { revert ApprovalNotWithinTimeframe(); } _updateOperatorFeeUnsafe(operatorId, feeChangeRequest.fee); - emit OperatorFeeExecution(msg.sender, operatorId, block.number, feeChangeRequest.fee.expand()); - - delete _feeChangeRequests[operatorId]; + delete _operatorFeeChangeRequests[operatorId]; } - function updateOperatorScore(uint32 operatorId, uint32 score) onlyOwner external override { - _ssvRegistryContract.updateOperatorScore(operatorId, score); + function cancelDeclaredOperatorFee(uint64 operatorId) onlyOperatorOwnerOrContractOwner(operatorId) external override { + OperatorFeeChangeRequest memory feeChangeRequest = _operatorFeeChangeRequests[operatorId]; + + if(feeChangeRequest.fee == 0) { + revert NoPendingFeeChangeRequest(); + } - emit OperatorScoreUpdate(operatorId, msg.sender, block.number, score); + delete _operatorFeeChangeRequests[operatorId]; + + emit DeclaredOperatorFeeCancelation(msg.sender, operatorId); } - /** - * @dev See {ISSVNetwork-registerValidator}. - */ + /********************************/ + /* Validator External Functions */ + /********************************/ + function registerValidator( bytes calldata publicKey, - uint32[] calldata operatorIds, - bytes[] calldata sharesPublicKeys, - bytes[] calldata sharesEncrypted, - uint256 amount + bytes32 clusterId, + bytes calldata shares ) external override { - _updateNetworkEarnings(); - _updateAddressNetworkFee(msg.sender); - _registerValidatorUnsafe(msg.sender, publicKey, operatorIds, sharesPublicKeys, sharesEncrypted, amount); - } + _validateClusterId(clusterId); + _validatePublicKey(publicKey); - /** - * @dev See {ISSVNetwork-updateValidator}. - */ - function updateValidator( - bytes calldata publicKey, - uint32[] calldata operatorIds, - bytes[] calldata sharesPublicKeys, - bytes[] calldata sharesEncrypted, - uint256 amount - ) onlyValidatorOwnerOrContractOwner(publicKey) external override { - _removeValidatorUnsafe(msg.sender, publicKey); - _registerValidatorUnsafe(msg.sender, publicKey, operatorIds, sharesPublicKeys, sharesEncrypted, amount); - } + uint64[] memory operatorIds = _clusters[clusterId].operatorIds; - /** - * @dev See {ISSVNetwork-removeValidator}. - */ - function removeValidator(bytes calldata publicKey) onlyValidatorOwnerOrContractOwner(publicKey) external override { - _updateNetworkEarnings(); - _updateAddressNetworkFee(msg.sender); - _removeValidatorUnsafe(msg.sender, publicKey); - _totalBalanceOf(msg.sender); // For assertion - } + bytes32 hashedValidator = keccak256(publicKey); + if (_validatorPKs[hashedValidator].clusterId > 0) { + revert ValidatorAlreadyExists(); + } - function deposit(address ownerAddress, uint256 amount) external override { - _deposit(ownerAddress, amount); - } + bytes32 hashedPod = keccak256(abi.encodePacked(msg.sender, clusterId)); + { + Pod memory pod; + + pod = _updatePodData(clusterId, 0, hashedPod, 1); + + { + if (!pod.disabled) { + for (uint64 i = 0; i < operatorIds.length; ++i) { + Operator memory operator = _operators[operatorIds[i]]; + if (operator.owner != address(0)) { + operator.snapshot = _getSnapshot(operator, uint64(block.number)); + ++operator.validatorCount; + _operators[operatorIds[i]] = operator; + } + } + } + } - function withdraw(uint256 amount) external override { - if(_totalBalanceOf(msg.sender) < amount.shrink()) { - revert NotEnoughBalance(); - } + { + if (!pod.disabled) { + DAO memory dao = _dao; + dao = _updateDAOEarnings(dao); + ++dao.validatorCount; + _dao = dao; + } + } - _withdrawUnsafe(amount.shrink()); + if (_liquidatable(pod.disabled, _podBalance(pod, _clusterCurrentIndex(clusterId)), pod.validatorCount, operatorIds)) { + revert NotEnoughBalance(); + } - if(_liquidatable(msg.sender)) { - revert NotEnoughBalance(); + _pods[hashedPod] = pod; } + + _validatorPKs[hashedValidator] = Validator({ owner: msg.sender, clusterId: clusterId, active: true}); + + emit ValidatorAdded(publicKey, clusterId, shares); } - function withdrawAll() external override { - if(_burnRate(msg.sender) > 0) { - revert BurnRatePositive(); + function removeValidator( + bytes calldata publicKey + ) external override { + _validatePublicKey(publicKey); + + bytes32 hashedValidator = keccak256(publicKey); + if (_validatorPKs[hashedValidator].owner != msg.sender) { + revert ValidatorNotOwned(); } - _withdrawUnsafe(_totalBalanceOf(msg.sender)); - } + bytes32 clusterId = _validatorPKs[hashedValidator].clusterId; + bytes32 hashedPod = keccak256(abi.encodePacked(msg.sender, clusterId)); - function liquidate(address[] calldata ownerAddresses) external override { - uint64 balanceToTransfer = 0; + { + _pods[hashedPod] = _updatePodData(clusterId, 0, hashedPod, -1); - for (uint32 index = 0; index < ownerAddresses.length; ++index) { - if (_canLiquidate(ownerAddresses[index])) { - balanceToTransfer += _liquidateUnsafe(ownerAddresses[index]); + Cluster memory cluster = _clusters[clusterId]; + + for (uint64 i = 0; i < cluster.operatorIds.length; ++i) { + uint64 id = cluster.operatorIds[i]; + Operator memory operator = _operators[id]; + + if (operator.owner != address(0)) { + operator.snapshot = _getSnapshot(operator, uint64(block.number)); + --operator.validatorCount; + _operators[id] = operator; + } + } + + { + // update DAO earnings + DAO memory dao = _dao; + dao = _updateDAOEarnings(dao); + --dao.validatorCount; + _dao = dao; } } - _token.transfer(msg.sender, balanceToTransfer.expand()); + delete _validatorPKs[hashedValidator]; + + emit ValidatorRemoved(publicKey, clusterId); } - function reactivateAccount(uint256 amount) external override { - if (!_owners[msg.sender].validatorsDisabled) { - revert AccountAlreadyEnabled(); - } + function transferValidator( + bytes calldata publicKey, + bytes32 newClusterId, + bytes calldata shares + ) external override { + _validateClusterId(newClusterId); + _validatePublicKey(publicKey); - _deposit(msg.sender, amount); + uint64[] memory operatorIds = _clusters[newClusterId].operatorIds; - _enableOwnerValidatorsUnsafe(msg.sender); + bytes32 hashedValidator = keccak256(publicKey); + bytes32 clusterId = _validatorPKs[hashedValidator].clusterId; - if(_liquidatable(msg.sender)) { - revert NotEnoughBalance(); + if (_validatorPKs[hashedValidator].owner != msg.sender) { + revert ValidatorNotOwned(); } - emit AccountEnable(msg.sender); - } + { + bytes32 hashedPod = keccak256(abi.encodePacked(msg.sender, clusterId)); + _pods[hashedPod] = _updatePodData(clusterId, 0, hashedPod, -1); + } - function updateLiquidationThresholdPeriod(uint64 blocks) external onlyOwner override { - if(blocks < MINIMAL_LIQUIDATION_THRESHOLD) { - revert BelowMinimumBlockPeriod(); + { + _updateOperatorsOnTransfer(_clusters[clusterId].operatorIds, operatorIds, 1); } - _updateLiquidationThresholdPeriod(blocks); - } + { + Pod memory pod; + { + bytes32 hashedPod = keccak256(abi.encodePacked(msg.sender, newClusterId)); - function updateOperatorFeeIncreaseLimit(uint64 newOperatorMaxFeeIncrease) external onlyOwner override { - _updateOperatorFeeIncreaseLimit(newOperatorMaxFeeIncrease); - } + pod = _updatePodData(newClusterId, 0, hashedPod, 1); + _validatorPKs[hashedValidator].clusterId = newClusterId; + _pods[hashedPod] = pod; + } - function updateDeclareOperatorFeePeriod(uint64 newDeclareOperatorFeePeriod) external onlyOwner override { - _updateDeclareOperatorFeePeriod(newDeclareOperatorFeePeriod); - } + if (_liquidatable(pod.disabled, _podBalance(pod, _clusterCurrentIndex(newClusterId)), pod.validatorCount, operatorIds)) { + revert NotEnoughBalance(); + } - function updateExecuteOperatorFeePeriod(uint64 newExecuteOperatorFeePeriod) external onlyOwner override { - _updateExecuteOperatorFeePeriod(newExecuteOperatorFeePeriod); + emit ValidatorTransferred(publicKey, newClusterId, shares); + } } - /** - * @dev See {ISSVNetwork-updateNetworkFee}. - */ - function updateNetworkFee(uint256 fee) external onlyOwner override { - emit NetworkFeeUpdate(_networkFee.expand(), fee); - _updateNetworkEarnings(); - _updateNetworkFeeIndex(); - _networkFee = fee.shrink(); - } + /**************************/ + /* Pod External Functions */ + /**************************/ - function withdrawNetworkEarnings(uint256 amount) external onlyOwner override { - if(amount.shrink() > _getNetworkEarnings()) { - revert NotEnoughBalance(); + function registerPod(uint64[] memory operatorIds, uint256 amount) external override { + _validateOperatorIds(operatorIds); + + bytes32 clusterId = keccak256(abi.encodePacked(operatorIds)); + + if (_clusters[clusterId].operatorIds.length == 0) { + _createClusterUnsafe(clusterId, operatorIds); } - _withdrawnFromTreasury += amount.shrink(); - _token.transfer(msg.sender, amount); + bytes32 hashedPod = keccak256(abi.encodePacked(msg.sender, clusterId)); - emit NetworkFeesWithdrawal(amount, msg.sender); - } + if (_pods[hashedPod].usage.block != 0) { + revert PodAlreadyExists(); + } - function getAddressBalance(address ownerAddress) external override view returns (uint256) { - return _totalBalanceOf(ownerAddress).expand(); - } + _pods[hashedPod].usage.block = uint64(block.number); - function isLiquidated(address ownerAddress) external view override returns (bool) { - return _owners[ownerAddress].validatorsDisabled; - } + emit PodCreated(msg.sender, clusterId); - /** - * @dev See {ISSVNetwork-getOperatorById}. - */ - function getOperatorById(uint32 operatorId) external view override returns (string memory, address, bytes memory, uint256, uint256, uint256, bool) { - return _ssvRegistryContract.getOperatorById(operatorId); + _deposit(msg.sender, clusterId, amount.shrink()); } - function getOperatorDeclaredFee(uint32 operatorId) external view override returns (uint256, uint256, uint256) { - FeeChangeRequest storage feeChangeRequest = _feeChangeRequests[operatorId]; + function liquidate(address ownerAddress, bytes32 clusterId) external override { + _validateClusterId(clusterId); - return (feeChangeRequest.fee.expand(), feeChangeRequest.approvalBeginTime, feeChangeRequest.approvalEndTime); - } + uint64[] memory operatorIds = _clusters[clusterId].operatorIds; + bytes32 hashedPod = keccak256(abi.encodePacked(ownerAddress, clusterId)); - /** - * @dev See {ISSVNetwork-getOperatorFee}. - */ - function getOperatorFee(uint32 operatorId) external view override returns (uint256) { - return _ssvRegistryContract.getOperatorFee(operatorId).expand(); - } + Pod memory pod = _pods[hashedPod]; + uint64 podBalance = _podBalance(pod, _clusterCurrentIndex(clusterId)); // 4k gas usage + { + if (!_liquidatable(pod.disabled, podBalance, pod.validatorCount, operatorIds)) { + revert PodNotLiquidatable(); + } - /** - * @dev See {ISSVNetwork-getOperatorsByValidator}. - */ - function getOperatorsByValidator(bytes memory publicKey) external view override returns (uint32[] memory) { - return _ssvRegistryContract.getOperatorsByValidator(publicKey); - } + for (uint64 index = 0; index < operatorIds.length; ++index) { // 19k gas usage + uint64 id = operatorIds[index]; + Operator memory operator = _operators[id]; - /** - * @dev See {ISSVNetwork-getValidatorsByAddress}. - */ - function getValidatorsByOwnerAddress(address ownerAddress) external view override returns (bytes[] memory) { - return _ssvRegistryContract.getValidatorsByAddress(ownerAddress); - } + if (operator.owner != address(0)) { + operator.snapshot = _getSnapshot(operator, uint64(block.number)); + operator.validatorCount -= pod.validatorCount; + _operators[operatorIds[index]] = operator; + } + } - /** - * @dev See {ISSVNetwork-addressNetworkFee}. - */ - function addressNetworkFee(address ownerAddress) external view override returns (uint256) { - return _addressNetworkFee(ownerAddress); - } + { + // update DAO earnings + DAO memory dao = _dao; + dao = _updateDAOEarnings(dao); + dao.validatorCount -= pod.validatorCount; + _dao = dao; + } - function getAddressBurnRate(address ownerAddress) external view override returns (uint256) { - return _burnRate(ownerAddress).expand(); - } + _token.transfer(msg.sender, podBalance.expand()); + } - function isLiquidatable(address ownerAddress) external view override returns (bool) { - return _liquidatable(ownerAddress); - } + pod.disabled = true; + pod.usage.balance -= podBalance; - function getNetworkFee() external view override returns (uint256) { - return _networkFee.expand(); - } + emit PodLiquidated(ownerAddress, clusterId); - function getNetworkEarnings() external view override returns (uint256) { - return _getNetworkEarnings().expand(); - } + _pods[hashedPod] = pod; - function getLiquidationThresholdPeriod() external view override returns (uint256) { - return _minimumBlocksBeforeLiquidation; } - function getOperatorFeeIncreaseLimit() external view override returns (uint256) { - return _operatorMaxFeeIncrease; - } + function reactivatePod(bytes32 clusterId, uint256 amount) external override { + _validateClusterId(clusterId); - function getExecuteOperatorFeePeriod() external view override returns (uint256) { - return _executeOperatorFeePeriod; - } + bytes32 hashedPod = keccak256(abi.encodePacked(msg.sender, clusterId)); + Pod memory pod = _pods[hashedPod]; - function getDeclaredOperatorFeePeriod() external view override returns (uint256) { - return _declareOperatorFeePeriod; - } + if (!pod.disabled) { + revert PodAlreadyEnabled(); + } - function validatorsPerOperatorCount(uint32 operatorId) external view returns (uint32) { - return _ssvRegistryContract.validatorsPerOperatorCount(operatorId); - } + _deposit(msg.sender, clusterId, amount.shrink()); // 28k gas usage - function _deposit(address ownerAddress, uint256 amount) private { - _token.transferFrom(msg.sender, address(this), amount); - _owners[ownerAddress].deposited += amount.shrink(); + uint64[] memory operatorIds = _clusters[clusterId].operatorIds; - emit FundsDeposit(amount, ownerAddress, msg.sender); - } + { // 112k gas usage + for (uint64 index = 0; index < operatorIds.length; ++index) { + uint64 id = operatorIds[index]; + Operator memory operator = _operators[id]; + + if (operator.owner != address(0)) { + operator.snapshot = _getSnapshot(operator, uint64(block.number)); + operator.validatorCount += pod.validatorCount; + _operators[operatorIds[index]] = operator; + } + } + } - function _withdrawUnsafe(uint64 amount) private { - _owners[msg.sender].withdrawn += amount; - _token.transfer(msg.sender, amount.expand()); + { // 30k gas usage + DAO memory dao = _dao; + dao = _updateDAOEarnings(dao); + dao.validatorCount += pod.validatorCount; + _dao = dao; + } - emit FundsWithdrawal(amount.expand(), msg.sender); - } + pod.disabled = false; + pod = _updatePodData(clusterId, 0, hashedPod, 0); // 16k gas usage + _pods[hashedPod] = pod; - /** - * @dev Update network fee for the address. - * @param ownerAddress Owner address. - */ - function _updateAddressNetworkFee(address ownerAddress) private { - _owners[ownerAddress].networkFee = _addressNetworkFee(ownerAddress); - _owners[ownerAddress].networkFeeIndex = _currentNetworkFeeIndex(); + emit PodEnabled(msg.sender, clusterId); } - function _updateOperatorIndex(uint32 operatorId) private { - _operatorDatas[operatorId].index = _operatorIndexOf(operatorId); + /******************************/ + /* Balance External Functions */ + /******************************/ + + function deposit(address owner, bytes32 clusterId, uint256 amount) external override { + _validateClusterId(clusterId); + + _deposit(owner, clusterId, amount.shrink()); } - /** - * @dev Updates operators's balance. - */ - function _updateOperatorBalance(uint32 operatorId) private { - OperatorData storage operatorData = _operatorDatas[operatorId]; - operatorData.earnings = _operatorEarningsOf(operatorId); - operatorData.blockNumber = block.number; + function deposit(bytes32 clusterId, uint256 amount) external override { + _validateClusterId(clusterId); + + _deposit(msg.sender, clusterId, amount.shrink()); } - function _liquidateUnsafe(address ownerAddress) private returns (uint64) { - _disableOwnerValidatorsUnsafe(ownerAddress); + function withdrawOperatorBalance(uint64 operatorId, uint256 amount) external override { + Operator memory operator = _operators[operatorId]; - uint64 balanceToTransfer = _totalBalanceOf(ownerAddress); + if (operator.owner != msg.sender) revert CallerNotOwner(); - _owners[ownerAddress].used += balanceToTransfer; + operator.snapshot = _getSnapshot(operator, uint64(block.number)); - emit AccountLiquidation(ownerAddress); + uint64 shrunkAmount = amount.shrink(); - return balanceToTransfer; - } + if (operator.snapshot.balance < shrunkAmount) { + revert NotEnoughBalance(); + } - function _updateNetworkEarnings() private { - _networkEarnings = _getTotalNetworkEarnings(); - _networkEarningsBlockNumber = block.number; - } + operator.snapshot.balance -= shrunkAmount; - function _updateNetworkFeeIndex() private { - _networkFeeIndex = _currentNetworkFeeIndex(); - _networkFeeIndexBlockNumber = block.number; + _operators[operatorId] = operator; + + _transferOperatorBalanceUnsafe(operatorId, amount); } - function _registerValidatorUnsafe( - address ownerAddress, - bytes calldata publicKey, - uint32[] calldata operatorIds, - bytes[] calldata sharesPublicKeys, - bytes[] calldata encryptedKeys, - uint256 tokenAmount) private { - - _ssvRegistryContract.registerValidator( - ownerAddress, - publicKey, - operatorIds, - sharesPublicKeys, - encryptedKeys - ); + function withdrawOperatorBalance(uint64 operatorId) external override { + Operator memory operator = _operators[operatorId]; + + if (operator.owner != msg.sender) revert CallerNotOwner(); + + operator.snapshot = _getSnapshot(operator, uint64(block.number)); - OwnerData storage owner = _owners[ownerAddress]; + uint64 operatorBalance = operator.snapshot.balance; - if (!owner.validatorsDisabled) { - ++owner.activeValidatorCount; + if (operatorBalance <= 0) { + revert NotEnoughBalance(); } - for (uint32 index = 0; index < operatorIds.length; ++index) { - uint32 operatorId = operatorIds[index]; - _updateOperatorBalance(operatorId); + operator.snapshot.balance -= operatorBalance; - if (!owner.validatorsDisabled) { - ++_operatorDatas[operatorId].activeValidatorCount; - } + _operators[operatorId] = operator; - _useOperatorByOwner(ownerAddress, operatorId); - } - if (tokenAmount > 0) { - _deposit(msg.sender, tokenAmount); - } + _transferOperatorBalanceUnsafe(operatorId, operatorBalance.expand()); + } + + function withdrawPodBalance(bytes32 clusterId, uint256 amount) external override { + _validateClusterId(clusterId); + + bytes32 hashedPod = keccak256(abi.encodePacked(msg.sender, clusterId)); + uint64[] memory operatorIds = _clusters[clusterId].operatorIds; + + Pod memory pod = _pods[hashedPod]; + uint64 podBalance = _podBalance(pod, _clusterCurrentIndex(clusterId)); + + uint64 shrunkAmount = amount.shrink(); - if(_liquidatable(ownerAddress)) { + if (podBalance < shrunkAmount || _liquidatable(pod.disabled, podBalance, pod.validatorCount, operatorIds)) { revert NotEnoughBalance(); } - emit ValidatorRegistration(ownerAddress, publicKey, operatorIds, sharesPublicKeys, encryptedKeys); - } + pod.usage.balance -= shrunkAmount; - function _removeValidatorUnsafe(address ownerAddress, bytes memory publicKey) private { - _unregisterValidator(ownerAddress, publicKey); - _ssvRegistryContract.removeValidator(publicKey); + _pods[hashedPod] = pod; - if (!_owners[ownerAddress].validatorsDisabled) { - --_owners[ownerAddress].activeValidatorCount; - } + _token.transfer(msg.sender, amount); - emit ValidatorRemoval(ownerAddress, publicKey); + emit PodFundsWithdrawal(amount, clusterId, msg.sender); } - function _unregisterValidator(address ownerAddress, bytes memory publicKey) private { - // calculate balances for current operators in use and update their balances - uint32[] memory currentOperatorIds = _ssvRegistryContract.getOperatorsByValidator(publicKey); - for (uint32 index = 0; index < currentOperatorIds.length; ++index) { - uint32 operatorId = currentOperatorIds[index]; - _updateOperatorBalance(operatorId); + /**************************/ + /* DAO External Functions */ + /**************************/ - if (!_owners[ownerAddress].validatorsDisabled) { - --_operatorDatas[operatorId].activeValidatorCount; - } + function updateNetworkFee(uint256 fee) external onlyOwner override { + DAO memory dao = _dao; + dao = _updateDAOEarnings(dao); + _dao = dao; - _stopUsingOperatorByOwner(ownerAddress, operatorId); - } - } + _updateNetworkFeeIndex(); + + emit NetworkFeeUpdate(_networkFee.expand(), fee); - function _useOperatorByOwner(address ownerAddress, uint32 operatorId) private { - _updateUsingOperatorByOwner(ownerAddress, operatorId, true); + _networkFee = fee.shrink(); } - function _stopUsingOperatorByOwner(address ownerAddress, uint32 operatorId) private { - _updateUsingOperatorByOwner(ownerAddress, operatorId, false); + function updateOperatorFeeIncreaseLimit(uint64 newOperatorMaxFeeIncrease) external onlyOwner override { + _operatorMaxFeeIncrease = newOperatorMaxFeeIncrease; + emit OperatorFeeIncreaseLimitUpdate(_operatorMaxFeeIncrease); } - function _updateOperatorFeeUnsafe(uint32 operatorId, uint64 fee) private { - OperatorData storage operatorData = _operatorDatas[operatorId]; - _updateOperatorIndex(operatorId); - operatorData.indexBlockNumber = block.number; - _updateOperatorBalance(operatorId); - _ssvRegistryContract.updateOperatorFee(operatorId, fee); + function updateDeclareOperatorFeePeriod(uint64 newDeclareOperatorFeePeriod) external onlyOwner override { + _declareOperatorFeePeriod = newDeclareOperatorFeePeriod; + emit DeclareOperatorFeePeriodUpdate(newDeclareOperatorFeePeriod); } - /** - * @dev Updates the relation between operator and owner - * @param ownerAddress Owner address. - * @param increase Change value for validators amount. - */ - function _updateUsingOperatorByOwner(address ownerAddress, uint32 operatorId, bool increase) private { - OperatorInUse storage operatorInUseData = _operatorsInUseByAddress[ownerAddress][operatorId]; + function updateExecuteOperatorFeePeriod(uint64 newExecuteOperatorFeePeriod) external onlyOwner override { + _executeOperatorFeePeriod = newExecuteOperatorFeePeriod; + emit ExecuteOperatorFeePeriodUpdate(newExecuteOperatorFeePeriod); + } - if (operatorInUseData.exists) { - _updateOperatorUsageByOwner(operatorInUseData, ownerAddress, operatorId); + /************************************/ + /* Operator External View Functions */ + /************************************/ - if (increase) { - ++operatorInUseData.validatorCount; - } else { - if (--operatorInUseData.validatorCount == 0) { - _owners[ownerAddress].used += operatorInUseData.used; + function getOperatorFee(uint64 operatorId) external view override returns (uint256) { + Operator memory operator = _operators[operatorId]; - // remove from mapping and list; + if (operator.owner == address(0)) revert OperatorNotFound(); - _operatorsInUseList[ownerAddress][operatorInUseData.indexInArray] = _operatorsInUseList[ownerAddress][_operatorsInUseList[ownerAddress].length - 1]; - _operatorsInUseByAddress[ownerAddress][_operatorsInUseList[ownerAddress][operatorInUseData.indexInArray]].indexInArray = operatorInUseData.indexInArray; - _operatorsInUseList[ownerAddress].pop(); + return operator.fee.expand(); + } - delete _operatorsInUseByAddress[ownerAddress][operatorId]; - } - } - } else { - if (_operatorsInUseList[ownerAddress].length > MANAGING_OPERATORS_PER_ACCOUNT_LIMIT) { - revert ExceedManagingOperatorsPerAccountLimit(); - } + function getOperatorDeclaredFee(uint64 operatorId) external view override returns (uint256, uint256, uint256) { + OperatorFeeChangeRequest memory feeChangeRequest = _operatorFeeChangeRequests[operatorId]; - _operatorsInUseByAddress[ownerAddress][operatorId] = OperatorInUse({ index: _operatorIndexOf(operatorId), validatorCount: 1, used: 0, exists: true, indexInArray: uint32(_operatorsInUseList[ownerAddress].length) }); - _operatorsInUseList[ownerAddress].push(operatorId); + if(feeChangeRequest.fee == 0) { + revert NoPendingFeeChangeRequest(); } + + return (feeChangeRequest.fee.expand(), feeChangeRequest.approvalBeginTime, feeChangeRequest.approvalEndTime); } - function _disableOwnerValidatorsUnsafe(address ownerAddress) private { - _updateNetworkEarnings(); - _updateAddressNetworkFee(ownerAddress); + /*******************************/ + /* Pod External View Functions */ + /*******************************/ - for (uint32 index = 0; index < _operatorsInUseList[ownerAddress].length; ++index) { - uint32 operatorId = _operatorsInUseList[ownerAddress][index]; - _updateOperatorBalance(operatorId); - OperatorInUse storage operatorInUseData = _operatorsInUseByAddress[ownerAddress][operatorId]; - _updateOperatorUsageByOwner(operatorInUseData, ownerAddress, operatorId); - _operatorDatas[operatorId].activeValidatorCount -= operatorInUseData.validatorCount; - } + function getClusterId(uint64[] memory operatorIds) external view override returns(bytes32) { + _validateOperatorIds(operatorIds); - _ssvRegistryContract.disableOwnerValidators(ownerAddress); + bytes32 clusterId = keccak256(abi.encodePacked(operatorIds)); - _owners[ownerAddress].validatorsDisabled = true; + if (_clusters[clusterId].operatorIds.length == 0) { + revert ClusterNotExists(); + } + + return clusterId; } - function _enableOwnerValidatorsUnsafe(address ownerAddress) private { - _updateNetworkEarnings(); - _updateAddressNetworkFee(ownerAddress); + function getPod(uint64[] memory operatorIds) external view override returns(bytes32) { + _validateOperatorIds(operatorIds); + + bytes32 clusterId = keccak256(abi.encodePacked(operatorIds)); - for (uint32 index = 0; index < _operatorsInUseList[ownerAddress].length; ++index) { - uint32 operatorId = _operatorsInUseList[ownerAddress][index]; - _updateOperatorBalance(operatorId); - OperatorInUse storage operatorInUseData = _operatorsInUseByAddress[ownerAddress][operatorId]; - _updateOperatorUsageByOwner(operatorInUseData, ownerAddress, operatorId); - _operatorDatas[operatorId].activeValidatorCount += operatorInUseData.validatorCount; + if (_pods[keccak256(abi.encodePacked(msg.sender, clusterId))].usage.block == 0) { + revert PodNotExists(); } - _ssvRegistryContract.enableOwnerValidators(ownerAddress); + return clusterId; + } + + function isLiquidatable(address ownerAddress, bytes32 clusterId) external view override returns (bool) { + _validateClusterId(clusterId); - _owners[ownerAddress].validatorsDisabled = false; + uint64[] memory operatorIds = _clusters[clusterId].operatorIds; + bytes32 hashedPod = keccak256(abi.encodePacked(ownerAddress, clusterId)); + + Pod memory pod = _pods[hashedPod]; + + return _liquidatable(pod.disabled, _podBalance(pod, _clusterCurrentIndex(clusterId)), pod.validatorCount, operatorIds); } - function _updateOperatorUsageByOwner(OperatorInUse storage operatorInUseData, address ownerAddress, uint32 operatorId) private { - operatorInUseData.used = _operatorInUseUsageOf(operatorInUseData, ownerAddress, operatorId); - operatorInUseData.index = _operatorIndexOf(operatorId); + function isLiquidated(address ownerAddress, bytes32 clusterId) external view override returns (bool) { + _validateClusterId(clusterId); + + bytes32 hashedPod = keccak256(abi.encodePacked(ownerAddress, clusterId)); + + return _pods[hashedPod].disabled; } - function _updateLiquidationThresholdPeriod(uint64 newMinimumBlocksBeforeLiquidation) private { - _minimumBlocksBeforeLiquidation = newMinimumBlocksBeforeLiquidation; + /***********************************/ + /* Balance External View Functions */ + /***********************************/ - emit LiquidationThresholdPeriodUpdate(_minimumBlocksBeforeLiquidation); + function operatorSnapshot(uint64 id) external view override returns (uint64 currentBlock, uint64 index, uint256 balance) { + Snapshot memory s = _getSnapshot(_operators[id], uint64(block.number)); + return (s.block, s.index, s.balance.expand()); } - function _updateOperatorFeeIncreaseLimit(uint64 newOperatorMaxFeeIncrease) private { - _operatorMaxFeeIncrease = newOperatorMaxFeeIncrease; + function podBalanceOf(address owner, bytes32 clusterId) external view override returns (uint256) { + Pod memory pod = _pods[keccak256(abi.encodePacked(owner, clusterId))]; + return _podBalance(pod, _clusterCurrentIndex(clusterId)).expand(); + } - emit OperatorFeeIncreaseLimitUpdate(_operatorMaxFeeIncrease); + /*******************************/ + /* DAO External View Functions */ + /*******************************/ + function getNetworkFee() external view override returns (uint256) { + return _networkFee.expand(); } - function _updateDeclareOperatorFeePeriod(uint64 newDeclareOperatorFeePeriod) private { - _declareOperatorFeePeriod = newDeclareOperatorFeePeriod; + function getNetworkBalance() external view onlyOwner override returns (uint256) { + DAO memory dao = _dao; + return _networkBalance(dao).expand(); + } - emit DeclareOperatorFeePeriodUpdate(newDeclareOperatorFeePeriod); + function getOperatorFeeIncreaseLimit() external view override returns (uint64) { + return _operatorMaxFeeIncrease; } - function _updateExecuteOperatorFeePeriod(uint64 newExecuteOperatorFeePeriod) private { - _executeOperatorFeePeriod = newExecuteOperatorFeePeriod; + function getExecuteOperatorFeePeriod() external view override returns (uint64) { + return _executeOperatorFeePeriod; + } - emit ExecuteOperatorFeePeriodUpdate(newExecuteOperatorFeePeriod); + function getDeclaredOperatorFeePeriod() external view override returns (uint64) { + return _declareOperatorFeePeriod; } - function _expensesOf(address ownerAddress) private view returns(uint64) { - uint64 usage = _owners[ownerAddress].used + _addressNetworkFee(ownerAddress); - for (uint32 index = 0; index < _operatorsInUseList[ownerAddress].length; ++index) { - OperatorInUse storage operatorInUseData = _operatorsInUseByAddress[ownerAddress][_operatorsInUseList[ownerAddress][index]]; - usage += _operatorInUseUsageOf(operatorInUseData, ownerAddress, _operatorsInUseList[ownerAddress][index]); + /********************************/ + /* Validation Private Functions */ + /********************************/ + + function _onlyOperatorOwnerOrContractOwner(uint64 operatorId) private view { + Operator memory operator = _operators[operatorId]; + + if(operator.owner == address(0)) { + revert OperatorWithPublicKeyNotExist(); } - return usage; + if(msg.sender != operator.owner && msg.sender != owner()) { + revert CallerNotOwner(); + } } - function _totalEarningsOf(address ownerAddress) private view returns (uint64) { - uint64 earnings = 0; - uint32[] memory operatorsByOwner = _ssvRegistryContract.getOperatorsByOwnerAddress(ownerAddress); - for (uint32 index = 0; index < operatorsByOwner.length; ++index) { - earnings += _operatorEarningsOf(operatorsByOwner[index]); + function _validateClusterId(bytes32 clusterId) private view { + if (_clusters[clusterId].operatorIds.length == 0) { + revert ClusterNotExists(); } + } - return earnings; + function _validatePublicKey(bytes memory publicKey) private pure { + if (publicKey.length != 48) { + revert InvalidPublicKeyLength(); + } } - function _totalBalanceOf(address ownerAddress) private view returns (uint64) { - uint64 balance = _owners[ownerAddress].deposited + _totalEarningsOf(ownerAddress); + function _validateOperatorIds(uint64[] memory operatorIds) private pure { + if (operatorIds.length < 4 || operatorIds.length > 13 || operatorIds.length % 3 != 1) { + revert OperatorIdsStructureInvalid(); + } + } - uint64 usage = _owners[ownerAddress].withdrawn + _expensesOf(ownerAddress); + /******************************/ + /* Operator Private Functions */ + /******************************/ + + function _updateOperatorsOnTransfer( + uint64[] memory oldOperatorIds, + uint64[] memory newOperatorIds, + uint32 validatorCount + ) private { + uint64 oldIndex; + uint64 newIndex; + uint64 currentBlock = uint64(block.number); + + while (oldIndex < oldOperatorIds.length && newIndex < newOperatorIds.length) { + if (oldOperatorIds[oldIndex] < newOperatorIds[newIndex]) { + Operator memory operator = _operators[oldOperatorIds[oldIndex]]; + if (operator.owner != address(0)) { + operator.snapshot = _getSnapshot(operator, currentBlock); + operator.validatorCount -= validatorCount; + _operators[oldOperatorIds[oldIndex]] = operator; + } + ++oldIndex; + } else if (newOperatorIds[newIndex] < oldOperatorIds[oldIndex]) { + Operator memory operator = _operators[newOperatorIds[newIndex]]; + if (operator.owner != address(0)) { + operator.snapshot = _getSnapshot(operator, currentBlock); + operator.validatorCount += validatorCount; + _operators[newOperatorIds[newIndex]] = operator; + } + ++newIndex; + } else { + ++oldIndex; + ++newIndex; + } + } - if(balance < usage) { - revert NegativeBalance(); + while (oldIndex < oldOperatorIds.length) { + Operator memory operator = _operators[oldOperatorIds[oldIndex]]; + if (operator.owner != address(0)) { + operator.snapshot = _getSnapshot(operator, currentBlock); + operator.validatorCount -= validatorCount; + _operators[oldOperatorIds[oldIndex]] = operator; + } + ++oldIndex; } - return balance - usage; + while (newIndex < newOperatorIds.length) { + Operator memory operator = _operators[newOperatorIds[newIndex]]; + if (operator.owner != address(0)) { + operator.snapshot = _getSnapshot(operator, currentBlock); + operator.validatorCount += validatorCount; + _operators[newOperatorIds[newIndex]] = operator; + } + ++newIndex; + } } - function _operatorEarnRate(uint32 operatorId) private view returns (uint64) { - return _ssvRegistryContract.getOperatorFee(operatorId) * _operatorDatas[operatorId].activeValidatorCount; - } + function _setFee(Operator memory operator, uint64 fee) private view returns (Operator memory) { + operator.snapshot = _getSnapshot(operator, uint64(block.number)); + operator.fee = fee; - /** - * @dev See {ISSVNetwork-operatorEarningsOf}. - */ - function _operatorEarningsOf(uint32 operatorId) private view returns (uint64) { - return _operatorDatas[operatorId].earnings + - uint64(block.number - _operatorDatas[operatorId].blockNumber) * - _operatorEarnRate(operatorId); + return operator; } - function _addressNetworkFee(address ownerAddress) private view returns (uint64) { - return _owners[ownerAddress].networkFee + - uint64(_currentNetworkFeeIndex() - _owners[ownerAddress].networkFeeIndex) * - _owners[ownerAddress].activeValidatorCount; + function _updateOperatorFeeUnsafe(uint64 operatorId, uint64 fee) private { + Operator memory operator = _operators[operatorId]; + + _operators[operatorId] = _setFee(operator, fee); + + emit OperatorFeeExecution(msg.sender, operatorId, block.number, fee.expand()); } - function _burnRate(address ownerAddress) private view returns (uint64 ownerBurnRate) { - if (_owners[ownerAddress].validatorsDisabled) { - return 0; - } + function _getSnapshot(Operator memory operator, uint64 currentBlock) private pure returns (Snapshot memory) { + uint64 blockDiffFee = (currentBlock - operator.snapshot.block) * operator.fee; - for (uint32 index = 0; index < _operatorsInUseList[ownerAddress].length; ++index) { - ownerBurnRate += _operatorInUseBurnRateWithNetworkFeeUnsafe(ownerAddress, _operatorsInUseList[ownerAddress][index]); - } + operator.snapshot.index += blockDiffFee; + operator.snapshot.balance += blockDiffFee * operator.validatorCount; + operator.snapshot.block = currentBlock; - ownerBurnRate += _owners[ownerAddress].activeValidatorCount * _networkFee; + return operator.snapshot; + } - uint32[] memory operatorsByOwner = _ssvRegistryContract.getOperatorsByOwnerAddress(ownerAddress); + function _transferOperatorBalanceUnsafe(uint64 operatorId, uint256 amount) private { + _token.transfer(msg.sender, amount); + emit OperatorFundsWithdrawal(amount, operatorId, msg.sender); + } - for (uint32 index = 0; index < operatorsByOwner.length; ++index) { - if (ownerBurnRate <= _operatorEarnRate(operatorsByOwner[index])) { - return 0; - } else { - ownerBurnRate -= _operatorEarnRate(operatorsByOwner[index]); + /*************************/ + /* Pod Private Functions */ + /*************************/ + + function _createClusterUnsafe(bytes32 key, uint64[] memory operatorIds) private { + for (uint64 i = 0; i < operatorIds.length; i++) { + if (_operators[operatorIds[i]].owner == address(0)) { + revert OperatorDoesNotExist(); + } + if (i+1 < operatorIds.length) { + require(operatorIds[i] <= operatorIds[i+1], "The operators list should be in ascending order"); } } - } - function _overdue(address ownerAddress) private view returns (bool) { - return _totalBalanceOf(ownerAddress) < _minimumBlocksBeforeLiquidation * _burnRate(ownerAddress); + _clusters[key] = Cluster({operatorIds: operatorIds}); } - function _liquidatable(address ownerAddress) private view returns (bool) { - return !_owners[ownerAddress].validatorsDisabled && _overdue(ownerAddress); + function _updatePodData(bytes32 clusterId, uint64 amount, bytes32 hashedPod, int8 changedTo) private view returns (Pod memory) { + Pod memory pod = _pods[hashedPod]; + uint64 podIndex = _clusterCurrentIndex(clusterId); + pod.usage.balance = _podBalance(pod, podIndex) + amount; + pod.usage.index = podIndex; + pod.usage.block = uint64(block.number); + + pod.networkFee = _podNetworkFee(pod); + pod.networkFeeIndex = _currentNetworkFeeIndex(); + + if (changedTo == 1) { + ++pod.validatorCount; + } else if (changedTo == -1) { + --pod.validatorCount; + } + + return pod; } - function _canLiquidate(address ownerAddress) private view returns (bool) { - return !_owners[ownerAddress].validatorsDisabled && (msg.sender == ownerAddress || _overdue(ownerAddress)); + function _liquidatable(bool disabled, uint64 balance, uint64 validatorCount, uint64[] memory operatorIds) private view returns (bool) { + return !disabled && balance < LIQUIDATION_MIN_BLOCKS * (_burnRatePerValidator(operatorIds) + _networkFee) * validatorCount; } - function _getTotalNetworkEarnings() private view returns (uint64) { - uint256 result = _networkEarnings + (block.number - _networkEarningsBlockNumber) * _networkFee * _ssvRegistryContract.activeValidatorCount(); - return uint64(result); + + /*****************************/ + /* Balance Private Functions */ + /*****************************/ + + function _deposit(address owner, bytes32 clusterId, uint64 amount) private { + bytes32 hashedPod = keccak256(abi.encodePacked(owner, clusterId)); + + _pods[hashedPod].usage.balance += amount; // 22k gas usage + + uint256 expandedAmount = amount.expand(); + + _token.transferFrom(msg.sender, address(this), expandedAmount); // 20k gas usage + + emit FundsDeposit(expandedAmount, clusterId, owner); // 2k gas usage } - function _getNetworkEarnings() private view returns (uint64) { - return _getTotalNetworkEarnings() - _withdrawnFromTreasury; + function _updateNetworkFeeIndex() private { + _networkFeeIndex = _currentNetworkFeeIndex(); + _networkFeeIndexBlockNumber = uint64(block.number); } - /** - * @dev Get operator index by address. - */ - function _operatorIndexOf(uint32 operatorId) private view returns (uint64) { - return _operatorDatas[operatorId].index + - _ssvRegistryContract.getOperatorFee(operatorId) * - uint64(block.number - _operatorDatas[operatorId].indexBlockNumber); + function _updateDAOEarnings(DAO memory dao) private view returns (DAO memory) { + dao.earnings.balance = _networkTotalEarnings(dao); + dao.earnings.block = uint64(block.number); + + return dao; } - function _operatorInUseUsageOf(OperatorInUse storage operatorInUseData, address ownerAddress, uint32 operatorId) private view returns (uint64) { - return operatorInUseData.used + ( - _owners[ownerAddress].validatorsDisabled ? 0 : - uint64(_operatorIndexOf(operatorId) - operatorInUseData.index) * operatorInUseData.validatorCount - ); + function _currentNetworkFeeIndex() private view returns (uint64) { + return _networkFeeIndex + uint64(block.number - _networkFeeIndexBlockNumber) * _networkFee; } - function _operatorInUseBurnRateWithNetworkFeeUnsafe(address ownerAddress, uint32 operatorId) private view returns (uint64) { - OperatorInUse storage operatorInUseData = _operatorsInUseByAddress[ownerAddress][operatorId]; - return _ssvRegistryContract.getOperatorFee(operatorId) * operatorInUseData.validatorCount; + function _networkTotalEarnings(DAO memory dao) private view returns (uint64) { + return dao.earnings.balance + (uint64(block.number) - dao.earnings.block) * _networkFee * dao.validatorCount; } - /** - * @dev Returns the current network fee index - */ - function _currentNetworkFeeIndex() private view returns(uint64) { - return _networkFeeIndex + uint64(block.number - _networkFeeIndexBlockNumber) * _networkFee; + function _networkBalance(DAO memory dao) private view returns (uint64) { + return _networkTotalEarnings(dao) - dao.withdrawn; } - function _onlyValidatorOwnerOrContractOwner(bytes calldata publicKey) private view { - address validatorOwner = _ssvRegistryContract.getValidatorOwner(publicKey); - if (validatorOwner == address(0)) { - revert ValidatorWithPublicKeyNotExist(); - } - if (msg.sender != validatorOwner && msg.sender != owner()) { - revert CallerNotValidatorOwner(); + function _clusterCurrentIndex(bytes32 podId) private view returns (uint64 podIndex) { + Cluster memory cluster = _clusters[podId]; + uint64 currentBlock = uint64(block.number); + for (uint64 i = 0; i < cluster.operatorIds.length; ++i) { + Snapshot memory s = _operators[cluster.operatorIds[i]].snapshot; + podIndex += s.index + (currentBlock - s.block) * _operators[cluster.operatorIds[i]].fee; } } - function _onlyOperatorOwnerOrContractOwner(uint32 operatorId) private view { - address operatorOwner = _ssvRegistryContract.getOperatorOwner(operatorId); + function _podBalance(Pod memory pod, uint64 currentPodIndex) private view returns (uint64) { + uint64 usage = (currentPodIndex - pod.usage.index) * pod.validatorCount + _podNetworkFee(pod); - if(operatorOwner == address(0)) { - revert OperatorWithPublicKeyNotExist(); + if (usage > pod.usage.balance) { + revert NegativeBalance(); } - if(msg.sender != operatorOwner && msg.sender != owner()) { - revert CallerNotOperatorOwner(); - } + return pod.usage.balance - usage; } - function _ensureMinimalOperatorFee(uint64 fee) private pure { - if (fee < MINIMAL_OPERATOR_FEE) { - revert FeeTooLow(); - } + function _podNetworkFee(Pod memory pod) private view returns (uint64) { + return pod.networkFee + uint64(_currentNetworkFeeIndex() - pod.networkFeeIndex) * pod.validatorCount; } - function version() external pure override returns (uint32) { - return 20000; + function _burnRatePerValidator(uint64[] memory operatorIds) private view returns (uint64 rate) { + for (uint64 i = 0; i < operatorIds.length; ++i) { + rate += _operators[operatorIds[i]].fee; + } } - - uint256[50] ______gap; -} \ No newline at end of file +} diff --git a/contracts/SSVRegistry.sol b/contracts/SSVRegistry.sol deleted file mode 100644 index 34395a8c..00000000 --- a/contracts/SSVRegistry.sol +++ /dev/null @@ -1,313 +0,0 @@ -// File: contracts/SSVRegistry.sol -// SPDX-License-Identifier: GPL-3.0-or-later -pragma solidity ^0.8.2; - -import "@openzeppelin/contracts/utils/Counters.sol"; -import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; -import "./utils/VersionedContract.sol"; -import "./utils/Types.sol"; -import "./ISSVRegistry.sol"; - -contract SSVRegistry is Initializable, OwnableUpgradeable, ISSVRegistry, VersionedContract { - using Counters for Counters.Counter; - using Types256 for uint256; - using Types64 for uint64; - - struct Operator { - string name; - bytes publicKey; - uint64 fee; - address ownerAddress; - uint32 score; - uint32 indexInOwner; - uint32 validatorCount; - bool active; - } - - struct Validator { - uint32[] operatorIds; - address ownerAddress; - uint32 indexInOwner; - bool active; - } - - struct OwnerData { - uint32 activeValidatorCount; - bool validatorsDisabled; - bytes[] validators; - } - - - Counters.Counter private _lastOperatorId; - - mapping(uint32 => Operator) private _operators; - mapping(bytes => Validator) private _validators; - mapping(address => uint32[]) private _operatorsByOwnerAddress; - mapping(address => OwnerData) private _owners; - - uint32 private _activeValidatorCount; - - uint32 constant private VALIDATORS_PER_OPERATOR_LIMIT = 2000; - uint32 constant private REGISTERED_OPERATORS_PER_ACCOUNT_LIMIT = 10; - - /** - * @dev See {ISSVRegistry-initialize}. - */ - function initialize() external override initializer { - __SSVRegistry_init(); - } - - function __SSVRegistry_init() internal onlyInitializing { - __Ownable_init_unchained(); - __SSVRegistry_init_unchained(); - } - - function __SSVRegistry_init_unchained() internal onlyInitializing { - } - - /** - * @dev See {ISSVRegistry-registerOperator}. - */ - function registerOperator( - string calldata name, - address ownerAddress, - bytes calldata publicKey, - uint64 fee - ) external onlyOwner override returns (uint32 operatorId) { - - if (_operatorsByOwnerAddress[ownerAddress].length >= REGISTERED_OPERATORS_PER_ACCOUNT_LIMIT) { - revert ExceedRegisteredOperatorsByAccountLimit(); - } - - _lastOperatorId.increment(); - operatorId = uint32(_lastOperatorId.current()); - _operators[operatorId] = Operator({name: name, ownerAddress: ownerAddress, publicKey: publicKey, score: 0, fee: 0, active: true, indexInOwner: uint32(_operatorsByOwnerAddress[ownerAddress].length), validatorCount: 0}); - _operatorsByOwnerAddress[ownerAddress].push(operatorId); - _updateOperatorFeeUnsafe(operatorId, fee); - } - - /** - * @dev See {ISSVRegistry-removeOperator}. - */ - function removeOperator( - uint32 operatorId - ) external onlyOwner override { - Operator storage operator = _operators[operatorId]; - - if (!operator.active) { - revert OperatorDeleted(); - } - - operator.active = false; - } - - /** - * @dev See {ISSVRegistry-updateOperatorFee}. - */ - function updateOperatorFee(uint32 operatorId, uint64 fee) external onlyOwner override { - _updateOperatorFeeUnsafe(operatorId, fee); - } - - /** - * @dev See {ISSVRegistry-updateOperatorScore}. - */ - function updateOperatorScore(uint32 operatorId, uint32 score) external onlyOwner override { - Operator storage operator = _operators[operatorId]; - operator.score = score; - } - - /** - * @dev See {ISSVRegistry-registerValidator}. - */ - function registerValidator( - address ownerAddress, - bytes calldata publicKey, - uint32[] calldata operatorIds, - bytes[] calldata sharesPublicKeys, - bytes[] calldata sharesEncrypted - ) external onlyOwner override { - _validateValidatorParams( - publicKey, - operatorIds, - sharesPublicKeys, - sharesEncrypted - ); - - if (_validators[publicKey].ownerAddress != address(0)) { - revert ValidatorAlreadyExists(); - } - - _validators[publicKey] = Validator({ - operatorIds: operatorIds, - ownerAddress: ownerAddress, - indexInOwner: uint32(_owners[ownerAddress].validators.length), - active: true - }); - - _owners[ownerAddress].validators.push(publicKey); - - for (uint32 index = 0; index < operatorIds.length; ++index) { - if (!_operators[operatorIds[index]].active) { - revert OperatorDeleted(); - } - - if (++_operators[operatorIds[index]].validatorCount > VALIDATORS_PER_OPERATOR_LIMIT) { - revert ExceedValidatorLimit(); - } - } - ++_activeValidatorCount; - } - - /** - * @dev See {ISSVRegistry-removeValidator}. - */ - function removeValidator( - bytes calldata publicKey - ) external onlyOwner override { - Validator storage validator = _validators[publicKey]; - - for (uint32 index = 0; index < validator.operatorIds.length; ++index) { - --_operators[validator.operatorIds[index]].validatorCount; - } - - bytes[] storage ownerValidators = _owners[validator.ownerAddress].validators; - - ownerValidators[validator.indexInOwner] = ownerValidators[ownerValidators.length - 1]; - _validators[ownerValidators[validator.indexInOwner]].indexInOwner = validator.indexInOwner; - ownerValidators.pop(); - - --_activeValidatorCount; - - delete _validators[publicKey]; - } - - function enableOwnerValidators(address ownerAddress) external onlyOwner override { - _activeValidatorCount += _owners[ownerAddress].activeValidatorCount; - _owners[ownerAddress].validatorsDisabled = false; - } - - function disableOwnerValidators(address ownerAddress) external onlyOwner override { - _activeValidatorCount -= _owners[ownerAddress].activeValidatorCount; - _owners[ownerAddress].validatorsDisabled = true; - } - - function isLiquidated(address ownerAddress) external view override returns (bool) { - return _owners[ownerAddress].validatorsDisabled; - } - - /** - * @dev See {ISSVRegistry-operators}. - */ - function getOperatorById(uint32 operatorId) external view override returns (string memory, address, bytes memory, uint256, uint256, uint256, bool) { - Operator storage operator = _operators[operatorId]; - return (operator.name, operator.ownerAddress, operator.publicKey, _operators[operatorId].validatorCount, operator.fee.expand(), operator.score, operator.active); - } - - /** - * @dev See {ISSVRegistry-getOperatorsByOwnerAddress}. - */ - function getOperatorsByOwnerAddress(address ownerAddress) external view override returns (uint32[] memory) { - return _operatorsByOwnerAddress[ownerAddress]; - } - - /** - * @dev See {ISSVRegistry-getOperatorsByValidator}. - */ - function getOperatorsByValidator(bytes calldata validatorPublicKey) external view override returns (uint32[] memory operatorIds) { - Validator storage validator = _validators[validatorPublicKey]; - - return validator.operatorIds; - } - - /** - * @dev See {ISSVRegistry-getOperatorOwner}. - */ - function getOperatorOwner(uint32 operatorId) external view override returns (address) { - return _operators[operatorId].ownerAddress; - } - - /** - * @dev See {ISSVRegistry-getOperatorFee}. - */ - function getOperatorFee(uint32 operatorId) external view override returns (uint64) { - if (_operators[operatorId].ownerAddress == address(0)) { - revert OperatorNotFound(); - } - return _operators[operatorId].fee; - } - - /** - * @dev See {ISSVRegistry-activeValidatorCount}. - */ - function activeValidatorCount() external view override returns (uint32) { - return _activeValidatorCount; - } - - /** - * @dev See {ISSVRegistry-validators}. - */ - function validators(bytes calldata publicKey) external view override returns (address, bytes memory, bool) { - Validator storage validator = _validators[publicKey]; - - return (validator.ownerAddress, publicKey, validator.active); - } - - /** - * @dev See {ISSVRegistry-getValidatorsByAddress}. - */ - function getValidatorsByAddress(address ownerAddress) external view override returns (bytes[] memory) { - return _owners[ownerAddress].validators; - } - - /** - * @dev See {ISSVRegistry-getValidatorOwner}. - */ - function getValidatorOwner(bytes calldata publicKey) external view override returns (address) { - return _validators[publicKey].ownerAddress; - } - - /** - * @dev See {ISSVRegistry-validatorsPerOperatorCount}. - */ - function validatorsPerOperatorCount(uint32 operatorId) external view override returns (uint32) { - return _operators[operatorId].validatorCount; - } - - /** - * @dev See {ISSVRegistry-updateOperatorFee}. - */ - function _updateOperatorFeeUnsafe(uint32 operatorId, uint64 fee) private { - _operators[operatorId].fee = fee; - } - - /** - * @dev Validates the paramss for a validator. - * @param publicKey Validator public key. - * @param operatorIds Operator operatorIds. - * @param sharesPublicKeys Shares public keys. - * @param encryptedKeys Encrypted private keys. - */ - function _validateValidatorParams( - bytes calldata publicKey, - uint32[] calldata operatorIds, - bytes[] calldata sharesPublicKeys, - bytes[] calldata encryptedKeys - ) private pure { - if (publicKey.length != 48) { - revert InvalidPublicKeyLength(); - } - if ( - operatorIds.length != sharesPublicKeys.length || - operatorIds.length != encryptedKeys.length || - operatorIds.length < 4 || operatorIds.length % 3 != 1 - ) { - revert OessDataStructureInvalid(); - } - } - - function version() external pure override returns (uint32) { - return 1; - } - - uint256[50] ______gap; -} diff --git a/contracts/mocks/SSVTokenMock.sol b/contracts/mocks/SSVTokenMock.sol index b04a74aa..c9044eed 100644 --- a/contracts/mocks/SSVTokenMock.sol +++ b/contracts/mocks/SSVTokenMock.sol @@ -19,4 +19,4 @@ contract SSVTokenMock is Ownable, ERC20 { function mint(address to, uint256 amount) external onlyOwner { _mint(to, amount); } -} +} \ No newline at end of file diff --git a/contracts/utils/Types.sol b/contracts/utils/Types.sol index 660b8659..b5ef29df 100644 --- a/contracts/utils/Types.sol +++ b/contracts/utils/Types.sol @@ -2,17 +2,21 @@ // SPDX-License-Identifier: GPL-3.0-or-later pragma solidity ^0.8.2; -uint64 constant DEDUCTED_DIGITS = 10000000; +uint256 constant DEDUCTED_DIGITS = 10000000; library Types64 { function expand(uint64 value) internal pure returns (uint256) { - return uint256(value) * DEDUCTED_DIGITS; + return value * DEDUCTED_DIGITS; } } library Types256 { function shrink(uint256 value) internal pure returns (uint64) { + return uint64(shrinkable(value) / DEDUCTED_DIGITS); + } + + function shrinkable(uint256 value) internal pure returns (uint256) { require(value % DEDUCTED_DIGITS == 0, "Precision is over the maximum defined"); - return uint64(value / DEDUCTED_DIGITS); + return value; } } \ No newline at end of file diff --git a/contracts/utils/Utils.sol b/contracts/utils/Utils.sol deleted file mode 100644 index c69e295c..00000000 --- a/contracts/utils/Utils.sol +++ /dev/null @@ -1,14 +0,0 @@ -// File: contracts/SSVNetwork.sol -// SPDX-License-Identifier: GPL-3.0-or-later -pragma solidity ^0.8.2; - -contract Utils { - - function blockNumber() external view returns (uint256) { - return block.number; - } - - function blockTimestamp() external view returns (uint256) { - return block.timestamp; - } -} \ No newline at end of file diff --git a/contracts/utils/VersionedContract.sol b/contracts/utils/VersionedContract.sol deleted file mode 100644 index 7dfc4ecc..00000000 --- a/contracts/utils/VersionedContract.sol +++ /dev/null @@ -1,8 +0,0 @@ -// File: contracts/utils/VersionedContract.sol -// SPDX-License-Identifier: GPL-3.0-or-later - -pragma solidity ^0.8.2; - -interface VersionedContract { - function version() external pure returns (uint32); -} diff --git a/docs/_config.yml b/docs/_config.yml deleted file mode 100644 index 2f7efbea..00000000 --- a/docs/_config.yml +++ /dev/null @@ -1 +0,0 @@ -theme: jekyll-theme-minimal \ No newline at end of file diff --git a/hardhat.config.ts b/hardhat.config.ts index 2e80dc10..6be156b0 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -5,6 +5,7 @@ import '@nomiclabs/hardhat-waffle'; import '@nomiclabs/hardhat-ethers'; import '@nomiclabs/hardhat-etherscan'; import '@openzeppelin/hardhat-upgrades'; +import 'hardhat-contract-sizer'; import 'hardhat-gas-reporter'; import 'hardhat-tracer'; import 'solidity-coverage'; @@ -12,6 +13,9 @@ import '@nomiclabs/hardhat-solhint'; const config: HardhatUserConfig = { // Your type-safe config goes here + mocha: { + timeout: 40000000000000000 + }, solidity: { compilers: [ { @@ -19,7 +23,14 @@ const config: HardhatUserConfig = { settings: { optimizer: { enabled: true, - runs: 10000 + /** + * Should be 10,000 but because in local testnet project + * it fails to deploy because of contract size - we use 100 for now. + * Should fix it in that way when local testnet will be able to + * deploy contract too. + * @url https://github.com/bloxapp/hamlet/blob/master/hamlet/services/ssv/services/hardhat.py + */ + runs: Number(process.env.SOLIDITY_COMPILER_OPTIMIZER_RUNS || 10000) } } } @@ -34,6 +45,10 @@ const config: HardhatUserConfig = { // Your API key for Etherscan // Obtain one at https://etherscan.io/ apiKey: process.env.ETHERSCAN_KEY + }, + gasReporter: { + currency: 'USD', + gasPrice: 0.3 } }; @@ -42,8 +57,9 @@ if (process.env.GOERLI_ETH_NODE_URL) { config.networks.goerli = { url: process.env.GOERLI_ETH_NODE_URL, accounts: [`0x${process.env.GOERLI_OWNER_PRIVATE_KEY}`], - gasPrice: +(process.env.GAS_PRICE || ''), - gas: +(process.env.GAS || '') + gasPrice: process.env.GAS_PRICE == "auto" ? "auto" : Number(process.env.GAS_PRICE), + gas: process.env.GAS == "auto" ? "auto" : Number(process.env.GAS), + allowUnlimitedContractSize: true }; } @@ -56,4 +72,4 @@ if (process.env.MAINNET_ETH_NODE_URL) { }; } -export default config; \ No newline at end of file +export default config; diff --git a/package-lock.json b/package-lock.json index c9a33077..08aa6d9f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,49 +18,61 @@ "@types/cli-table": "^0.3.0", "@types/mocha": "^9.1.0", "@types/node": "^17.0.23", + "@typescript-eslint/eslint-plugin": "^5.36.0", "chai": "^4.3.6", "chai-as-promised": "^7.1.1", "cli-table": "^0.3.11", "dotenv": "^16.0.0", + "eslint": "^8.23.0", "ethereum-public-key-to-address": "0.0.5", "ethereum-waffle": "^3.4.4", "ethers": "^5.6.2", "gh-pages": "^3.2.3", - "hardhat": "^2.9.2", - "hardhat-gas-reporter": "^1.0.8", - "hardhat-tracer": "^1.1.0-rc.3", + "hardhat": "^2.12.2", + "hardhat-contract-sizer": "^2.6.1", + "hardhat-gas-reporter": "^1.0.9", + "hardhat-tracer": "^1.1.1", "prompts": "^2.4.2", "simple-git": "^3.10.0", - "solidity-coverage": "^0.7.20", + "solidity-coverage": "^0.8.2", "ts-node": "^10.7.0", "typechain": "^3.0.0", "typescript": "^4.6.3" } }, "node_modules/@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", "dev": true, "dependencies": { - "@babel/highlight": "^7.12.13" + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", - "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==", - "dev": true + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/highlight": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz", - "integrity": "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.14.0", + "@babel/helper-validator-identifier": "^7.18.6", "chalk": "^2.0.0", "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/highlight/node_modules/ansi-styles": { @@ -101,13 +113,22 @@ "node_modules/@babel/highlight/node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/@babel/highlight/node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, "engines": { "node": ">=4" @@ -125,22 +146,23 @@ "node": ">=4" } }, - "node_modules/@cspotcode/source-map-consumer": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", - "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", "dev": true, + "optional": true, "engines": { - "node": ">= 12" + "node": ">=0.1.90" } }, "node_modules/@cspotcode/source-map-support": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", - "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==", + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "dev": true, "dependencies": { - "@cspotcode/source-map-consumer": "0.8.0" + "@jridgewell/trace-mapping": "0.3.9" }, "engines": { "node": ">=12" @@ -163,7 +185,7 @@ "node_modules/@ensdomains/ens/node_modules/ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -172,7 +194,7 @@ "node_modules/@ensdomains/ens/node_modules/camelcase": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -181,7 +203,7 @@ "node_modules/@ensdomains/ens/node_modules/cliui": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", "dev": true, "dependencies": { "string-width": "^1.0.1", @@ -192,7 +214,7 @@ "node_modules/@ensdomains/ens/node_modules/find-up": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", "dev": true, "dependencies": { "path-exists": "^2.0.0", @@ -205,7 +227,7 @@ "node_modules/@ensdomains/ens/node_modules/fs-extra": { "version": "0.30.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", - "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", + "integrity": "sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==", "dev": true, "dependencies": { "graceful-fs": "^4.1.2", @@ -224,7 +246,7 @@ "node_modules/@ensdomains/ens/node_modules/is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", "dev": true, "dependencies": { "number-is-nan": "^1.0.0" @@ -236,7 +258,7 @@ "node_modules/@ensdomains/ens/node_modules/jsonfile": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", "dev": true, "optionalDependencies": { "graceful-fs": "^4.1.6" @@ -245,7 +267,7 @@ "node_modules/@ensdomains/ens/node_modules/load-json-file": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", "dev": true, "dependencies": { "graceful-fs": "^4.1.2", @@ -261,7 +283,7 @@ "node_modules/@ensdomains/ens/node_modules/parse-json": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", "dev": true, "dependencies": { "error-ex": "^1.2.0" @@ -273,7 +295,7 @@ "node_modules/@ensdomains/ens/node_modules/path-exists": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", "dev": true, "dependencies": { "pinkie-promise": "^2.0.0" @@ -285,7 +307,7 @@ "node_modules/@ensdomains/ens/node_modules/path-type": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", "dev": true, "dependencies": { "graceful-fs": "^4.1.2", @@ -299,7 +321,7 @@ "node_modules/@ensdomains/ens/node_modules/pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, "engines": { "node": ">=0.10.0" @@ -308,7 +330,7 @@ "node_modules/@ensdomains/ens/node_modules/read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", "dev": true, "dependencies": { "load-json-file": "^1.0.0", @@ -322,7 +344,7 @@ "node_modules/@ensdomains/ens/node_modules/read-pkg-up": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", "dev": true, "dependencies": { "find-up": "^1.0.0", @@ -335,12 +357,24 @@ "node_modules/@ensdomains/ens/node_modules/require-from-string": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", - "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=", + "integrity": "sha512-H7AkJWMobeskkttHyhTVtS0fxpFLjxhbfMa6Bk3wimP7sdPRGL3EyCg3sAQenFfAe+xQ+oAc85Nmtvq0ROM83Q==", "dev": true, "engines": { "node": ">=0.10.0" } }, + "node_modules/@ensdomains/ens/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, "node_modules/@ensdomains/ens/node_modules/semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -369,7 +403,7 @@ "node_modules/@ensdomains/ens/node_modules/string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", "dev": true, "dependencies": { "code-point-at": "^1.0.0", @@ -383,7 +417,7 @@ "node_modules/@ensdomains/ens/node_modules/strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", "dev": true, "dependencies": { "ansi-regex": "^2.0.0" @@ -395,7 +429,7 @@ "node_modules/@ensdomains/ens/node_modules/strip-bom": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", "dev": true, "dependencies": { "is-utf8": "^0.2.0" @@ -407,7 +441,7 @@ "node_modules/@ensdomains/ens/node_modules/wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", "dev": true, "dependencies": { "string-width": "^1.0.1", @@ -426,7 +460,7 @@ "node_modules/@ensdomains/ens/node_modules/yargs": { "version": "4.8.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz", - "integrity": "sha1-wMQpJMpKqmsObaFznfshZDn53cA=", + "integrity": "sha512-LqodLrnIDM3IFT+Hf/5sxBnEGECrfdC1uIbgZeJmESCSo4HoCAaKEus8MylXHAkdacGc0ye+Qa+dpkuom8uVYA==", "dev": true, "dependencies": { "cliui": "^3.2.0", @@ -448,7 +482,7 @@ "node_modules/@ensdomains/ens/node_modules/yargs-parser": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz", - "integrity": "sha1-hVaN488VD/SfpRgl8DqMiA3cxcQ=", + "integrity": "sha512-9pIKIJhnI5tonzG6OnCFlz/yln8xHYcGl+pn3xR0Vzff0vzN1PbNRaelgfgRUwZ3s4i3jvxT9WhmUGL4whnasA==", "dev": true, "dependencies": { "camelcase": "^3.0.0", @@ -462,6 +496,29 @@ "deprecated": "Please use @ensdomains/ens-contracts", "dev": true }, + "node_modules/@eslint/eslintrc": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", + "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/@ethereum-waffle/chai": { "version": "3.4.4", "resolved": "https://registry.npmjs.org/@ethereum-waffle/chai/-/chai-3.4.4.tgz", @@ -540,100 +597,10 @@ "node": ">=10.0" } }, - "node_modules/@ethereumjs/block": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/@ethereumjs/block/-/block-3.6.2.tgz", - "integrity": "sha512-mOqYWwMlAZpYUEOEqt7EfMFuVL2eyLqWWIzcf4odn6QgXY8jBI2NhVuJncrMCKeMZrsJAe7/auaRRB6YcdH+Qw==", - "dev": true, - "dependencies": { - "@ethereumjs/common": "^2.6.3", - "@ethereumjs/tx": "^3.5.1", - "ethereumjs-util": "^7.1.4", - "merkle-patricia-tree": "^4.2.4" - } - }, - "node_modules/@ethereumjs/blockchain": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/@ethereumjs/blockchain/-/blockchain-5.5.2.tgz", - "integrity": "sha512-Jz26iJmmsQtngerW6r5BDFaew/f2mObLrRZo3rskLOx1lmtMZ8+TX/vJexmivrnWgmAsTdNWhlKUYY4thPhPig==", - "dev": true, - "dependencies": { - "@ethereumjs/block": "^3.6.2", - "@ethereumjs/common": "^2.6.3", - "@ethereumjs/ethash": "^1.1.0", - "debug": "^4.3.3", - "ethereumjs-util": "^7.1.4", - "level-mem": "^5.0.1", - "lru-cache": "^5.1.1", - "semaphore-async-await": "^1.5.1" - } - }, - "node_modules/@ethereumjs/common": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.6.3.tgz", - "integrity": "sha512-mQwPucDL7FDYIg9XQ8DL31CnIYZwGhU5hyOO5E+BMmT71G0+RHvIT5rIkLBirJEKxV6+Rcf9aEIY0kXInxUWpQ==", - "dev": true, - "dependencies": { - "crc-32": "^1.2.0", - "ethereumjs-util": "^7.1.4" - } - }, - "node_modules/@ethereumjs/ethash": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/ethash/-/ethash-1.1.0.tgz", - "integrity": "sha512-/U7UOKW6BzpA+Vt+kISAoeDie1vAvY4Zy2KF5JJb+So7+1yKmJeJEHOGSnQIj330e9Zyl3L5Nae6VZyh2TJnAA==", - "dev": true, - "dependencies": { - "@ethereumjs/block": "^3.5.0", - "@types/levelup": "^4.3.0", - "buffer-xor": "^2.0.1", - "ethereumjs-util": "^7.1.1", - "miller-rabin": "^4.0.0" - } - }, - "node_modules/@ethereumjs/ethash/node_modules/buffer-xor": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-2.0.2.tgz", - "integrity": "sha512-eHslX0bin3GB+Lx2p7lEYRShRewuNZL3fUl4qlVJGGiwoPGftmt8JQgk2Y9Ji5/01TnVDo33E5b5O3vUB1HdqQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.1" - } - }, - "node_modules/@ethereumjs/tx": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.5.1.tgz", - "integrity": "sha512-xzDrTiu4sqZXUcaBxJ4n4W5FrppwxLxZB4ZDGVLtxSQR4lVuOnFR6RcUHdg1mpUhAPVrmnzLJpxaeXnPxIyhWA==", - "dev": true, - "dependencies": { - "@ethereumjs/common": "^2.6.3", - "ethereumjs-util": "^7.1.4" - } - }, - "node_modules/@ethereumjs/vm": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/vm/-/vm-5.8.0.tgz", - "integrity": "sha512-mn2G2SX79QY4ckVvZUfxlNUpzwT2AEIkvgJI8aHoQaNYEHhH8rmdVDIaVVgz6//PjK52BZsK23afz+WvSR0Qqw==", - "dev": true, - "dependencies": { - "@ethereumjs/block": "^3.6.2", - "@ethereumjs/blockchain": "^5.5.2", - "@ethereumjs/common": "^2.6.3", - "@ethereumjs/tx": "^3.5.1", - "async-eventemitter": "^0.2.4", - "core-js-pure": "^3.0.1", - "debug": "^4.3.3", - "ethereumjs-util": "^7.1.4", - "functional-red-black-tree": "^1.0.1", - "mcl-wasm": "^0.7.1", - "merkle-patricia-tree": "^4.2.4", - "rustbn.js": "~0.2.0" - } - }, "node_modules/@ethersproject/abi": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.6.0.tgz", - "integrity": "sha512-AhVByTwdXCc2YQ20v300w6KVHle9g2OFc28ZAFCPnJyEpkv1xKXjZcSTgWOlv1i+0dqlgF8RCF2Rn2KC1t+1Vg==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", + "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", "dev": true, "funding": [ { @@ -646,21 +613,21 @@ } ], "dependencies": { - "@ethersproject/address": "^5.6.0", - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/constants": "^5.6.0", - "@ethersproject/hash": "^5.6.0", - "@ethersproject/keccak256": "^5.6.0", - "@ethersproject/logger": "^5.6.0", - "@ethersproject/properties": "^5.6.0", - "@ethersproject/strings": "^5.6.0" + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" } }, "node_modules/@ethersproject/abstract-provider": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.6.0.tgz", - "integrity": "sha512-oPMFlKLN+g+y7a79cLK3WiLcjWFnZQtXWgnLAbHZcN3s7L4v90UHpTOrLk+m3yr0gt+/h9STTM6zrr7PM8uoRw==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", "dev": true, "funding": [ { @@ -673,19 +640,19 @@ } ], "dependencies": { - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/logger": "^5.6.0", - "@ethersproject/networks": "^5.6.0", - "@ethersproject/properties": "^5.6.0", - "@ethersproject/transactions": "^5.6.0", - "@ethersproject/web": "^5.6.0" + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" } }, "node_modules/@ethersproject/abstract-signer": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.6.0.tgz", - "integrity": "sha512-WOqnG0NJKtI8n0wWZPReHtaLkDByPL67tn4nBaDAhmVq8sjHTPbCdz4DRhVu/cfTOvfy9w3iq5QZ7BX7zw56BQ==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", "dev": true, "funding": [ { @@ -698,17 +665,17 @@ } ], "dependencies": { - "@ethersproject/abstract-provider": "^5.6.0", - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/logger": "^5.6.0", - "@ethersproject/properties": "^5.6.0" + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" } }, "node_modules/@ethersproject/address": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.6.0.tgz", - "integrity": "sha512-6nvhYXjbXsHPS+30sHZ+U4VMagFC/9zAk6Gd/h3S21YW4+yfb0WfRtaAIZ4kfM4rrVwqiy284LP0GtL5HXGLxQ==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", "dev": true, "funding": [ { @@ -721,17 +688,17 @@ } ], "dependencies": { - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/keccak256": "^5.6.0", - "@ethersproject/logger": "^5.6.0", - "@ethersproject/rlp": "^5.6.0" + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" } }, "node_modules/@ethersproject/base64": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.6.0.tgz", - "integrity": "sha512-2Neq8wxJ9xHxCF9TUgmKeSh9BXJ6OAxWfeGWvbauPh8FuHEjamgHilllx8KkSd5ErxyHIX7Xv3Fkcud2kY9ezw==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", "dev": true, "funding": [ { @@ -744,13 +711,13 @@ } ], "dependencies": { - "@ethersproject/bytes": "^5.6.0" + "@ethersproject/bytes": "^5.7.0" } }, "node_modules/@ethersproject/basex": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.6.0.tgz", - "integrity": "sha512-qN4T+hQd/Md32MoJpc69rOwLYRUXwjTlhHDIeUkUmiN/JyWkkLLMoG0TqvSQKNqZOMgN5stbUYN6ILC+eD7MEQ==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", + "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", "dev": true, "funding": [ { @@ -763,14 +730,14 @@ } ], "dependencies": { - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/properties": "^5.6.0" + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/properties": "^5.7.0" } }, "node_modules/@ethersproject/bignumber": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.6.0.tgz", - "integrity": "sha512-VziMaXIUHQlHJmkv1dlcd6GY2PmT0khtAqaMctCIDogxkrarMzA9L94KN1NeXqqOfFD6r0sJT3vCTOFSmZ07DA==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", "dev": true, "funding": [ { @@ -783,15 +750,15 @@ } ], "dependencies": { - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/logger": "^5.6.0", - "bn.js": "^4.11.9" + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" } }, "node_modules/@ethersproject/bytes": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.6.1.tgz", - "integrity": "sha512-NwQt7cKn5+ZE4uDn+X5RAXLp46E1chXoaMmrxAyA0rblpxz8t58lVkrHXoRIn0lz1joQElQ8410GqhTqMOwc6g==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", "dev": true, "funding": [ { @@ -804,13 +771,13 @@ } ], "dependencies": { - "@ethersproject/logger": "^5.6.0" + "@ethersproject/logger": "^5.7.0" } }, "node_modules/@ethersproject/constants": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.6.0.tgz", - "integrity": "sha512-SrdaJx2bK0WQl23nSpV/b1aq293Lh0sUaZT/yYKPDKn4tlAbkH96SPJwIhwSwTsoQQZxuh1jnqsKwyymoiBdWA==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", "dev": true, "funding": [ { @@ -823,13 +790,13 @@ } ], "dependencies": { - "@ethersproject/bignumber": "^5.6.0" + "@ethersproject/bignumber": "^5.7.0" } }, "node_modules/@ethersproject/contracts": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.6.0.tgz", - "integrity": "sha512-74Ge7iqTDom0NX+mux8KbRUeJgu1eHZ3iv6utv++sLJG80FVuU9HnHeKVPfjd9s3woFhaFoQGf3B3iH/FrQmgw==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", + "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", "dev": true, "funding": [ { @@ -842,22 +809,22 @@ } ], "dependencies": { - "@ethersproject/abi": "^5.6.0", - "@ethersproject/abstract-provider": "^5.6.0", - "@ethersproject/abstract-signer": "^5.6.0", - "@ethersproject/address": "^5.6.0", - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/constants": "^5.6.0", - "@ethersproject/logger": "^5.6.0", - "@ethersproject/properties": "^5.6.0", - "@ethersproject/transactions": "^5.6.0" + "@ethersproject/abi": "^5.7.0", + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0" } }, "node_modules/@ethersproject/hash": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.6.0.tgz", - "integrity": "sha512-fFd+k9gtczqlr0/BruWLAu7UAOas1uRRJvOR84uDf4lNZ+bTkGl366qvniUZHKtlqxBRU65MkOobkmvmpHU+jA==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", "dev": true, "funding": [ { @@ -870,20 +837,21 @@ } ], "dependencies": { - "@ethersproject/abstract-signer": "^5.6.0", - "@ethersproject/address": "^5.6.0", - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/keccak256": "^5.6.0", - "@ethersproject/logger": "^5.6.0", - "@ethersproject/properties": "^5.6.0", - "@ethersproject/strings": "^5.6.0" + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" } }, "node_modules/@ethersproject/hdnode": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.6.0.tgz", - "integrity": "sha512-61g3Jp3nwDqJcL/p4nugSyLrpl/+ChXIOtCEM8UDmWeB3JCAt5FoLdOMXQc3WWkc0oM2C0aAn6GFqqMcS/mHTw==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", + "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", "dev": true, "funding": [ { @@ -896,24 +864,24 @@ } ], "dependencies": { - "@ethersproject/abstract-signer": "^5.6.0", - "@ethersproject/basex": "^5.6.0", - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/logger": "^5.6.0", - "@ethersproject/pbkdf2": "^5.6.0", - "@ethersproject/properties": "^5.6.0", - "@ethersproject/sha2": "^5.6.0", - "@ethersproject/signing-key": "^5.6.0", - "@ethersproject/strings": "^5.6.0", - "@ethersproject/transactions": "^5.6.0", - "@ethersproject/wordlists": "^5.6.0" + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" } }, "node_modules/@ethersproject/json-wallets": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.6.0.tgz", - "integrity": "sha512-fmh86jViB9r0ibWXTQipxpAGMiuxoqUf78oqJDlCAJXgnJF024hOOX7qVgqsjtbeoxmcLwpPsXNU0WEe/16qPQ==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", + "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", "dev": true, "funding": [ { @@ -926,25 +894,25 @@ } ], "dependencies": { - "@ethersproject/abstract-signer": "^5.6.0", - "@ethersproject/address": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/hdnode": "^5.6.0", - "@ethersproject/keccak256": "^5.6.0", - "@ethersproject/logger": "^5.6.0", - "@ethersproject/pbkdf2": "^5.6.0", - "@ethersproject/properties": "^5.6.0", - "@ethersproject/random": "^5.6.0", - "@ethersproject/strings": "^5.6.0", - "@ethersproject/transactions": "^5.6.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", "aes-js": "3.0.0", "scrypt-js": "3.0.1" } }, "node_modules/@ethersproject/keccak256": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.6.0.tgz", - "integrity": "sha512-tk56BJ96mdj/ksi7HWZVWGjCq0WVl/QvfhFQNeL8fxhBlGoP+L80uDCiQcpJPd+2XxkivS3lwRm3E0CXTfol0w==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", "dev": true, "funding": [ { @@ -957,20 +925,14 @@ } ], "dependencies": { - "@ethersproject/bytes": "^5.6.0", + "@ethersproject/bytes": "^5.7.0", "js-sha3": "0.8.0" } }, - "node_modules/@ethersproject/keccak256/node_modules/js-sha3": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", - "dev": true - }, "node_modules/@ethersproject/logger": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.6.0.tgz", - "integrity": "sha512-BiBWllUROH9w+P21RzoxJKzqoqpkyM1pRnEKG69bulE9TSQD8SAIvTQqIMZmmCO8pUNkgLP1wndX1gKghSpBmg==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", "dev": true, "funding": [ { @@ -984,9 +946,9 @@ ] }, "node_modules/@ethersproject/networks": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.6.1.tgz", - "integrity": "sha512-b2rrupf3kCTcc3jr9xOWBuHylSFtbpJf79Ga7QR98ienU2UqGimPGEsYMgbI29KHJfA5Us89XwGVmxrlxmSrMg==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", "dev": true, "funding": [ { @@ -999,13 +961,13 @@ } ], "dependencies": { - "@ethersproject/logger": "^5.6.0" + "@ethersproject/logger": "^5.7.0" } }, "node_modules/@ethersproject/pbkdf2": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.6.0.tgz", - "integrity": "sha512-Wu1AxTgJo3T3H6MIu/eejLFok9TYoSdgwRr5oGY1LTLfmGesDoSx05pemsbrPT2gG4cQME+baTSCp5sEo2erZQ==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", + "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", "dev": true, "funding": [ { @@ -1018,14 +980,14 @@ } ], "dependencies": { - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/sha2": "^5.6.0" + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/sha2": "^5.7.0" } }, "node_modules/@ethersproject/properties": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.6.0.tgz", - "integrity": "sha512-szoOkHskajKePTJSZ46uHUWWkbv7TzP2ypdEK6jGMqJaEt2sb0jCgfBo0gH0m2HBpRixMuJ6TBRaQCF7a9DoCg==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", "dev": true, "funding": [ { @@ -1038,13 +1000,13 @@ } ], "dependencies": { - "@ethersproject/logger": "^5.6.0" + "@ethersproject/logger": "^5.7.0" } }, "node_modules/@ethersproject/providers": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.6.2.tgz", - "integrity": "sha512-6/EaFW/hNWz+224FXwl8+HdMRzVHt8DpPmu5MZaIQqx/K/ELnC9eY236SMV7mleCM3NnEArFwcAAxH5kUUgaRg==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", + "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", "dev": true, "funding": [ { @@ -1057,31 +1019,32 @@ } ], "dependencies": { - "@ethersproject/abstract-provider": "^5.6.0", - "@ethersproject/abstract-signer": "^5.6.0", - "@ethersproject/address": "^5.6.0", - "@ethersproject/basex": "^5.6.0", - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/constants": "^5.6.0", - "@ethersproject/hash": "^5.6.0", - "@ethersproject/logger": "^5.6.0", - "@ethersproject/networks": "^5.6.0", - "@ethersproject/properties": "^5.6.0", - "@ethersproject/random": "^5.6.0", - "@ethersproject/rlp": "^5.6.0", - "@ethersproject/sha2": "^5.6.0", - "@ethersproject/strings": "^5.6.0", - "@ethersproject/transactions": "^5.6.0", - "@ethersproject/web": "^5.6.0", + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0", "bech32": "1.1.4", "ws": "7.4.6" } }, "node_modules/@ethersproject/random": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.6.0.tgz", - "integrity": "sha512-si0PLcLjq+NG/XHSZz90asNf+YfKEqJGVdxoEkSukzbnBgC8rydbgbUgBbBGLeHN4kAJwUFEKsu3sCXT93YMsw==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", + "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", "dev": true, "funding": [ { @@ -1094,14 +1057,14 @@ } ], "dependencies": { - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/logger": "^5.6.0" + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" } }, "node_modules/@ethersproject/rlp": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.6.0.tgz", - "integrity": "sha512-dz9WR1xpcTL+9DtOT/aDO+YyxSSdO8YIS0jyZwHHSlAmnxA6cKU3TrTd4Xc/bHayctxTgGLYNuVVoiXE4tTq1g==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", "dev": true, "funding": [ { @@ -1114,14 +1077,14 @@ } ], "dependencies": { - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/logger": "^5.6.0" + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" } }, "node_modules/@ethersproject/sha2": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.6.0.tgz", - "integrity": "sha512-1tNWCPFLu1n3JM9t4/kytz35DkuF9MxqkGGEHNauEbaARdm2fafnOyw1s0tIQDPKF/7bkP1u3dbrmjpn5CelyA==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", "dev": true, "funding": [ { @@ -1134,15 +1097,15 @@ } ], "dependencies": { - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/logger": "^5.6.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", "hash.js": "1.1.7" } }, "node_modules/@ethersproject/signing-key": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.6.0.tgz", - "integrity": "sha512-S+njkhowmLeUu/r7ir8n78OUKx63kBdMCPssePS89So1TH4hZqnWFsThEd/GiXYp9qMxVrydf7KdM9MTGPFukA==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", "dev": true, "funding": [ { @@ -1155,18 +1118,18 @@ } ], "dependencies": { - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/logger": "^5.6.0", - "@ethersproject/properties": "^5.6.0", - "bn.js": "^4.11.9", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", "elliptic": "6.5.4", "hash.js": "1.1.7" } }, "node_modules/@ethersproject/solidity": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.6.0.tgz", - "integrity": "sha512-YwF52vTNd50kjDzqKaoNNbC/r9kMDPq3YzDWmsjFTRBcIF1y4JCQJ8gB30wsTfHbaxgxelI5BfxQSxD/PbJOww==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", + "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", "dev": true, "funding": [ { @@ -1179,18 +1142,18 @@ } ], "dependencies": { - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/keccak256": "^5.6.0", - "@ethersproject/logger": "^5.6.0", - "@ethersproject/sha2": "^5.6.0", - "@ethersproject/strings": "^5.6.0" + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0" } }, "node_modules/@ethersproject/strings": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.6.0.tgz", - "integrity": "sha512-uv10vTtLTZqrJuqBZR862ZQjTIa724wGPWQqZrofaPI/kUsf53TBG0I0D+hQ1qyNtllbNzaW+PDPHHUI6/65Mg==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", "dev": true, "funding": [ { @@ -1203,15 +1166,15 @@ } ], "dependencies": { - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/constants": "^5.6.0", - "@ethersproject/logger": "^5.6.0" + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" } }, "node_modules/@ethersproject/transactions": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.6.0.tgz", - "integrity": "sha512-4HX+VOhNjXHZyGzER6E/LVI2i6lf9ejYeWD6l4g50AdmimyuStKc39kvKf1bXWQMg7QNVh+uC7dYwtaZ02IXeg==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", "dev": true, "funding": [ { @@ -1224,21 +1187,21 @@ } ], "dependencies": { - "@ethersproject/address": "^5.6.0", - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/constants": "^5.6.0", - "@ethersproject/keccak256": "^5.6.0", - "@ethersproject/logger": "^5.6.0", - "@ethersproject/properties": "^5.6.0", - "@ethersproject/rlp": "^5.6.0", - "@ethersproject/signing-key": "^5.6.0" + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" } }, "node_modules/@ethersproject/units": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.6.0.tgz", - "integrity": "sha512-tig9x0Qmh8qbo1w8/6tmtyrm/QQRviBh389EQ+d8fP4wDsBrJBf08oZfoiz1/uenKK9M78yAP4PoR7SsVoTjsw==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", + "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", "dev": true, "funding": [ { @@ -1251,15 +1214,15 @@ } ], "dependencies": { - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/constants": "^5.6.0", - "@ethersproject/logger": "^5.6.0" + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" } }, "node_modules/@ethersproject/wallet": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.6.0.tgz", - "integrity": "sha512-qMlSdOSTyp0MBeE+r7SUhr1jjDlC1zAXB8VD84hCnpijPQiSNbxr6GdiLXxpUs8UKzkDiNYYC5DRI3MZr+n+tg==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", + "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", "dev": true, "funding": [ { @@ -1272,27 +1235,27 @@ } ], "dependencies": { - "@ethersproject/abstract-provider": "^5.6.0", - "@ethersproject/abstract-signer": "^5.6.0", - "@ethersproject/address": "^5.6.0", - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/hash": "^5.6.0", - "@ethersproject/hdnode": "^5.6.0", - "@ethersproject/json-wallets": "^5.6.0", - "@ethersproject/keccak256": "^5.6.0", - "@ethersproject/logger": "^5.6.0", - "@ethersproject/properties": "^5.6.0", - "@ethersproject/random": "^5.6.0", - "@ethersproject/signing-key": "^5.6.0", - "@ethersproject/transactions": "^5.6.0", - "@ethersproject/wordlists": "^5.6.0" + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/json-wallets": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" } }, "node_modules/@ethersproject/web": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.6.0.tgz", - "integrity": "sha512-G/XHj0hV1FxI2teHRfCGvfBUHFmU+YOSbCxlAMqJklxSa7QMiHFQfAxvwY2PFqgvdkxEKwRNr/eCjfAPEm2Ctg==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", "dev": true, "funding": [ { @@ -1305,17 +1268,17 @@ } ], "dependencies": { - "@ethersproject/base64": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/logger": "^5.6.0", - "@ethersproject/properties": "^5.6.0", - "@ethersproject/strings": "^5.6.0" + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" } }, "node_modules/@ethersproject/wordlists": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.6.0.tgz", - "integrity": "sha512-q0bxNBfIX3fUuAo9OmjlEYxP40IB8ABgb7HjEZCL5IKubzV3j30CWi2rqQbjTS2HfoyQbfINoKcTVWP4ejwR7Q==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", + "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", "dev": true, "funding": [ { @@ -1328,11 +1291,69 @@ } ], "dependencies": { - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/hash": "^5.6.0", - "@ethersproject/logger": "^5.6.0", - "@ethersproject/properties": "^5.6.0", - "@ethersproject/strings": "^5.6.0" + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.7", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", + "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" } }, "node_modules/@kwsites/file-exists": { @@ -1351,9 +1372,9 @@ "dev": true }, "node_modules/@metamask/eth-sig-util": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-4.0.0.tgz", - "integrity": "sha512-LczOjjxY4A7XYloxzyxJIHONELmUxVZncpOLoClpEcTiebiVdM46KRPYXGuULro9oNNR2xdVx3yoKiQjdfWmoA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz", + "integrity": "sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==", "dev": true, "dependencies": { "ethereumjs-abi": "^0.6.8", @@ -1375,6 +1396,12 @@ "@types/node": "*" } }, + "node_modules/@metamask/eth-sig-util/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, "node_modules/@metamask/eth-sig-util/node_modules/ethereumjs-util": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", @@ -1390,19 +1417,37 @@ "rlp": "^2.2.3" } }, - "node_modules/@metamask/eth-sig-util/node_modules/tweetnacl": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", - "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", - "dev": true + "node_modules/@noble/hashes": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.2.tgz", + "integrity": "sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, + "node_modules/@noble/secp256k1": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.6.3.tgz", + "integrity": "sha512-T04e4iTurVy7I8Sw4+c5OSN9/RkPlo1uKxAomtxQNLq8j1uPAqnsqG1bqvY3Jv7c13gyr6dui0zmh/I3+f/JaQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] }, "node_modules/@nodelib/fs.scandir": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", - "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "dependencies": { - "@nodelib/fs.stat": "2.0.4", + "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" }, "engines": { @@ -1410,31 +1455,395 @@ } }, "node_modules/@nodelib/fs.stat": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", - "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, "engines": { "node": ">= 8" } }, "node_modules/@nodelib/fs.walk": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz", - "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, "dependencies": { - "@nodelib/fs.scandir": "2.1.4", + "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" }, "engines": { "node": ">= 8" } }, + "node_modules/@nomicfoundation/ethereumjs-block": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-4.0.0.tgz", + "integrity": "sha512-bk8uP8VuexLgyIZAHExH1QEovqx0Lzhc9Ntm63nCRKLHXIZkobaFaeCVwTESV7YkPKUk7NiK11s8ryed4CS9yA==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-common": "^3.0.0", + "@nomicfoundation/ethereumjs-rlp": "^4.0.0", + "@nomicfoundation/ethereumjs-trie": "^5.0.0", + "@nomicfoundation/ethereumjs-tx": "^4.0.0", + "@nomicfoundation/ethereumjs-util": "^8.0.0", + "ethereum-cryptography": "0.1.3" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-blockchain": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-6.0.0.tgz", + "integrity": "sha512-pLFEoea6MWd81QQYSReLlLfH7N9v7lH66JC/NMPN848ySPPQA5renWnE7wPByfQFzNrPBuDDRFFULMDmj1C0xw==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-block": "^4.0.0", + "@nomicfoundation/ethereumjs-common": "^3.0.0", + "@nomicfoundation/ethereumjs-ethash": "^2.0.0", + "@nomicfoundation/ethereumjs-rlp": "^4.0.0", + "@nomicfoundation/ethereumjs-trie": "^5.0.0", + "@nomicfoundation/ethereumjs-util": "^8.0.0", + "abstract-level": "^1.0.3", + "debug": "^4.3.3", + "ethereum-cryptography": "0.1.3", + "level": "^8.0.0", + "lru-cache": "^5.1.1", + "memory-level": "^1.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-common": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-3.0.0.tgz", + "integrity": "sha512-WS7qSshQfxoZOpHG/XqlHEGRG1zmyjYrvmATvc4c62+gZXgre1ymYP8ZNgx/3FyZY0TWe9OjFlKOfLqmgOeYwA==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-util": "^8.0.0", + "crc-32": "^1.2.0" + } + }, + "node_modules/@nomicfoundation/ethereumjs-ethash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-2.0.0.tgz", + "integrity": "sha512-WpDvnRncfDUuXdsAXlI4lXbqUDOA+adYRQaEezIkxqDkc+LDyYDbd/xairmY98GnQzo1zIqsIL6GB5MoMSJDew==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-block": "^4.0.0", + "@nomicfoundation/ethereumjs-rlp": "^4.0.0", + "@nomicfoundation/ethereumjs-util": "^8.0.0", + "abstract-level": "^1.0.3", + "bigint-crypto-utils": "^3.0.23", + "ethereum-cryptography": "0.1.3" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-evm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-1.0.0.tgz", + "integrity": "sha512-hVS6qRo3V1PLKCO210UfcEQHvlG7GqR8iFzp0yyjTg2TmJQizcChKgWo8KFsdMw6AyoLgLhHGHw4HdlP8a4i+Q==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-common": "^3.0.0", + "@nomicfoundation/ethereumjs-util": "^8.0.0", + "@types/async-eventemitter": "^0.2.1", + "async-eventemitter": "^0.2.4", + "debug": "^4.3.3", + "ethereum-cryptography": "0.1.3", + "mcl-wasm": "^0.7.1", + "rustbn.js": "~0.2.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-rlp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-4.0.0.tgz", + "integrity": "sha512-GaSOGk5QbUk4eBP5qFbpXoZoZUj/NrW7MRa0tKY4Ew4c2HAS0GXArEMAamtFrkazp0BO4K5p2ZCG3b2FmbShmw==", + "dev": true, + "bin": { + "rlp": "bin/rlp" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-statemanager": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-1.0.0.tgz", + "integrity": "sha512-jCtqFjcd2QejtuAMjQzbil/4NHf5aAWxUc+CvS0JclQpl+7M0bxMofR2AJdtz+P3u0ke2euhYREDiE7iSO31vQ==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-common": "^3.0.0", + "@nomicfoundation/ethereumjs-rlp": "^4.0.0", + "@nomicfoundation/ethereumjs-trie": "^5.0.0", + "@nomicfoundation/ethereumjs-util": "^8.0.0", + "debug": "^4.3.3", + "ethereum-cryptography": "0.1.3", + "functional-red-black-tree": "^1.0.1" + } + }, + "node_modules/@nomicfoundation/ethereumjs-trie": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-5.0.0.tgz", + "integrity": "sha512-LIj5XdE+s+t6WSuq/ttegJzZ1vliwg6wlb+Y9f4RlBpuK35B9K02bO7xU+E6Rgg9RGptkWd6TVLdedTI4eNc2A==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-rlp": "^4.0.0", + "@nomicfoundation/ethereumjs-util": "^8.0.0", + "ethereum-cryptography": "0.1.3", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-tx": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-4.0.0.tgz", + "integrity": "sha512-Gg3Lir2lNUck43Kp/3x6TfBNwcWC9Z1wYue9Nz3v4xjdcv6oDW9QSMJxqsKw9QEGoBBZ+gqwpW7+F05/rs/g1w==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-common": "^3.0.0", + "@nomicfoundation/ethereumjs-rlp": "^4.0.0", + "@nomicfoundation/ethereumjs-util": "^8.0.0", + "ethereum-cryptography": "0.1.3" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-util": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-8.0.0.tgz", + "integrity": "sha512-2emi0NJ/HmTG+CGY58fa+DQuAoroFeSH9gKu9O6JnwTtlzJtgfTixuoOqLEgyyzZVvwfIpRueuePb8TonL1y+A==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-rlp": "^4.0.0-beta.2", + "ethereum-cryptography": "0.1.3" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-vm": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-6.0.0.tgz", + "integrity": "sha512-JMPxvPQ3fzD063Sg3Tp+UdwUkVxMoo1uML6KSzFhMH3hoQi/LMuXBoEHAoW83/vyNS9BxEe6jm6LmT5xdeEJ6w==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-block": "^4.0.0", + "@nomicfoundation/ethereumjs-blockchain": "^6.0.0", + "@nomicfoundation/ethereumjs-common": "^3.0.0", + "@nomicfoundation/ethereumjs-evm": "^1.0.0", + "@nomicfoundation/ethereumjs-rlp": "^4.0.0", + "@nomicfoundation/ethereumjs-statemanager": "^1.0.0", + "@nomicfoundation/ethereumjs-trie": "^5.0.0", + "@nomicfoundation/ethereumjs-tx": "^4.0.0", + "@nomicfoundation/ethereumjs-util": "^8.0.0", + "@types/async-eventemitter": "^0.2.1", + "async-eventemitter": "^0.2.4", + "debug": "^4.3.3", + "ethereum-cryptography": "0.1.3", + "functional-red-black-tree": "^1.0.1", + "mcl-wasm": "^0.7.1", + "rustbn.js": "~0.2.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.0.tgz", + "integrity": "sha512-xGWAiVCGOycvGiP/qrlf9f9eOn7fpNbyJygcB0P21a1MDuVPlKt0Srp7rvtBEutYQ48ouYnRXm33zlRnlTOPHg==", + "dev": true, + "engines": { + "node": ">= 12" + }, + "optionalDependencies": { + "@nomicfoundation/solidity-analyzer-darwin-arm64": "0.1.0", + "@nomicfoundation/solidity-analyzer-darwin-x64": "0.1.0", + "@nomicfoundation/solidity-analyzer-freebsd-x64": "0.1.0", + "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": "0.1.0", + "@nomicfoundation/solidity-analyzer-linux-arm64-musl": "0.1.0", + "@nomicfoundation/solidity-analyzer-linux-x64-gnu": "0.1.0", + "@nomicfoundation/solidity-analyzer-linux-x64-musl": "0.1.0", + "@nomicfoundation/solidity-analyzer-win32-arm64-msvc": "0.1.0", + "@nomicfoundation/solidity-analyzer-win32-ia32-msvc": "0.1.0", + "@nomicfoundation/solidity-analyzer-win32-x64-msvc": "0.1.0" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-darwin-arm64": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.0.tgz", + "integrity": "sha512-vEF3yKuuzfMHsZecHQcnkUrqm8mnTWfJeEVFHpg+cO+le96xQA4lAJYdUan8pXZohQxv1fSReQsn4QGNuBNuCw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-darwin-x64": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.0.tgz", + "integrity": "sha512-dlHeIg0pTL4dB1l9JDwbi/JG6dHQaU1xpDK+ugYO8eJ1kxx9Dh2isEUtA4d02cQAl22cjOHTvifAk96A+ItEHA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-freebsd-x64": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-freebsd-x64/-/solidity-analyzer-freebsd-x64-0.1.0.tgz", + "integrity": "sha512-WFCZYMv86WowDA4GiJKnebMQRt3kCcFqHeIomW6NMyqiKqhK1kIZCxSLDYsxqlx396kKLPN1713Q1S8tu68GKg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-linux-arm64-gnu": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.0.tgz", + "integrity": "sha512-DTw6MNQWWlCgc71Pq7CEhEqkb7fZnS7oly13pujs4cMH1sR0JzNk90Mp1zpSCsCs4oKan2ClhMlLKtNat/XRKQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-linux-arm64-musl": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.0.tgz", + "integrity": "sha512-wUpUnR/3GV5Da88MhrxXh/lhb9kxh9V3Jya2NpBEhKDIRCDmtXMSqPMXHZmOR9DfCwCvG6vLFPr/+YrPCnUN0w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-linux-x64-gnu": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.0.tgz", + "integrity": "sha512-lR0AxK1x/MeKQ/3Pt923kPvwigmGX3OxeU5qNtQ9pj9iucgk4PzhbS3ruUeSpYhUxG50jN4RkIGwUMoev5lguw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-linux-x64-musl": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.0.tgz", + "integrity": "sha512-A1he/8gy/JeBD3FKvmI6WUJrGrI5uWJNr5Xb9WdV+DK0F8msuOqpEByLlnTdLkXMwW7nSl3awvLezOs9xBHJEg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-win32-arm64-msvc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-arm64-msvc/-/solidity-analyzer-win32-arm64-msvc-0.1.0.tgz", + "integrity": "sha512-7x5SXZ9R9H4SluJZZP8XPN+ju7Mx+XeUMWZw7ZAqkdhP5mK19I4vz3x0zIWygmfE8RT7uQ5xMap0/9NPsO+ykw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-win32-ia32-msvc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-ia32-msvc/-/solidity-analyzer-win32-ia32-msvc-0.1.0.tgz", + "integrity": "sha512-m7w3xf+hnE774YRXu+2mGV7RiF3QJtUoiYU61FascCkQhX3QMQavh7saH/vzb2jN5D24nT/jwvaHYX/MAM9zUw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-win32-x64-msvc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.0.tgz", + "integrity": "sha512-xCuybjY0sLJQnJhupiFAXaek2EqF0AP0eBjgzaalPXSNvCEN6ZYHvUzdA50ENDVeSYFXcUsYf3+FsD3XKaeptA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, "node_modules/@nomiclabs/hardhat-ethers": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.0.5.tgz", - "integrity": "sha512-A2gZAGB6kUvLx+kzM92HKuUF33F1FSe90L0TmkXkT2Hh0OKRpvWZURUSU2nghD2yC4DzfEZ3DftfeHGvZ2JTUw==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.2.1.tgz", + "integrity": "sha512-RHWYwnxryWR8hzRmU4Jm/q4gzvXpetUOJ4OPlwH2YARcDB+j79+yAYCwO0lN1SUOb4++oOTJEe6AWLEc42LIvg==", "dev": true, "peerDependencies": { "ethers": "^5.0.0", @@ -1442,27 +1851,101 @@ } }, "node_modules/@nomiclabs/hardhat-etherscan": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-etherscan/-/hardhat-etherscan-3.0.3.tgz", - "integrity": "sha512-OfNtUKc/ZwzivmZnnpwWREfaYncXteKHskn3yDnz+fPBZ6wfM4GR+d5RwjREzYFWE+o5iR9ruXhWw/8fejWM9g==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-etherscan/-/hardhat-etherscan-3.1.2.tgz", + "integrity": "sha512-IEikeOVq0C/7CY6aD74d8L4BpGoc/FNiN6ldiPVg0QIFIUSu4FSGA1dmtJZJKk1tjpwgrfTLQNWnigtEaN9REg==", "dev": true, "dependencies": { "@ethersproject/abi": "^5.1.2", "@ethersproject/address": "^5.0.2", "cbor": "^5.0.2", + "chalk": "^2.4.2", "debug": "^4.1.1", "fs-extra": "^7.0.1", + "lodash": "^4.17.11", "semver": "^6.3.0", - "undici": "^4.14.1" + "table": "^6.8.0", + "undici": "^5.4.0" }, "peerDependencies": { "hardhat": "^2.0.4" } }, + "node_modules/@nomiclabs/hardhat-etherscan/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@nomiclabs/hardhat-etherscan/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@nomiclabs/hardhat-etherscan/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@nomiclabs/hardhat-etherscan/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@nomiclabs/hardhat-etherscan/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@nomiclabs/hardhat-etherscan/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@nomiclabs/hardhat-etherscan/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/@nomiclabs/hardhat-solhint": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-solhint/-/hardhat-solhint-2.0.0.tgz", - "integrity": "sha512-fn+izC923/oCnfbGyp7YwOXZYtwcrDIrTLlFVeEgeSAHe2ZnipRRtNCxEClZuzCptHmTzIIayBmAaijsTmEAoA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-solhint/-/hardhat-solhint-2.0.1.tgz", + "integrity": "sha512-SrTLufY21t78KLpJL5fS6gHIsCwVv0yWsHp1aQOPL1qwRWpe0Mnh5wb2YzBHd3Dbr/KzUYys+j2ui0PsSVU9pg==", "dev": true, "dependencies": { "solhint": "^2.0.0" @@ -1500,13 +1983,14 @@ "dev": true }, "node_modules/@openzeppelin/hardhat-upgrades": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/@openzeppelin/hardhat-upgrades/-/hardhat-upgrades-1.17.0.tgz", - "integrity": "sha512-GNxR3/3fCKQsFpBi/r+5ib6U81UM9KCypmcOQxuCkVp9JKJ80/3hQdg1R+AQku/dlnhutPsfkCokH2LZFc5mNA==", + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/@openzeppelin/hardhat-upgrades/-/hardhat-upgrades-1.21.0.tgz", + "integrity": "sha512-Kwl7IN0Hlhj4HluMTTl0DrtU90OI/Q6rG3sAyd2pv3fababe9EuZqs9DydOlkWM45JwTzC+eBzX3TgHsqI13eA==", "dev": true, "dependencies": { - "@openzeppelin/upgrades-core": "^1.14.1", + "@openzeppelin/upgrades-core": "^1.20.0", "chalk": "^4.1.0", + "debug": "^4.1.1", "proper-lockfile": "^4.1.1" }, "bin": { @@ -1514,31 +1998,31 @@ }, "peerDependencies": { "@nomiclabs/hardhat-ethers": "^2.0.0", + "@nomiclabs/hardhat-etherscan": "^3.1.0", + "ethers": "^5.0.5", "hardhat": "^2.0.2" + }, + "peerDependenciesMeta": { + "@nomiclabs/harhdat-etherscan": { + "optional": true + } } }, "node_modules/@openzeppelin/upgrades-core": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@openzeppelin/upgrades-core/-/upgrades-core-1.14.1.tgz", - "integrity": "sha512-iKlh1mbUxyfdjdEiUFyhMkqirfas+DMUu7ED53nZbHEyhcYsm+5Fl/g0Bv6bZA+a7k8kO8+22DNEKsqaDUBc2Q==", + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/@openzeppelin/upgrades-core/-/upgrades-core-1.20.4.tgz", + "integrity": "sha512-Y4/+BPIbnopfE6ZhPOE2CD0V5fnvDxKKm7+kryx5+WrcRCTW3B5DjbXL9xyyoviG8Rn5EXUh5Fk1GLbiYDfu0g==", "dev": true, "dependencies": { - "bn.js": "^5.1.2", "cbor": "^8.0.0", "chalk": "^4.1.0", - "compare-versions": "^4.0.0", + "compare-versions": "^5.0.0", "debug": "^4.1.1", "ethereumjs-util": "^7.0.3", "proper-lockfile": "^4.1.1", "solidity-ast": "^0.4.15" } }, - "node_modules/@openzeppelin/upgrades-core/node_modules/bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", - "dev": true - }, "node_modules/@openzeppelin/upgrades-core/node_modules/cbor": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/cbor/-/cbor-8.1.0.tgz", @@ -1641,6 +2125,51 @@ "ms": "^2.1.1" } }, + "node_modules/@scure/base": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz", + "integrity": "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, + "node_modules/@scure/bip32": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.0.tgz", + "integrity": "sha512-ftTW3kKX54YXLCxH6BB7oEEoJfoE2pIgw7MINKAs5PsS6nqKPuKk1haTF/EuHmYqG330t5GSrdmtRuHaY1a62Q==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "@noble/hashes": "~1.1.1", + "@noble/secp256k1": "~1.6.0", + "@scure/base": "~1.1.0" + } + }, + "node_modules/@scure/bip39": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.0.tgz", + "integrity": "sha512-pwrPOS16VeTKg98dYXQyIjJEcWfz7/1YJIwxUEPFfQPtc86Ym/1sVgQ2RLoD43AazMk2l/unK4ITySSpW2+82w==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "@noble/hashes": "~1.1.1", + "@scure/base": "~1.1.0" + } + }, "node_modules/@sentry/core": { "version": "5.30.0", "resolved": "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz", @@ -1743,183 +2272,37 @@ "node": ">=6" } }, - "node_modules/@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sinonjs/commons": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", - "dev": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-7.0.5.tgz", - "integrity": "sha512-fUt6b15bjV/VW93UP5opNXJxdwZSbK1EdiwnhN7XrQrcpaOhMJpZ/CjwFpM3THpxwA+YviBUJKSuEqKlCK5alw==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^1.7.0" - } - }, "node_modules/@solidity-parser/parser": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.14.1.tgz", - "integrity": "sha512-eLjj2L6AuQjBB6s/ibwCAc0DwrR5Ge+ys+wgWo+bviU7fV2nTMQhU63CGaDKXg9iTmMxwhkyoggdIR7ZGRfMgw==", + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.14.5.tgz", + "integrity": "sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg==", "dev": true, "dependencies": { "antlr4ts": "^0.5.0-alpha.4" } }, - "node_modules/@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "dev": true, - "dependencies": { - "defer-to-connect": "^1.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@truffle/error": { - "version": "0.0.14", - "resolved": "https://registry.npmjs.org/@truffle/error/-/error-0.0.14.tgz", - "integrity": "sha512-utJx+SZYoMqk8wldQG4gCVKhV8GwMJbWY7sLXFT/D8wWZTnE2peX7URFJh/cxkjTRCO328z1s2qewkhyVsu2HA==", - "dev": true - }, - "node_modules/@truffle/interface-adapter": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/@truffle/interface-adapter/-/interface-adapter-0.4.23.tgz", - "integrity": "sha512-mfpwY25Apx36WHHNJMNHWyDQVFZoZYNQ43rOwr/n+5gAMxke7+D7+IR9UW4kuO/Jp0+2848UxMdRV+oqm017kQ==", - "dev": true, - "dependencies": { - "bn.js": "^5.1.3", - "ethers": "^4.0.32", - "web3": "1.3.5" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", - "dev": true - }, - "node_modules/@truffle/interface-adapter/node_modules/elliptic": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", - "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", - "dev": true, - "dependencies": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/@truffle/interface-adapter/node_modules/ethers": { - "version": "4.0.48", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-4.0.48.tgz", - "integrity": "sha512-sZD5K8H28dOrcidzx9f8KYh8083n5BexIO3+SbE4jK83L85FxtpXZBCQdXb8gkg+7sBqomcLhhkU7UHL+F7I2g==", - "dev": true, - "dependencies": { - "aes-js": "3.0.0", - "bn.js": "^4.4.0", - "elliptic": "6.5.3", - "hash.js": "1.1.3", - "js-sha3": "0.5.7", - "scrypt-js": "2.0.4", - "setimmediate": "1.0.4", - "uuid": "2.0.1", - "xmlhttprequest": "1.8.0" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/ethers/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/@truffle/interface-adapter/node_modules/hash.js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", - "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/scrypt-js": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.4.tgz", - "integrity": "sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw==", - "dev": true - }, - "node_modules/@truffle/interface-adapter/node_modules/setimmediate": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.4.tgz", - "integrity": "sha1-IOgd5iLUoCWIzgyNqJc8vPHTE48=", - "dev": true - }, - "node_modules/@truffle/interface-adapter/node_modules/uuid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.1.tgz", - "integrity": "sha1-wqMN7bPlNdcsz4LjQ5QaULqFM6w=", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true - }, - "node_modules/@truffle/provider": { - "version": "0.2.30", - "resolved": "https://registry.npmjs.org/@truffle/provider/-/provider-0.2.30.tgz", - "integrity": "sha512-5ScTbWsrm7zmQjw020T41U30/kYA1LppXAtaeucUGN2jvPrSwlh0aTL18makbqftTx1NRuYKw7C8wO4jCKQSUQ==", - "dev": true, - "dependencies": { - "@truffle/error": "^0.0.14", - "@truffle/interface-adapter": "^0.4.23", - "web3": "1.3.5" - } - }, "node_modules/@tsconfig/node10": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", - "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", "dev": true }, "node_modules/@tsconfig/node12": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", - "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", "dev": true }, "node_modules/@tsconfig/node14": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", - "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", "dev": true }, "node_modules/@tsconfig/node16": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", - "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", "dev": true }, "node_modules/@typechain/ethers-v5": { @@ -1935,25 +2318,25 @@ "typechain": "^3.0.0" } }, - "node_modules/@types/abstract-leveldown": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/abstract-leveldown/-/abstract-leveldown-7.2.0.tgz", - "integrity": "sha512-q5veSX6zjUy/DlDhR4Y4cU0k2Ar+DT2LUraP00T19WLmTO6Se1djepCCaqU6nQrwcJ5Hyo/CWqxTzrrFg8eqbQ==", + "node_modules/@types/async-eventemitter": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@types/async-eventemitter/-/async-eventemitter-0.2.1.tgz", + "integrity": "sha512-M2P4Ng26QbAeITiH7w1d7OxtldgfAe0wobpyJzVK/XOb0cUGKU2R4pfAhqcJBXAe2ife5ZOhSv4wk7p+ffURtg==", "dev": true }, "node_modules/@types/bn.js": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.0.tgz", - "integrity": "sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz", + "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@types/chai": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.0.tgz", - "integrity": "sha512-/ceqdqeRraGolFTcfoXNiqjyQhZzbINDngeoAq9GoHa8PPK1yNzTaxWjA6BFWp5Ua9JpXEMSS4s5i9tS0hOJtw==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.4.tgz", + "integrity": "sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==", "dev": true }, "node_modules/@types/chai-as-promised": { @@ -1966,9 +2349,9 @@ } }, "node_modules/@types/cli-table": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@types/cli-table/-/cli-table-0.3.0.tgz", - "integrity": "sha512-QnZUISJJXyhyD6L1e5QwXDV/A5i2W1/gl6D6YMc8u0ncPepbv/B4w3S+izVvtAg60m6h+JP09+Y/0zF2mojlFQ==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@types/cli-table/-/cli-table-0.3.1.tgz", + "integrity": "sha512-m3+6WWfSSl6zqoXy8uQQifbgqV7Gt6fsyWnHLgUWVtJQk75+OfUB+edSZ52YDj7leSiZtX7w1/E4w2x/Hb0orA==", "dev": true }, "node_modules/@types/concat-stream": { @@ -1983,49 +2366,38 @@ "node_modules/@types/form-data": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-0.0.33.tgz", - "integrity": "sha1-yayFsqX9GENbjIXZ7LUObWyJP/g=", + "integrity": "sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@types/glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", "dev": true, "dependencies": { "@types/minimatch": "*", "@types/node": "*" } }, - "node_modules/@types/level-errors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/level-errors/-/level-errors-3.0.0.tgz", - "integrity": "sha512-/lMtoq/Cf/2DVOm6zE6ORyOM+3ZVm/BvzEZVxUhf6bgh8ZHglXlBqxbxSlJeVp8FCbD3IVvk/VbsaNmDjrQvqQ==", + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", "dev": true }, - "node_modules/@types/levelup": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@types/levelup/-/levelup-4.3.3.tgz", - "integrity": "sha512-K+OTIjJcZHVlZQN1HmU64VtrC0jC3dXWQozuEIR9zVvltIk90zaGPM2AgT+fIkChpzHhFE3YnvFLCbLtzAmexA==", - "dev": true, - "dependencies": { - "@types/abstract-leveldown": "*", - "@types/level-errors": "*", - "@types/node": "*" - } - }, "node_modules/@types/lru-cache": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.0.tgz", - "integrity": "sha512-RaE0B+14ToE4l6UqdarKPnXwVDuigfFv+5j9Dze/Nqr23yyuqdNvzcZi3xB+3Agvi5R4EOgAksfv3lXX4vBt9w==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==", "dev": true }, "node_modules/@types/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", "dev": true }, "node_modules/@types/mkdirp": { @@ -2038,41 +2410,27 @@ } }, "node_modules/@types/mocha": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.0.tgz", - "integrity": "sha512-QCWHkbMv4Y5U9oW10Uxbr45qMMSzl4OzijsozynUAgx3kEHUdXB00udx2dWDQ7f2TU2a2uuiFaRZjCe3unPpeg==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.1.tgz", + "integrity": "sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==", "dev": true }, "node_modules/@types/node": { - "version": "17.0.23", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.23.tgz", - "integrity": "sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw==", + "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", "dev": true }, "node_modules/@types/node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-oMqjURCaxoSIsHSr1E47QHzbmzNR5rK8McHuNb11BOM9cHcIK3Avy0s/b2JlXHoQGTYS3NsvWzV1M0iK7l0wbA==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.2.tgz", + "integrity": "sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==", "dev": true, "dependencies": { "@types/node": "*", "form-data": "^3.0.0" } }, - "node_modules/@types/node-fetch/node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/@types/pbkdf2": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz", @@ -2083,9 +2441,9 @@ } }, "node_modules/@types/prettier": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.4.tgz", - "integrity": "sha512-ReVR2rLTV1kvtlWFyuot+d1pkpG2Fw/XKE3PDAdj57rbM97ttSp9JZ2UsP+2EHTylra9cUf6JA7tGwW1INzUrA==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow==", "dev": true }, "node_modules/@types/qs": { @@ -2104,37 +2462,49 @@ } }, "node_modules/@types/secp256k1": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.2.tgz", - "integrity": "sha512-QMg+9v0bbNJ2peLuHRWxzmy0HRJIG6gFZNhaRSp7S3ggSbCCxiqQB2/ybvhXyhHOCequpNkrx7OavNhrWOsW0A==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.3.tgz", + "integrity": "sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==", "dev": true, "dependencies": { "@types/node": "*" } }, + "node_modules/@types/semver": { + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", + "dev": true + }, "node_modules/@types/sinon": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.0.tgz", - "integrity": "sha512-jDZ55oCKxqlDmoTBBbBBEx+N8ZraUVhggMZ9T5t+6/Dh8/4NiOjSUfpLrPiEwxQDlAe3wpAkoXhWvE6LibtsMQ==", + "version": "10.0.13", + "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.13.tgz", + "integrity": "sha512-UVjDqJblVNQYvVNUsj0PuYYw0ELRmgt1Nt5Vk0pT5f16ROGfcKJY8o1HVuMOJOpD727RrGB9EGvoaTQE5tgxZQ==", "dev": true, "dependencies": { - "@sinonjs/fake-timers": "^7.0.4" + "@types/sinonjs__fake-timers": "*" } }, "node_modules/@types/sinon-chai": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-3.2.5.tgz", - "integrity": "sha512-bKQqIpew7mmIGNRlxW6Zli/QVyc3zikpGzCa797B/tRnD9OtHvZ/ts8sYXV+Ilj9u3QRaUEM8xrjgd1gwm1BpQ==", + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-3.2.9.tgz", + "integrity": "sha512-/19t63pFYU0ikrdbXKBWj9PCdnKyTd0Qkz0X91Ta081cYsq90OxYdcWwK/dwEoDa6dtXgj2HJfmzgq+QZTHdmQ==", "dev": true, "dependencies": { "@types/chai": "*", "@types/sinon": "*" } }, + "node_modules/@types/sinonjs__fake-timers": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.2.tgz", + "integrity": "sha512-9GcLXF0/v3t80caGs5p2rRfkB+a8VBGLJZVih6CNFkx8IZ994wiKKLSRs9nuFwk1HevWs/1mnUmkApGrSGsShA==", + "dev": true + }, "node_modules/@types/underscore": { - "version": "1.11.2", - "resolved": "https://registry.npmjs.org/@types/underscore/-/underscore-1.11.2.tgz", - "integrity": "sha512-Ls2ylbo7++ITrWk2Yc3G/jijwSq5V3GT0tlgVXEl2kKYXY3ImrtmTCoE2uyTWFRI5owMBriloZFWbE1SXOsE7w==", + "version": "1.11.4", + "resolved": "https://registry.npmjs.org/@types/underscore/-/underscore-1.11.4.tgz", + "integrity": "sha512-uO4CD2ELOjw8tasUrAhvnn2W4A0ZECOvMjCivJr4gA9pGgjv+qxKWY9GLTMVEK8ej85BxQOocUyE7hImmSQYcg==", "dev": true }, "node_modules/@types/web3": { @@ -2147,12 +2517,293 @@ "@types/underscore": "*" } }, - "node_modules/@ungap/promise-all-settled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", - "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.42.1.tgz", + "integrity": "sha512-LyR6x784JCiJ1j6sH5Y0K6cdExqCCm8DJUTcwG5ThNXJj/G8o5E56u5EdG4SLy+bZAwZBswC+GYn3eGdttBVCg==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.42.1", + "@typescript-eslint/type-utils": "5.42.1", + "@typescript-eslint/utils": "5.42.1", + "debug": "^4.3.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, + "node_modules/@typescript-eslint/parser": { + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.42.1.tgz", + "integrity": "sha512-kAV+NiNBWVQDY9gDJDToTE/NO8BHi4f6b7zTsVAJoTkmB/zlfOpiEVBzHOKtlgTndCKe8vj9F/PuolemZSh50Q==", + "dev": true, + "peer": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.42.1", + "@typescript-eslint/types": "5.42.1", + "@typescript-eslint/typescript-estree": "5.42.1", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.42.1.tgz", + "integrity": "sha512-QAZY/CBP1Emx4rzxurgqj3rUinfsh/6mvuKbLNMfJMMKYLRBfweus8brgXF8f64ABkIZ3zdj2/rYYtF8eiuksQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.42.1", + "@typescript-eslint/visitor-keys": "5.42.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.42.1.tgz", + "integrity": "sha512-WWiMChneex5w4xPIX56SSnQQo0tEOy5ZV2dqmj8Z371LJ0E+aymWD25JQ/l4FOuuX+Q49A7pzh/CGIQflxMVXg==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.42.1", + "@typescript-eslint/utils": "5.42.1", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.42.1.tgz", + "integrity": "sha512-Qrco9dsFF5lhalz+lLFtxs3ui1/YfC6NdXu+RAGBa8uSfn01cjO7ssCsjIsUs484vny9Xm699FSKwpkCcqwWwA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.42.1.tgz", + "integrity": "sha512-qElc0bDOuO0B8wDhhW4mYVgi/LZL+igPwXtV87n69/kYC/7NG3MES0jHxJNCr4EP7kY1XVsRy8C/u3DYeTKQmw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.42.1", + "@typescript-eslint/visitor-keys": "5.42.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.42.1.tgz", + "integrity": "sha512-Gxvf12xSp3iYZd/fLqiQRD4uKZjDNR01bQ+j8zvhPjpsZ4HmvEFL/tC4amGNyxN9Rq+iqvpHLhlqx6KTxz9ZyQ==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.42.1", + "@typescript-eslint/types": "5.42.1", + "@typescript-eslint/typescript-estree": "5.42.1", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.42.1.tgz", + "integrity": "sha512-LOQtSF4z+hejmpUvitPlc4hA7ERGoj2BVkesOcG91HCn8edLGUXbTrErmutmPbl8Bo9HjAvOO/zBKQHExXNA2A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.42.1", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, "node_modules/@yarnpkg/lockfile": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", @@ -2162,7 +2813,7 @@ "node_modules/abbrev": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", - "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=", + "integrity": "sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==", "dev": true }, "node_modules/abort-controller": { @@ -2177,39 +2828,28 @@ "node": ">=6.5" } }, - "node_modules/abstract-leveldown": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.3.0.tgz", - "integrity": "sha512-TU5nlYgta8YrBMNpc9FwQzRbiXsj49gsALsXadbGHt9CROPzX5fB0rWDR5mtdpOOKa5XqRFpbj1QroPAoPzVjQ==", - "dev": true, - "dependencies": { - "buffer": "^5.5.0", - "immediate": "^3.2.3", - "level-concat-iterator": "~2.0.0", - "level-supports": "~1.0.0", - "xtend": "~4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "node_modules/abstract-level": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/abstract-level/-/abstract-level-1.0.3.tgz", + "integrity": "sha512-t6jv+xHy+VYwc4xqZMn2Pa9DjcdzvzZmQGRjTFc8spIbRGHgBrEKbPq+rYXc7CCo0lxgYvSgKVg9qZAhpVQSjA==", "dev": true, "dependencies": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" + "buffer": "^6.0.3", + "catering": "^2.1.0", + "is-buffer": "^2.0.5", + "level-supports": "^4.0.0", + "level-transcoder": "^1.0.1", + "module-error": "^1.0.1", + "queue-microtask": "^1.2.3" }, "engines": { - "node": ">= 0.6" + "node": ">=12" } }, "node_modules/acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -2219,9 +2859,9 @@ } }, "node_modules/acorn-jsx": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", - "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" @@ -2237,12 +2877,12 @@ } }, "node_modules/address": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", - "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.1.tgz", + "integrity": "sha512-B+6bi5D34+fDYENiH5qOlA0cV2rAGKuWZ9LeyUUehbXy8e0VS9e498yO0Jeeh+iM+6KbfudHTFjXw2MmJD4QRA==", "dev": true, "engines": { - "node": ">= 0.12.0" + "node": ">= 10.0.0" } }, "node_modules/adm-zip": { @@ -2257,7 +2897,7 @@ "node_modules/aes-js": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", - "integrity": "sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0=", + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", "dev": true }, "node_modules/agent-base": { @@ -2285,15 +2925,6 @@ "node": ">=8" } }, - "node_modules/aggregate-error/node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -2313,7 +2944,7 @@ "node_modules/amdefine": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==", "dev": true, "optional": true, "engines": { @@ -2321,9 +2952,9 @@ } }, "node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true, "engines": { "node": ">=6" @@ -2344,13 +2975,25 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/ansi-styles": { @@ -2400,13 +3043,10 @@ "dev": true }, "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, "node_modules/array-back": { "version": "2.0.0", @@ -2420,27 +3060,15 @@ "node": ">=4" } }, - "node_modules/array-filter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", - "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=", - "dev": true - }, "node_modules/array-find-index": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "integrity": "sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==", "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", - "dev": true - }, "node_modules/array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", @@ -2453,16 +3081,35 @@ "node_modules/array-uniq": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", "dev": true, "engines": { "node": ">=0.10.0" } }, + "node_modules/array.prototype.reduce": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz", + "integrity": "sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -2471,34 +3118,22 @@ "node_modules/asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", "dev": true }, "node_modules/asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", "dev": true, "dependencies": { "safer-buffer": "~2.1.0" } }, - "node_modules/asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "dev": true, - "dependencies": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - } - }, "node_modules/assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", "dev": true, "engines": { "node": ">=0.8" @@ -2514,18 +3149,18 @@ } }, "node_modules/astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "dependencies": { "lodash": "^4.17.14" @@ -2540,37 +3175,16 @@ "async": "^2.4.0" } }, - "node_modules/async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "dev": true - }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true }, - "node_modules/available-typed-arrays": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz", - "integrity": "sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ==", - "dev": true, - "dependencies": { - "array-filter": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", "dev": true, "engines": { "node": "*" @@ -2589,9 +3203,9 @@ "dev": true }, "node_modules/base-x": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.8.tgz", - "integrity": "sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", + "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", "dev": true, "dependencies": { "safe-buffer": "^5.0.1" @@ -2620,22 +3234,49 @@ "node_modules/bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", "dev": true, "dependencies": { "tweetnacl": "^0.14.3" } }, + "node_modules/bcrypt-pbkdf/node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true + }, "node_modules/bech32": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", "dev": true }, + "node_modules/bigint-crypto-utils": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/bigint-crypto-utils/-/bigint-crypto-utils-3.1.7.tgz", + "integrity": "sha512-zpCQpIE2Oy5WIQpjC9iYZf8Uh9QqoS51ZCooAcNvzv1AQ3VWdT52D0ksr1+/faeK8HVIej1bxXcP75YcqH3KPA==", + "dev": true, + "dependencies": { + "bigint-mod-arith": "^3.1.0" + }, + "engines": { + "node": ">=10.4.0" + } + }, + "node_modules/bigint-mod-arith": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bigint-mod-arith/-/bigint-mod-arith-3.1.2.tgz", + "integrity": "sha512-nx8J8bBeiRR+NlsROFH9jHswW5HO8mgfOSqW0AmjicMMvaONDa8AO+5ViKDUUNytBPWiwfvZP4/Bj4Y3lUfvgQ==", + "dev": true, + "engines": { + "node": ">=10.4.0" + } + }, "node_modules/bignumber.js": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.1.tgz", - "integrity": "sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.0.tgz", + "integrity": "sha512-4LwHK4nfDOraBCtst+wOWIHbu1vhvAPJK8g8nROd4iuc3PSEjWif/qwbkh8jwCJz6yDBvtU4KPynETgrfh7y3A==", "dev": true, "engines": { "node": "*" @@ -2650,28 +3291,10 @@ "node": ">=8" } }, - "node_modules/bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, - "dependencies": { - "file-uri-to-path": "1.0.0" - } - }, - "node_modules/bip66": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/bip66/-/bip66-1.1.5.tgz", - "integrity": "sha1-AfqHSHhcpwlV1QESF9GzE5lpyiI=", - "dev": true, - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, "node_modules/blakejs": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.1.0.tgz", - "integrity": "sha1-ad+S75U6qIylGjLfarHFShVfx6U=", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", + "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==", "dev": true }, "node_modules/bluebird": { @@ -2681,93 +3304,11 @@ "dev": true }, "node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", - "dev": true, - "dependencies": { - "bytes": "3.1.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", - "dev": true, - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/body-parser/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", "dev": true }, - "node_modules/body-parser/node_modules/qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/body-parser/node_modules/raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", - "dev": true, - "dependencies": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -2793,9 +3334,21 @@ "node_modules/brorand": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", "dev": true }, + "node_modules/browser-level": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browser-level/-/browser-level-1.0.1.tgz", + "integrity": "sha512-XECYKJ+Dbzw0lbydyQuJzwNXtOpbMSq737qxJN11sIRTErOMShvDpbzTlgju7orJKvx4epULolZAuJGLzCmWRQ==", + "dev": true, + "dependencies": { + "abstract-level": "^1.0.2", + "catering": "^2.1.1", + "module-error": "^1.0.2", + "run-parallel-limit": "^1.1.0" + } + }, "node_modules/browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", @@ -2816,72 +3369,10 @@ "safe-buffer": "^5.0.1" } }, - "node_modules/browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "dependencies": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "node_modules/browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "dev": true, - "dependencies": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "node_modules/browserify-rsa/node_modules/bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", - "dev": true - }, - "node_modules/browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "dev": true, - "dependencies": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - } - }, - "node_modules/browserify-sign/node_modules/bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", - "dev": true - }, "node_modules/bs58": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", "dev": true, "dependencies": { "base-x": "^3.0.2" @@ -2899,9 +3390,9 @@ } }, "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "dev": true, "funding": [ { @@ -2919,86 +3410,40 @@ ], "dependencies": { "base64-js": "^1.3.1", - "ieee754": "^1.1.13" + "ieee754": "^1.2.1" } }, "node_modules/buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "node_modules/buffer-to-arraybuffer": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz", - "integrity": "sha1-YGSkD6dutDxyOrqe+PbhIW0QURo=", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, "node_modules/buffer-xor": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", "dev": true }, - "node_modules/bufferutil": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.3.tgz", - "integrity": "sha512-yEYTwGndELGvfXsImMBLop58eaGW+YdONi1fNjTINSY98tmMmFijBG6WXgdkfuLNt4imzQNtIE+eBp1PVpMCSw==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "node-gyp-build": "^4.2.0" - } - }, - "node_modules/bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "dev": true, - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cacheable-request/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", "dev": true, "dependencies": { - "pump": "^3.0.0" + "streamsearch": "^1.1.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=10.16.0" } }, - "node_modules/cacheable-request/node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true, "engines": { - "node": ">=8" + "node": ">= 0.8" } }, "node_modules/call-bind": { @@ -3017,7 +3462,7 @@ "node_modules/caller-callsite": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==", "dev": true, "dependencies": { "callsites": "^2.0.0" @@ -3026,10 +3471,19 @@ "node": ">=4" } }, + "node_modules/caller-callsite/node_modules/callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/caller-path": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==", "dev": true, "dependencies": { "caller-callsite": "^2.0.0" @@ -3039,18 +3493,18 @@ } }, "node_modules/callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/camelcase": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "integrity": "sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==", "dev": true, "engines": { "node": ">=4" @@ -3059,7 +3513,7 @@ "node_modules/camelcase-keys": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", - "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", + "integrity": "sha512-Ej37YKYbFUI8QiYlvj9YHb6/Z60dZyPJW0Cs8sFilMbd2lP0bw3ylAq9yJkK4lcTA2dID5fG8LjmJYbO7kWb7Q==", "dev": true, "dependencies": { "camelcase": "^4.1.0", @@ -3073,9 +3527,18 @@ "node_modules/caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", "dev": true }, + "node_modules/catering": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/catering/-/catering-2.1.1.tgz", + "integrity": "sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/cbor": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/cbor/-/cbor-5.2.0.tgz", @@ -3090,14 +3553,14 @@ } }, "node_modules/chai": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz", - "integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", + "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", "dev": true, "dependencies": { "assertion-error": "^1.1.0", "check-error": "^1.0.2", - "deep-eql": "^3.0.1", + "deep-eql": "^4.1.2", "get-func-name": "^2.0.0", "loupe": "^2.3.1", "pathval": "^1.1.1", @@ -3120,9 +3583,9 @@ } }, "node_modules/chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -3144,7 +3607,7 @@ "node_modules/charenc": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", - "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", "dev": true, "engines": { "node": "*" @@ -3153,73 +3616,56 @@ "node_modules/check-error": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", "dev": true, "engines": { "node": "*" } }, "node_modules/chokidar": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", - "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], "dependencies": { - "anymatch": "~3.1.1", + "anymatch": "~3.1.2", "braces": "~3.0.2", - "glob-parent": "~5.1.0", + "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", - "readdirp": "~3.5.0" + "readdirp": "~3.6.0" }, "engines": { "node": ">= 8.10.0" }, "optionalDependencies": { - "fsevents": "~2.3.1" + "fsevents": "~2.3.2" } }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, - "node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "node_modules/cids": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/cids/-/cids-0.7.5.tgz", - "integrity": "sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA==", - "deprecated": "This module has been superseded by the multiformats module", + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "dependencies": { - "buffer": "^5.5.0", - "class-is": "^1.1.0", - "multibase": "~0.6.0", - "multicodec": "^1.0.0", - "multihashes": "~0.4.15" + "is-glob": "^4.0.1" }, "engines": { - "node": ">=4.0.0", - "npm": ">=3.0.0" + "node": ">= 6" } }, - "node_modules/cids/node_modules/multicodec": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-1.0.4.tgz", - "integrity": "sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg==", - "deprecated": "This module has been superseded by the multiformats module", - "dev": true, - "dependencies": { - "buffer": "^5.6.0", - "varint": "^5.0.0" - } + "node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true }, "node_modules/cipher-base": { "version": "1.0.4", @@ -3231,11 +3677,22 @@ "safe-buffer": "^5.0.1" } }, - "node_modules/class-is": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/class-is/-/class-is-1.1.0.tgz", - "integrity": "sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==", - "dev": true + "node_modules/classic-level": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/classic-level/-/classic-level-1.2.0.tgz", + "integrity": "sha512-qw5B31ANxSluWz9xBzklRWTUAJ1SXIdaVKTVS7HcTGKOAmExx65Wo5BUICW+YGORe2FOUaDghoI9ZDxj82QcFg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "abstract-level": "^1.0.2", + "catering": "^2.1.0", + "module-error": "^1.0.1", + "napi-macros": "~2.0.0", + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=12" + } }, "node_modules/clean-stack": { "version": "2.2.0", @@ -3249,7 +3706,7 @@ "node_modules/cli-cursor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", "dev": true, "dependencies": { "restore-cursor": "^2.0.0" @@ -3270,15 +3727,6 @@ "node": ">= 0.2.0" } }, - "node_modules/cli-table/node_modules/colors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", - "dev": true, - "engines": { - "node": ">=0.1.90" - } - }, "node_modules/cli-table3": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz", @@ -3295,6 +3743,16 @@ "colors": "^1.1.2" } }, + "node_modules/cli-table3/node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, "node_modules/cli-width": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", @@ -3312,21 +3770,6 @@ "wrap-ansi": "^7.0.0" } }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, "node_modules/cliui/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -3350,31 +3793,10 @@ "node": ">=8" } }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "dev": true, - "dependencies": { - "mimic-response": "^1.0.0" - } - }, "node_modules/code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -3399,9 +3821,9 @@ "dev": true }, "node_modules/colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", "dev": true, "engines": { "node": ">=0.1.90" @@ -3440,27 +3862,27 @@ } }, "node_modules/commander": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", - "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, "node_modules/commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", "dev": true }, "node_modules/compare-versions": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-4.1.3.tgz", - "integrity": "sha512-WQfnbDcrYnGr55UwbxKiQKASnTtNnaAWVi8jZyy8NTpVAXWACSne8lMD1iaIo9AiU6mnuLvSVshCzewVuWxHUg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-5.0.1.tgz", + "integrity": "sha512-v8Au3l0b+Nwkp4G142JcgJFh1/TUhdxut7wzD1Nq1dyp5oa3tXaqb03EXOAB6jS4gMlalkjAUPZBMiAfKUixHQ==", "dev": true }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, "node_modules/concat-stream": { @@ -3508,120 +3930,98 @@ "safe-buffer": "~5.1.0" } }, - "node_modules/content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", "dev": true, - "dependencies": { - "safe-buffer": "5.1.2" - }, "engines": { "node": ">= 0.6" } }, - "node_modules/content-disposition/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", "dev": true }, - "node_modules/content-hash": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/content-hash/-/content-hash-2.5.2.tgz", - "integrity": "sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw==", + "node_modules/cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", "dev": true, "dependencies": { - "cids": "^0.7.1", - "multicodec": "^0.5.5", - "multihashes": "^0.4.15" - } - }, - "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true, + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, "engines": { - "node": ">= 0.6" + "node": ">=4" } }, - "node_modules/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", + "node_modules/cosmiconfig/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, - "engines": { - "node": ">= 0.6" + "dependencies": { + "sprintf-js": "~1.0.2" } }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", - "dev": true - }, - "node_modules/cookiejar": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", - "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==", - "dev": true - }, - "node_modules/core-js-pure": { - "version": "3.21.1", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.21.1.tgz", - "integrity": "sha512-12VZfFIu+wyVbBebyHmRTuEE/tZrB4tJToWcwAMcsp3h4+sHR+fMJWbKpYiCRWlhFBq+KNyO8rIV9rTkeVmznQ==", - "deprecated": "core-js-pure@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js-pure.", + "node_modules/cosmiconfig/node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" } }, - "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "node_modules/cosmiconfig/node_modules/import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", "dev": true, "dependencies": { - "object-assign": "^4", - "vary": "^1" + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">=4" } }, - "node_modules/cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "node_modules/cosmiconfig/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, "dependencies": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/cosmiconfig/node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "dev": true, "engines": { "node": ">=4" } }, "node_modules/crc-32": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.1.tgz", - "integrity": "sha512-Dn/xm/1vFFgs3nfrpEVScHoIslO9NZRITWGz/1E/St6u4xw99vfZzVkW0OSnzx2h9egej9xwMCEut6sqwokM/w==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", "dev": true, - "dependencies": { - "exit-on-epipe": "~1.0.1", - "printj": "~1.3.1" - }, "bin": { "crc32": "bin/crc32.njs" }, @@ -3629,16 +4029,6 @@ "node": ">=0.8" } }, - "node_modules/create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - } - }, "node_modules/create-hash": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", @@ -3673,57 +4063,24 @@ "dev": true }, "node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=4.8" - } - }, - "node_modules/cross-spawn/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" + "node": ">= 8" } }, "node_modules/crypt": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", - "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", "dev": true, - "dependencies": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - }, "engines": { "node": "*" } @@ -3731,7 +4088,7 @@ "node_modules/currently-unhandled": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "integrity": "sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==", "dev": true, "dependencies": { "array-find-index": "^1.0.1" @@ -3740,20 +4097,10 @@ "node": ">=0.10.0" } }, - "node_modules/d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dev": true, - "dependencies": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, "node_modules/dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", "dev": true, "dependencies": { "assert-plus": "^1.0.0" @@ -3765,7 +4112,7 @@ "node_modules/death": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/death/-/death-1.1.0.tgz", - "integrity": "sha1-AaqcQB7dknUFFEcLgmY5DGbGcxg=", + "integrity": "sha512-vsV6S4KVHvTGxbEcij7hkWRv0It+sGGWVOM67dQde/o5Xjnr+KmLjxWJii2uEObIrt1CcM9w0Yaovx+iOlIL+w==", "dev": true }, "node_modules/debug": { @@ -3788,16 +4135,16 @@ "node_modules/decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/decamelize-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", - "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", "dev": true, "dependencies": { "decamelize": "^1.1.0", @@ -3805,169 +4152,86 @@ }, "engines": { "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/decamelize-keys/node_modules/map-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "dev": true, - "dependencies": { - "mimic-response": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/deep-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.2.tgz", + "integrity": "sha512-gT18+YW4CcW/DBNTwAmqTtkJh7f9qqScu2qFVlx7kCoeY9tlBu9cUcr7+I+Z/noG8INehS3xQgLpTtd/QUTn4w==", "dev": true, "dependencies": { "type-detect": "^4.0.0" }, "engines": { - "node": ">=0.12" + "node": ">=6" } }, "node_modules/deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "node_modules/defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, - "node_modules/deferred-leveldown": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-5.3.0.tgz", - "integrity": "sha512-a59VOT+oDy7vtAbLRCZwWgxu2BaCfd5Hk7wxJd48ei7I+nsg8Orlb9CLG0PMZienk9BSUKgeAqkO2+Lw+1+Ukw==", + "node_modules/define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", "dev": true, "dependencies": { - "abstract-leveldown": "~6.2.1", - "inherits": "^2.0.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/deferred-leveldown/node_modules/abstract-leveldown": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz", - "integrity": "sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ==", - "dev": true, - "dependencies": { - "buffer": "^5.5.0", - "immediate": "^3.2.3", - "level-concat-iterator": "~2.0.0", - "level-supports": "~1.0.0", - "xtend": "~4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "dependencies": { - "object-keys": "^1.0.12" + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, "engines": { "node": ">=0.4.0" } }, "node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, "engines": { - "node": ">= 0.6" - } - }, - "node_modules/des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" + "node": ">= 0.8" } }, - "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true - }, "node_modules/detect-port": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.3.0.tgz", - "integrity": "sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.5.1.tgz", + "integrity": "sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==", "dev": true, "dependencies": { "address": "^1.0.1", - "debug": "^2.6.0" + "debug": "4" }, "bin": { - "detect": "bin/detect-port", - "detect-port": "bin/detect-port" - }, - "engines": { - "node": ">= 4.2.1" - } - }, - "node_modules/detect-port/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" + "detect": "bin/detect-port.js", + "detect-port": "bin/detect-port.js" } }, - "node_modules/detect-port/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, "node_modules/diff": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", @@ -3977,15 +4241,16 @@ "node": ">=0.3.1" } }, - "node_modules/diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "node_modules/difflib": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/difflib/-/difflib-0.2.4.tgz", + "integrity": "sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w==", "dev": true, "dependencies": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" + "heap": ">= 0.2.0" + }, + "engines": { + "node": "*" } }, "node_modules/dir-glob": { @@ -4000,15 +4265,6 @@ "node": ">=8" } }, - "node_modules/dir-glob/node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -4021,57 +4277,25 @@ "node": ">=6.0.0" } }, - "node_modules/dom-walk": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", - "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", - "dev": true - }, "node_modules/dotenv": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.0.tgz", - "integrity": "sha512-qD9WU0MPM4SWLPJy/r2Be+2WgQj8plChsyrCNQzW/0WjvcJQiKQJ9mH3ZgB3fxbUUxgc/11ZJ0Fi5KiimWGz2Q==", + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", + "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", "dev": true, "engines": { "node": ">=12" } }, - "node_modules/drbg.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/drbg.js/-/drbg.js-1.0.1.tgz", - "integrity": "sha1-Pja2xCs3BDgjzbwzLVjzHiRFSAs=", - "dev": true, - "dependencies": { - "browserify-aes": "^1.0.6", - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", - "dev": true - }, "node_modules/ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", "dev": true, "dependencies": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" } }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "dev": true - }, "node_modules/elliptic": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", @@ -4087,6 +4311,12 @@ "minimalistic-crypto-utils": "^1.0.1" } }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, "node_modules/email-addresses": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-3.1.0.tgz", @@ -4094,44 +4324,11 @@ "dev": true }, "node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/encoding-down": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/encoding-down/-/encoding-down-6.3.0.tgz", - "integrity": "sha512-QKrV0iKR6MZVJV08QY0wp1e7vF6QbhnbQhb07bwpEyuz4uZiZgPlEGdkCROuFkUwdxlFaiPIhjyarH1ee/3vhw==", - "dev": true, - "dependencies": { - "abstract-leveldown": "^6.2.1", - "inherits": "^2.0.3", - "level-codec": "^9.0.0", - "level-errors": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "dependencies": { - "once": "^1.4.0" - } - }, "node_modules/enquirer": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", @@ -4153,18 +4350,6 @@ "node": ">=6" } }, - "node_modules/errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "dependencies": { - "prr": "~1.0.1" - }, - "bin": { - "errno": "cli.js" - } - }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -4175,31 +4360,53 @@ } }, "node_modules/es-abstract": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.2.tgz", - "integrity": "sha512-gfSBJoZdlL2xRiOCy0g8gLMryhoe1TlimjzU99L/31Z8QEGIhVQI+EWwt5lT+AuU9SnorVupXFqqOGqGfsyO6w==", + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz", + "integrity": "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.3", "get-symbol-description": "^1.0.0", "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", "has-symbols": "^1.0.3", "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", + "is-callable": "^1.2.7", "is-negative-zero": "^2.0.2", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.1", + "is-shared-array-buffer": "^1.0.2", "is-string": "^1.0.7", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.0", + "object-inspect": "^1.12.2", "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-abstract/node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" }, "engines": { "node": ">= 0.4" @@ -4208,6 +4415,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", + "dev": true + }, "node_modules/es-to-primitive": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", @@ -4225,38 +4438,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/es5-ext": { - "version": "0.10.53", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", - "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", - "dev": true, - "dependencies": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.3", - "next-tick": "~1.0.0" - } - }, - "node_modules/es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "dev": true, - "dependencies": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "dev": true, - "dependencies": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -4266,25 +4447,22 @@ "node": ">=6" } }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true - }, "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, "engines": { - "node": ">=0.8.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/escodegen": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", - "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", + "integrity": "sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A==", "dev": true, "dependencies": { "esprima": "^2.7.1", @@ -4303,255 +4481,221 @@ "source-map": "~0.2.0" } }, - "node_modules/escodegen/node_modules/esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "node_modules/escodegen/node_modules/estraverse": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", + "integrity": "sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA==", "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, "engines": { "node": ">=0.10.0" } }, - "node_modules/escodegen/node_modules/source-map": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", - "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", + "node_modules/escodegen/node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", "dev": true, - "optional": true, "dependencies": { - "amdefine": ">=0.0.4" + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" }, "engines": { - "node": ">=0.8.0" + "node": ">= 0.8.0" } }, - "node_modules/eslint": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz", - "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", + "node_modules/escodegen/node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.9.1", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eslint": { + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.27.0.tgz", + "integrity": "sha512-0y1bfG2ho7mty+SiILVf9PfuRA49ek4Nc60Wmmu62QlobNR+CeXa4xXIJgcuwSQgZiWaPH+5BDsctpIW0PR/wQ==", + "dev": true, + "dependencies": { + "@eslint/eslintrc": "^1.3.3", + "@humanwhocodes/config-array": "^0.11.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", "doctrine": "^3.0.0", - "eslint-scope": "^4.0.3", - "eslint-utils": "^1.3.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^5.0.1", - "esquery": "^1.0.1", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob": "^7.1.2", - "globals": "^11.7.0", - "ignore": "^4.0.6", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.15.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", - "inquirer": "^6.2.2", - "js-yaml": "^3.13.0", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.11", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.2", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^5.5.1", - "strip-ansi": "^4.0.0", - "strip-json-comments": "^2.0.1", - "table": "^5.2.3", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" }, "bin": { "eslint": "bin/eslint.js" }, "engines": { - "node": "^6.14.0 || ^8.10.0 || >=9.10.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, "dependencies": { - "esrecurse": "^4.1.0", + "esrecurse": "^4.3.0", "estraverse": "^4.1.1" }, "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/eslint-scope/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" + "node": ">=8.0.0" } }, "node_modules/eslint-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", - "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, "dependencies": { - "eslint-visitor-keys": "^1.1.0" + "eslint-visitor-keys": "^2.0.0" }, "engines": { - "node": ">=6" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "funding": { + "url": "https://github.com/sponsors/mysticatea" }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" + "peerDependencies": { + "eslint": ">=5" } }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/eslint/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true, "engines": { - "node": ">=4" + "node": ">=10" } }, - "node_modules/eslint/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", "dev": true, "engines": { - "node": ">= 4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/eslint/node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", "dev": true, "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, "engines": { - "node": ">=4" - } - }, - "node_modules/eslint/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/eslint/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, "engines": { - "node": ">=4" + "node": ">=4.0" } }, "node_modules/espree": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", - "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", + "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", "dev": true, "dependencies": { - "acorn": "^6.0.7", - "acorn-jsx": "^5.0.0", - "eslint-visitor-keys": "^1.0.0" + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" }, "engines": { - "node": ">=6.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==", "dev": true, "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, "node_modules/esquery": { @@ -4567,9 +4711,9 @@ } }, "node_modules/esquery/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "engines": { "node": ">=4.0" @@ -4588,21 +4732,21 @@ } }, "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "engines": { "node": ">=4.0" } }, "node_modules/estraverse": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", - "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=4.0" } }, "node_modules/esutils": { @@ -4614,36 +4758,33 @@ "node": ">=0.10.0" } }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/eth-ens-namehash": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz", - "integrity": "sha1-IprEbsqG1S4MmR58sq74P/D2i88=", + "integrity": "sha512-VWEI1+KJfz4Km//dadyvBBoBeSQ0MHTXPvr8UIXiLW6IanxvAV+DmlZAijZwAyggqGUfwQBeHf7tc9wzc1piSw==", "dev": true, "dependencies": { "idna-uts46-hx": "^2.3.1", "js-sha3": "^0.5.7" } }, + "node_modules/eth-ens-namehash/node_modules/js-sha3": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", + "integrity": "sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==", + "dev": true + }, "node_modules/eth-gas-reporter": { - "version": "0.2.24", - "resolved": "https://registry.npmjs.org/eth-gas-reporter/-/eth-gas-reporter-0.2.24.tgz", - "integrity": "sha512-RbXLC2bnuPHzIMU/rnLXXlb6oiHEEKu7rq2UrAX/0mfo0Lzrr/kb9QTjWjfz8eNvc+uu6J8AuBwI++b+MLNI2w==", + "version": "0.2.25", + "resolved": "https://registry.npmjs.org/eth-gas-reporter/-/eth-gas-reporter-0.2.25.tgz", + "integrity": "sha512-1fRgyE4xUB8SoqLgN3eDfpDfwEfRxh2Sz1b7wzFbyQA+9TekMmvSjjoRu9SKcSVyK+vLkLIsVbJDsTWjw195OQ==", "dev": true, "dependencies": { "@ethersproject/abi": "^5.0.0-beta.146", "@solidity-parser/parser": "^0.14.0", "cli-table3": "^0.5.0", "colors": "1.4.0", - "ethereumjs-util": "6.2.0", + "ethereum-cryptography": "^1.0.3", "ethers": "^4.0.40", "fs-readdir-recursive": "^1.1.0", "lodash": "^4.17.14", @@ -4664,15 +4805,6 @@ } } }, - "node_modules/eth-gas-reporter/node_modules/@types/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, "node_modules/eth-gas-reporter/node_modules/ansi-colors": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", @@ -4703,6 +4835,21 @@ "node": ">=4" } }, + "node_modules/eth-gas-reporter/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/eth-gas-reporter/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, "node_modules/eth-gas-reporter/node_modules/camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", @@ -4782,9 +4929,18 @@ "node_modules/eth-gas-reporter/node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, + "node_modules/eth-gas-reporter/node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, "node_modules/eth-gas-reporter/node_modules/debug": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", @@ -4804,19 +4960,44 @@ "node": ">=0.3.1" } }, - "node_modules/eth-gas-reporter/node_modules/ethereumjs-util": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.0.tgz", - "integrity": "sha512-vb0XN9J2QGdZGIEKG2vXM+kUdEivUfU6Wmi5y0cg+LRhDYKnXIZ/Lz7XjFbHRR9VIKq2lVGLzGBkA++y2nOdOQ==", + "node_modules/eth-gas-reporter/node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "node_modules/eth-gas-reporter/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eth-gas-reporter/node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eth-gas-reporter/node_modules/ethereum-cryptography": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.1.2.tgz", + "integrity": "sha512-XDSJlg4BD+hq9N2FjvotwUET9Tfxpxc3kWGE2AqUG5vcbeunnbImVk3cj6e/xT3phdW21mE8R5IugU4fspQDcQ==", "dev": true, "dependencies": { - "@types/bn.js": "^4.11.3", - "bn.js": "^4.11.0", - "create-hash": "^1.1.2", - "ethjs-util": "0.1.6", - "keccak": "^2.0.0", - "rlp": "^2.2.3", - "secp256k1": "^3.0.1" + "@noble/hashes": "1.1.2", + "@noble/secp256k1": "1.6.3", + "@scure/bip32": "1.1.0", + "@scure/bip39": "1.1.0" } }, "node_modules/eth-gas-reporter/node_modules/ethers": { @@ -4892,10 +5073,22 @@ "node": "*" } }, + "node_modules/eth-gas-reporter/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/eth-gas-reporter/node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, "engines": { "node": ">=4" @@ -4911,20 +5104,23 @@ "minimalistic-assert": "^1.0.0" } }, - "node_modules/eth-gas-reporter/node_modules/keccak": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/keccak/-/keccak-2.1.0.tgz", - "integrity": "sha512-m1wbJRTo+gWbctZWay9i26v5fFnYkOn7D5PCxJ3fZUGUEb49dE1Pm4BREUYCt/aoO6di7jeoGmhvqN9Nzylm3Q==", + "node_modules/eth-gas-reporter/node_modules/js-sha3": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", + "integrity": "sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==", + "dev": true + }, + "node_modules/eth-gas-reporter/node_modules/js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", "dev": true, - "hasInstallScript": true, "dependencies": { - "bindings": "^1.5.0", - "inherits": "^2.0.4", - "nan": "^2.14.0", - "safe-buffer": "^5.2.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" }, - "engines": { - "node": ">=5.12.0" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, "node_modules/eth-gas-reporter/node_modules/locate-path": { @@ -4952,18 +5148,42 @@ "node": ">=8" } }, - "node_modules/eth-gas-reporter/node_modules/mocha": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.2.0.tgz", - "integrity": "sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ==", + "node_modules/eth-gas-reporter/node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "dependencies": { - "ansi-colors": "3.2.3", - "browser-stdout": "1.3.1", - "chokidar": "3.3.0", - "debug": "3.2.6", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eth-gas-reporter/node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/eth-gas-reporter/node_modules/mocha": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.2.0.tgz", + "integrity": "sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ==", + "dev": true, + "dependencies": { + "ansi-colors": "3.2.3", + "browser-stdout": "1.3.1", + "chokidar": "3.3.0", + "debug": "3.2.6", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", "find-up": "3.0.0", "glob": "7.1.3", "growl": "1.10.5", @@ -5001,21 +5221,6 @@ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", "dev": true }, - "node_modules/eth-gas-reporter/node_modules/object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/eth-gas-reporter/node_modules/p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -5043,13 +5248,13 @@ "node": ">=6" } }, - "node_modules/eth-gas-reporter/node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "node_modules/eth-gas-reporter/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true, "engines": { - "node": ">=6" + "node": ">=4" } }, "node_modules/eth-gas-reporter/node_modules/readdirp": { @@ -5076,30 +5281,10 @@ "integrity": "sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw==", "dev": true }, - "node_modules/eth-gas-reporter/node_modules/secp256k1": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-3.8.0.tgz", - "integrity": "sha512-k5ke5avRZbtl9Tqx/SA7CbY3NF6Ro+Sj9cZxezFzuBlLDmyqPiL8hJJ+EmzD8Ig4LUDByHJ3/iPOVoRixs/hmw==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "bindings": "^1.5.0", - "bip66": "^1.1.5", - "bn.js": "^4.11.8", - "create-hash": "^1.2.0", - "drbg.js": "^1.0.1", - "elliptic": "^6.5.2", - "nan": "^2.14.0", - "safe-buffer": "^5.1.2" - }, - "engines": { - "node": ">=4.0.0" - } - }, "node_modules/eth-gas-reporter/node_modules/setimmediate": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.4.tgz", - "integrity": "sha1-IOgd5iLUoCWIzgyNqJc8vPHTE48=", + "integrity": "sha512-/TjEmXQVEzdod/FFskf3o7oOAsGhHf2j1dZqRFbDzq4F3mvvxflIIi4Hd3bLQE9y/CpwqfSQam5JakI/mi3Pog==", "dev": true }, "node_modules/eth-gas-reporter/node_modules/string-width": { @@ -5128,6 +5313,15 @@ "node": ">=6" } }, + "node_modules/eth-gas-reporter/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/eth-gas-reporter/node_modules/supports-color": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", @@ -5143,14 +5337,26 @@ "node_modules/eth-gas-reporter/node_modules/uuid": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.1.tgz", - "integrity": "sha1-wqMN7bPlNdcsz4LjQ5QaULqFM6w=", + "integrity": "sha512-nWg9+Oa3qD2CQzHIP4qKUqwNfzKn8P0LtFhotaCTFchsV7ZfDhAybeip/HZVeMIpZi9JgY1E3nUlwaCmZT1sEg==", "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", "dev": true }, + "node_modules/eth-gas-reporter/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, "node_modules/eth-gas-reporter/node_modules/which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", "dev": true }, "node_modules/eth-gas-reporter/node_modules/wrap-ansi": { @@ -5215,32 +5421,15 @@ "node": ">=6" } }, - "node_modules/eth-lib": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", - "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", - "dev": true, - "dependencies": { - "bn.js": "^4.11.6", - "elliptic": "^6.4.0", - "xhr-request-promise": "^0.1.2" - } - }, "node_modules/ethereum-bloom-filters": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.9.tgz", - "integrity": "sha512-GiK/RQkAkcVaEdxKVkPcG07PQ5vD7v2MFSHgZmBJSfMzNRHimntdBithsHAT89tAXnIpzVDWt8iaCD1DvkaxGg==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz", + "integrity": "sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==", "dev": true, "dependencies": { "js-sha3": "^0.8.0" } }, - "node_modules/ethereum-bloom-filters/node_modules/js-sha3": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", - "dev": true - }, "node_modules/ethereum-checksum-address": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/ethereum-checksum-address/-/ethereum-checksum-address-0.0.2.tgz", @@ -5331,49 +5520,13 @@ "@types/node": "*" } }, - "node_modules/ethereumjs-abi/node_modules/ethereumjs-util": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", - "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", - "dev": true, - "dependencies": { - "@types/bn.js": "^4.11.3", - "bn.js": "^4.11.0", - "create-hash": "^1.1.2", - "elliptic": "^6.5.2", - "ethereum-cryptography": "^0.1.3", - "ethjs-util": "0.1.6", - "rlp": "^2.2.3" - } - }, - "node_modules/ethereumjs-common": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/ethereumjs-common/-/ethereumjs-common-1.5.2.tgz", - "integrity": "sha512-hTfZjwGX52GS2jcVO6E2sx4YuFnf0Fhp5ylo4pEPhEffNln7vS59Hr5sLnp3/QCazFLluuBZ+FZ6J5HTp0EqCA==", - "deprecated": "New package name format for new versions: @ethereumjs/common. Please update.", + "node_modules/ethereumjs-abi/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true }, - "node_modules/ethereumjs-tx": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz", - "integrity": "sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw==", - "deprecated": "New package name format for new versions: @ethereumjs/tx. Please update.", - "dev": true, - "dependencies": { - "ethereumjs-common": "^1.5.0", - "ethereumjs-util": "^6.0.0" - } - }, - "node_modules/ethereumjs-tx/node_modules/@types/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/ethereumjs-tx/node_modules/ethereumjs-util": { + "node_modules/ethereumjs-abi/node_modules/ethereumjs-util": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", @@ -5389,9 +5542,9 @@ } }, "node_modules/ethereumjs-util": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.4.tgz", - "integrity": "sha512-p6KmuPCX4mZIqsQzXfmSx9Y0l2hqf+VkAiwSisW3UKUFdk8ZkAt+AYaor83z2nSi6CU2zSsXMlD80hAbNEGM0A==", + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", + "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", "dev": true, "dependencies": { "@types/bn.js": "^5.1.0", @@ -5404,16 +5557,10 @@ "node": ">=10.0.0" } }, - "node_modules/ethereumjs-util/node_modules/bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", - "dev": true - }, "node_modules/ethers": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.6.2.tgz", - "integrity": "sha512-EzGCbns24/Yluu7+ToWnMca3SXJ1Jk1BvWB7CCmVNxyOeM4LLvw2OLuIHhlkhQk1dtOcj9UMsdkxUh8RiG1dxQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", "dev": true, "funding": [ { @@ -5426,42 +5573,42 @@ } ], "dependencies": { - "@ethersproject/abi": "5.6.0", - "@ethersproject/abstract-provider": "5.6.0", - "@ethersproject/abstract-signer": "5.6.0", - "@ethersproject/address": "5.6.0", - "@ethersproject/base64": "5.6.0", - "@ethersproject/basex": "5.6.0", - "@ethersproject/bignumber": "5.6.0", - "@ethersproject/bytes": "5.6.1", - "@ethersproject/constants": "5.6.0", - "@ethersproject/contracts": "5.6.0", - "@ethersproject/hash": "5.6.0", - "@ethersproject/hdnode": "5.6.0", - "@ethersproject/json-wallets": "5.6.0", - "@ethersproject/keccak256": "5.6.0", - "@ethersproject/logger": "5.6.0", - "@ethersproject/networks": "5.6.1", - "@ethersproject/pbkdf2": "5.6.0", - "@ethersproject/properties": "5.6.0", - "@ethersproject/providers": "5.6.2", - "@ethersproject/random": "5.6.0", - "@ethersproject/rlp": "5.6.0", - "@ethersproject/sha2": "5.6.0", - "@ethersproject/signing-key": "5.6.0", - "@ethersproject/solidity": "5.6.0", - "@ethersproject/strings": "5.6.0", - "@ethersproject/transactions": "5.6.0", - "@ethersproject/units": "5.6.0", - "@ethersproject/wallet": "5.6.0", - "@ethersproject/web": "5.6.0", - "@ethersproject/wordlists": "5.6.0" + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/abstract-signer": "5.7.0", + "@ethersproject/address": "5.7.0", + "@ethersproject/base64": "5.7.0", + "@ethersproject/basex": "5.7.0", + "@ethersproject/bignumber": "5.7.0", + "@ethersproject/bytes": "5.7.0", + "@ethersproject/constants": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/hash": "5.7.0", + "@ethersproject/hdnode": "5.7.0", + "@ethersproject/json-wallets": "5.7.0", + "@ethersproject/keccak256": "5.7.0", + "@ethersproject/logger": "5.7.0", + "@ethersproject/networks": "5.7.1", + "@ethersproject/pbkdf2": "5.7.0", + "@ethersproject/properties": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/random": "5.7.0", + "@ethersproject/rlp": "5.7.0", + "@ethersproject/sha2": "5.7.0", + "@ethersproject/signing-key": "5.7.0", + "@ethersproject/solidity": "5.7.0", + "@ethersproject/strings": "5.7.0", + "@ethersproject/transactions": "5.7.0", + "@ethersproject/units": "5.7.0", + "@ethersproject/wallet": "5.7.0", + "@ethersproject/web": "5.7.1", + "@ethersproject/wordlists": "5.7.0" } }, "node_modules/ethjs-unit": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", - "integrity": "sha1-xmWSHkduh7ziqdWIpv4EBbLEFpk=", + "integrity": "sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==", "dev": true, "dependencies": { "bn.js": "4.11.6", @@ -5475,7 +5622,7 @@ "node_modules/ethjs-unit/node_modules/bn.js": { "version": "4.11.6", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", "dev": true }, "node_modules/ethjs-util": { @@ -5501,12 +5648,6 @@ "node": ">=6" } }, - "node_modules/eventemitter3": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", - "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==", - "dev": true - }, "node_modules/evp_bytestokey": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", @@ -5517,110 +5658,6 @@ "safe-buffer": "^5.1.1" } }, - "node_modules/exit-on-epipe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz", - "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", - "dev": true, - "dependencies": { - "accepts": "~1.3.7", - "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", - "content-type": "~1.0.4", - "cookie": "0.4.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/express/node_modules/cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/express/node_modules/qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/express/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/ext": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", - "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", - "dev": true, - "dependencies": { - "type": "^2.0.0" - } - }, - "node_modules/ext/node_modules/type": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.5.0.tgz", - "integrity": "sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==", - "dev": true - }, "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -5644,7 +5681,7 @@ "node_modules/extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", "dev": true, "engines": [ "node >=0.6.0" @@ -5663,20 +5700,31 @@ "dev": true }, "node_modules/fast-glob": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", - "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.0", + "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.2", - "picomatch": "^2.2.1" + "micromatch": "^4.0.4" }, "engines": { - "node": ">=8" + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" } }, "node_modules/fast-json-stable-stringify": { @@ -5688,13 +5736,13 @@ "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, "node_modules/fastq": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz", - "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", "dev": true, "dependencies": { "reusify": "^1.0.4" @@ -5703,7 +5751,7 @@ "node_modules/figures": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", "dev": true, "dependencies": { "escape-string-regexp": "^1.0.5" @@ -5712,28 +5760,31 @@ "node": ">=4" } }, + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/file-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "dependencies": { - "flat-cache": "^2.0.1" + "flat-cache": "^3.0.4" }, "engines": { - "node": ">=4" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true - }, "node_modules/filename-reserved-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", - "integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=", + "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==", "dev": true, "engines": { "node": ">=4" @@ -5768,39 +5819,6 @@ "node": ">=8" } }, - "node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, "node_modules/find-cache-dir": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", @@ -5821,7 +5839,7 @@ "node_modules/find-replace": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-1.0.3.tgz", - "integrity": "sha1-uI5zZNLZyVlVnziMZmcNYTBEH6A=", + "integrity": "sha512-KrUnjzDCD9426YnCP56zGYy/eieTnhtK6Vn++j+JJzmlsWWwEkDnsyVF575spT6HJ6Ow9tlbT3TQTDsa+O4UWA==", "dev": true, "dependencies": { "array-back": "^1.0.4", @@ -5834,7 +5852,7 @@ "node_modules/find-replace/node_modules/array-back": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz", - "integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=", + "integrity": "sha512-1WxbZvrmyhkNoeYcizokbmh5oiOCIfyvGtcqbK3Ls1v1fKcquzxnQSceOx6tzq7jmai2kFLWIpGND2cLhH6TPw==", "dev": true, "dependencies": { "typical": "^2.6.0" @@ -5844,15 +5862,19 @@ } }, "node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "dependencies": { - "locate-path": "^2.0.0" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/find-yarn-workspace-root": { @@ -5874,41 +5896,28 @@ } }, "node_modules/flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, "dependencies": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" + "flatted": "^3.1.0", + "rimraf": "^3.0.2" }, "engines": { - "node": ">=4" - } - }, - "node_modules/flat-cache/node_modules/rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" + "node": "^10.12.0 || >=12.0.0" } }, "node_modules/flatted": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", "dev": true }, "node_modules/follow-redirects": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.0.tgz", - "integrity": "sha512-0vRwd7RKQBTt+mgu87mtYeofLFZpTas2S9zY+jIeuLJMNvudIgF52nr19q40HOwH5RrhWIPuj9puybzSJiRrVg==", + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", "dev": true, "funding": [ { @@ -5925,52 +5934,34 @@ } } }, - "node_modules/foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", - "dev": true - }, "node_modules/forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", "dev": true, "engines": { "node": "*" } }, "node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", "dev": true, "dependencies": { "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", + "combined-stream": "^1.0.8", "mime-types": "^2.1.12" }, "engines": { - "node": ">= 0.12" - } - }, - "node_modules/forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", - "dev": true, - "engines": { - "node": ">= 0.6" + "node": ">= 6" } }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "dev": true, - "engines": { - "node": ">= 0.6" - } + "node_modules/fp-ts": { + "version": "1.19.3", + "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz", + "integrity": "sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==", + "dev": true }, "node_modules/fs-extra": { "version": "7.0.1", @@ -5986,15 +5977,6 @@ "node": ">=6 <7 || >=8" } }, - "node_modules/fs-minipass": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", - "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", - "dev": true, - "dependencies": { - "minipass": "^2.6.0" - } - }, "node_modules/fs-readdir-recursive": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", @@ -6004,7 +5986,7 @@ "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, "node_modules/fsevents": { @@ -6027,12 +6009,39 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, + "node_modules/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/functional-red-black-tree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", "dev": true }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/ganache-core": { "version": "2.13.2", "resolved": "https://registry.npmjs.org/ganache-core/-/ganache-core-2.13.2.tgz", @@ -15223,21 +15232,21 @@ "node_modules/get-func-name": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", "dev": true, "engines": { "node": "*" } }, "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", "dev": true, "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", - "has-symbols": "^1.0.1" + "has-symbols": "^1.0.3" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -15246,24 +15255,12 @@ "node_modules/get-port": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", - "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=", + "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==", "dev": true, "engines": { "node": ">=4" } }, - "node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/get-symbol-description": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", @@ -15283,7 +15280,7 @@ "node_modules/getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", "dev": true, "dependencies": { "assert-plus": "^1.0.0" @@ -15314,7 +15311,7 @@ "node_modules/gh-pages/node_modules/array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", "dev": true, "dependencies": { "array-uniq": "^1.0.1" @@ -15323,12 +15320,6 @@ "node": ">=0.10.0" } }, - "node_modules/gh-pages/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, "node_modules/gh-pages/node_modules/fs-extra": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", @@ -15346,7 +15337,7 @@ "node_modules/gh-pages/node_modules/globby": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", "dev": true, "dependencies": { "array-union": "^1.0.1", @@ -15362,7 +15353,7 @@ "node_modules/gh-pages/node_modules/pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, "engines": { "node": ">=0.10.0" @@ -15419,13 +15410,22 @@ "node_modules/ghost-testrpc/node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, + "node_modules/ghost-testrpc/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/ghost-testrpc/node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, "engines": { "node": ">=4" @@ -15444,9 +15444,9 @@ } }, "node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -15464,25 +15464,15 @@ } }, "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "dependencies": { - "is-glob": "^4.0.1" + "is-glob": "^4.0.3" }, "engines": { - "node": ">= 6" - } - }, - "node_modules/global": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", - "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", - "dev": true, - "dependencies": { - "min-document": "^2.19.0", - "process": "^0.11.10" + "node": ">=10.13.0" } }, "node_modules/global-modules": { @@ -15511,69 +15501,63 @@ "node": ">=6" } }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/globby": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", - "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, "dependencies": { - "@types/glob": "^7.1.1", - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.0.3", - "glob": "^7.1.3", - "ignore": "^5.1.1", - "merge2": "^1.2.3", - "slash": "^3.0.0" + "isexe": "^2.0.0" }, - "engines": { - "node": ">=8" + "bin": { + "which": "bin/which" } }, - "node_modules/globby/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "node_modules/globals": { + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "dependencies": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" }, "engines": { - "node": ">=8.6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", "dev": true }, "node_modules/growl": { @@ -15606,10 +15590,19 @@ "uglify-js": "^3.1.4" } }, + "node_modules/handlebars/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", "dev": true, "engines": { "node": ">=4" @@ -15630,20 +15623,25 @@ } }, "node_modules/hardhat": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.9.2.tgz", - "integrity": "sha512-elTcUK1EdFverWinybQ+DoJzsM6sgiHUYs0ZYNNXMfESty6ESHiFSwkfJsC88/q09vmIz6YVaMh73BYnYd+feQ==", + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.12.2.tgz", + "integrity": "sha512-f3ZhzXy1uyQv0UXnAQ8GCBOWjzv++WJNb7bnm10SsyC3dB7vlPpsMWBNhq7aoRxKrNhX9tCev81KFV3i5BTeMQ==", "dev": true, "dependencies": { - "@ethereumjs/block": "^3.6.0", - "@ethereumjs/blockchain": "^5.5.0", - "@ethereumjs/common": "^2.6.0", - "@ethereumjs/tx": "^3.4.0", - "@ethereumjs/vm": "^5.6.0", "@ethersproject/abi": "^5.1.2", "@metamask/eth-sig-util": "^4.0.0", + "@nomicfoundation/ethereumjs-block": "^4.0.0", + "@nomicfoundation/ethereumjs-blockchain": "^6.0.0", + "@nomicfoundation/ethereumjs-common": "^3.0.0", + "@nomicfoundation/ethereumjs-evm": "^1.0.0", + "@nomicfoundation/ethereumjs-rlp": "^4.0.0", + "@nomicfoundation/ethereumjs-statemanager": "^1.0.0", + "@nomicfoundation/ethereumjs-trie": "^5.0.0", + "@nomicfoundation/ethereumjs-tx": "^4.0.0", + "@nomicfoundation/ethereumjs-util": "^8.0.0", + "@nomicfoundation/ethereumjs-vm": "^6.0.0", + "@nomicfoundation/solidity-analyzer": "^0.1.0", "@sentry/node": "^5.18.1", - "@solidity-parser/parser": "^0.14.1", "@types/bn.js": "^5.1.0", "@types/lru-cache": "^5.1.0", "abort-controller": "^3.0.0", @@ -15656,31 +15654,28 @@ "debug": "^4.1.1", "enquirer": "^2.3.0", "env-paths": "^2.2.0", - "ethereum-cryptography": "^0.1.2", + "ethereum-cryptography": "^1.0.3", "ethereumjs-abi": "^0.6.8", - "ethereumjs-util": "^7.1.3", "find-up": "^2.1.0", "fp-ts": "1.19.3", "fs-extra": "^7.0.1", - "glob": "^7.1.3", + "glob": "7.2.0", "immutable": "^4.0.0-rc.12", "io-ts": "1.10.4", + "keccak": "^3.0.2", "lodash": "^4.17.11", - "merkle-patricia-tree": "^4.2.2", "mnemonist": "^0.38.0", - "mocha": "^9.2.0", + "mocha": "^10.0.0", "p-map": "^4.0.0", "qs": "^6.7.0", "raw-body": "^2.4.1", "resolve": "1.17.0", "semver": "^6.3.0", - "slash": "^3.0.0", "solc": "0.7.3", "source-map-support": "^0.5.13", "stacktrace-parser": "^0.1.10", - "true-case-path": "^2.2.1", "tsort": "0.0.1", - "undici": "^4.14.1", + "undici": "^5.4.0", "uuid": "^8.3.2", "ws": "^7.4.6" }, @@ -15688,17 +15683,80 @@ "hardhat": "internal/cli/cli.js" }, "engines": { - "node": "^12.0.0 || ^14.0.0 || ^16.0.0" + "node": "^14.0.0 || ^16.0.0 || ^18.0.0" + }, + "peerDependencies": { + "ts-node": "*", + "typescript": "*" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/hardhat-contract-sizer": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/hardhat-contract-sizer/-/hardhat-contract-sizer-2.6.1.tgz", + "integrity": "sha512-b8wS7DBvyo22kmVwpzstAQTdDCThpl/ySBqZh5ga9Yxjf61/uTL12TEg5nl7lDeWy73ntEUzxMwY6XxbQEc2wA==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "cli-table3": "^0.6.0" + }, + "peerDependencies": { + "hardhat": "^2.0.0" + } + }, + "node_modules/hardhat-contract-sizer/node_modules/cli-table3": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", + "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/hardhat-contract-sizer/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/hardhat-contract-sizer/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" } }, "node_modules/hardhat-gas-reporter": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.8.tgz", - "integrity": "sha512-1G5thPnnhcwLHsFnl759f2tgElvuwdkzxlI65fC9PwxYMEe9cmjkVAAWTf3/3y8uP6ZSPiUiOW8PgZnykmZe0g==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.9.tgz", + "integrity": "sha512-INN26G3EW43adGKBNzYWOlI3+rlLnasXTwW79YNnUhXPDa+yHESgt639dJEs37gCjhkbNKcRRJnomXEuMFBXJg==", "dev": true, "dependencies": { "array-uniq": "1.0.3", - "eth-gas-reporter": "^0.2.24", + "eth-gas-reporter": "^0.2.25", "sha1": "^1.1.1" }, "peerDependencies": { @@ -15706,9 +15764,9 @@ } }, "node_modules/hardhat-tracer": { - "version": "1.1.0-rc.3", - "resolved": "https://registry.npmjs.org/hardhat-tracer/-/hardhat-tracer-1.1.0-rc.3.tgz", - "integrity": "sha512-UGOfwRXkdxWM66JqcyGDJfIjiDXNkqgiaomLPvILg3nppVTjxtBmddYtnvGhDrV9FE1NgWyBnP1B35NaRIKM8A==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/hardhat-tracer/-/hardhat-tracer-1.1.1.tgz", + "integrity": "sha512-NgOnnNAvARBtYC5x5c7Qcbw+lr+Jb+0OV1NC2tTpUUQj0ym+/0y42F0CYT/zKnHw3uf046NKg0CNTzYg1j0JWg==", "dev": true, "dependencies": { "ethers": "^5.6.1" @@ -15757,82 +15815,131 @@ "node_modules/hardhat/node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, - "node_modules/hardhat/node_modules/fp-ts": { - "version": "1.19.3", - "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz", - "integrity": "sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==", + "node_modules/hardhat/node_modules/commander": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", + "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", "dev": true }, - "node_modules/hardhat/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "node_modules/hardhat/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, "engines": { - "node": ">=4" + "node": ">=0.8.0" } }, - "node_modules/hardhat/node_modules/io-ts": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-1.10.4.tgz", - "integrity": "sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==", + "node_modules/hardhat/node_modules/ethereum-cryptography": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.1.2.tgz", + "integrity": "sha512-XDSJlg4BD+hq9N2FjvotwUET9Tfxpxc3kWGE2AqUG5vcbeunnbImVk3cj6e/xT3phdW21mE8R5IugU4fspQDcQ==", "dev": true, "dependencies": { - "fp-ts": "^1.0.0" + "@noble/hashes": "1.1.2", + "@noble/secp256k1": "1.6.3", + "@scure/bip32": "1.1.0", + "@scure/bip39": "1.1.0" } }, - "node_modules/hardhat/node_modules/js-sha3": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", - "dev": true + "node_modules/hardhat/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hardhat/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/hardhat/node_modules/jsonfile": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", "dev": true, "optionalDependencies": { "graceful-fs": "^4.1.6" } }, - "node_modules/hardhat/node_modules/qs": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", - "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "node_modules/hardhat/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", "dev": true, "dependencies": { - "side-channel": "^1.0.4" + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" }, "engines": { - "node": ">=0.6" + "node": ">=4" + } + }, + "node_modules/hardhat/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=4" } }, - "node_modules/hardhat/node_modules/resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "node_modules/hardhat/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", "dev": true, "dependencies": { - "path-parse": "^1.0.6" + "p-limit": "^1.1.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=4" + } + }, + "node_modules/hardhat/node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true, + "engines": { + "node": ">=4" } }, - "node_modules/hardhat/node_modules/slash": { + "node_modules/hardhat/node_modules/path-exists": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true, "engines": { - "node": ">=8" + "node": ">=4" + } + }, + "node_modules/hardhat/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" } }, "node_modules/hardhat/node_modules/solc": { @@ -15861,7 +15968,7 @@ "node_modules/hardhat/node_modules/solc/node_modules/fs-extra": { "version": "0.30.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", - "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", + "integrity": "sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==", "dev": true, "dependencies": { "graceful-fs": "^4.1.2", @@ -15892,15 +15999,6 @@ "node": ">=4" } }, - "node_modules/hardhat/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -15914,9 +16012,9 @@ } }, "node_modules/has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -15931,13 +16029,16 @@ "node": ">=8" } }, - "node_modules/has-symbol-support-x": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", - "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==", + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", "dev": true, - "engines": { - "node": "*" + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-symbols": { @@ -15952,18 +16053,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-to-string-tag-x": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", - "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", - "dev": true, - "dependencies": { - "has-symbol-support-x": "^1.4.1" - }, - "engines": { - "node": "*" - } - }, "node_modules/has-tostringtag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", @@ -16012,10 +16101,16 @@ "he": "bin/he" } }, + "node_modules/heap": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz", + "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==", + "dev": true + }, "node_modules/hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", "dev": true, "dependencies": { "hash.js": "^1.0.3", @@ -16044,34 +16139,22 @@ "node": ">=6.0.0" } }, - "node_modules/http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", - "dev": true - }, "node_modules/http-errors": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", - "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, "dependencies": { - "depd": "~1.1.2", + "depd": "2.0.0", "inherits": "2.0.4", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" }, "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, - "node_modules/http-https": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/http-https/-/http-https-1.0.0.tgz", - "integrity": "sha1-L5CN1fHbQGjAWM1ubUzjkskTOJs=", - "dev": true - }, "node_modules/http-response-object": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz", @@ -16090,7 +16173,7 @@ "node_modules/http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", "dev": true, "dependencies": { "assert-plus": "^1.0.0", @@ -16103,9 +16186,9 @@ } }, "node_modules/https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, "dependencies": { "agent-base": "6", @@ -16160,61 +16243,58 @@ ] }, "node_modules/ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true, "engines": { "node": ">= 4" } }, - "node_modules/immediate": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz", - "integrity": "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==", - "dev": true - }, "node_modules/immutable": { - "version": "4.0.0-rc.12", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0-rc.12.tgz", - "integrity": "sha512-0M2XxkZLx/mi3t8NVwIm1g8nHoEmM9p9UBl/G9k4+hm0kBgOVdMV/B3CY5dQ8qG8qc80NN4gDV4HQv6FTJ5q7A==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", + "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", "dev": true }, "node_modules/import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "dependencies": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, "engines": { "node": ">=0.8.19" } }, "node_modules/indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dev": true, "dependencies": { "once": "^1.3.0", @@ -16266,6 +16346,15 @@ "node": ">=4" } }, + "node_modules/inquirer/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/inquirer/node_modules/ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -16304,13 +16393,22 @@ "node_modules/inquirer/node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, + "node_modules/inquirer/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/inquirer/node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, "engines": { "node": ">=4" @@ -16328,15 +16426,6 @@ "node": ">=6" } }, - "node_modules/inquirer/node_modules/strip-ansi/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/inquirer/node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -16375,47 +16464,35 @@ "node_modules/invert-kv": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==", "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-arguments": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", - "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", + "node_modules/io-ts": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-1.10.4.tgz", + "integrity": "sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==", "dev": true, "dependencies": { - "call-bind": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "fp-ts": "^1.0.0" } }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, "node_modules/is-bigint": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz", - "integrity": "sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -16433,12 +16510,13 @@ } }, "node_modules/is-boolean-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz", - "integrity": "sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dev": true, "dependencies": { - "call-bind": "^1.0.2" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -16471,9 +16549,9 @@ } }, "node_modules/is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, "engines": { "node": ">= 0.4" @@ -16494,23 +16572,14 @@ "is-ci": "bin.js" } }, - "node_modules/is-core-module": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.3.0.tgz", - "integrity": "sha512-xSphU2KG9867tsYdLD4RWQ1VqdFl4HTO9Thf3I/3dLEfr0dbPTWKsuCKrgqMljg4nPE+Gq0VCnzT3gr0CyBmsw==", + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "dev": true, "dependencies": { - "has": "^1.0.3" + "has-tostringtag": "^1.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz", - "integrity": "sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -16521,7 +16590,7 @@ "node_modules/is-directory": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", "dev": true, "engines": { "node": ">=0.10.0" @@ -16545,7 +16614,7 @@ "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -16554,34 +16623,16 @@ "node_modules/is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", "dev": true, "engines": { "node": ">=4" } }, - "node_modules/is-function": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", - "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==", - "dev": true - }, - "node_modules/is-generator-function": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.9.tgz", - "integrity": "sha512-ZJ34p1uvIfptHCN7sFTjGibB9/oBg17sHqzDLfuwhvmN/qLVvIQXRQ8licZQ35WJ8KuEQt/etnnzQFI9C9Ue/A==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "dependencies": { "is-extglob": "^2.1.1" @@ -16593,7 +16644,7 @@ "node_modules/is-hex-prefixed": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", - "integrity": "sha1-fY035q135dEnFIkTxXPggtd39VQ=", + "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==", "dev": true, "engines": { "node": ">=6.5.0", @@ -16622,10 +16673,13 @@ } }, "node_modules/is-number-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz", - "integrity": "sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -16633,19 +16687,19 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz", - "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==", + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=8" } }, "node_modules/is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -16667,33 +16721,18 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-retry-allowed": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", - "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-shared-array-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", - "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-string": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", @@ -16724,29 +16763,10 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-typed-array": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.5.tgz", - "integrity": "sha512-S+GRDgJlR3PyEbsX/Fobd9cqpZBuvUS+8asRqYDMLCb2qMzt1oz5m5oxQCxOgUDxiWsOVNi4yaF+/uvdlHlYug==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.2", - "call-bind": "^1.0.2", - "es-abstract": "^1.18.0-next.2", - "foreach": "^2.0.5", - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "dev": true }, "node_modules/is-unicode-supported": { @@ -16770,7 +16790,7 @@ "node_modules/is-utf8": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", "dev": true }, "node_modules/is-weakref": { @@ -16800,38 +16820,31 @@ "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, "node_modules/isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", "dev": true }, - "node_modules/isurl": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", - "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", - "dev": true, - "dependencies": { - "has-to-string-tag-x": "^1.2.0", - "is-object": "^1.0.1" - }, - "engines": { - "node": ">= 4" - } + "node_modules/js-sdsl": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", + "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==", + "dev": true }, "node_modules/js-sha3": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", - "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", "dev": true }, "node_modules/js-tokens": { @@ -16841,13 +16854,12 @@ "dev": true }, "node_modules/js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" @@ -16856,13 +16868,7 @@ "node_modules/jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true - }, - "node_modules/json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", "dev": true }, "node_modules/json-parse-better-errors": { @@ -16872,9 +16878,9 @@ "dev": true }, "node_modules/json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", "dev": true }, "node_modules/json-schema-traverse": { @@ -16886,79 +16892,72 @@ "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", "dev": true }, "node_modules/jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "node_modules/jsonschema": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.0.tgz", - "integrity": "sha512-/YgW6pRMr6M7C+4o8kS+B/2myEpHCrxO4PEWnqJNBFMjn7EWXqlQ4tGwL6xTHeRplwuZmcAncdvfOad1nT2yMw==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.1.tgz", + "integrity": "sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==", "dev": true, "engines": { "node": "*" } }, "node_modules/jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", "dev": true, - "engines": [ - "node >=0.6.0" - ], "dependencies": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", - "json-schema": "0.2.3", + "json-schema": "0.4.0", "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" } }, "node_modules/keccak": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.1.tgz", - "integrity": "sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.2.tgz", + "integrity": "sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ==", "dev": true, "hasInstallScript": true, "dependencies": { "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0" + "node-gyp-build": "^4.2.0", + "readable-stream": "^3.6.0" }, "engines": { "node": ">=10.0.0" } }, "node_modules/keccak256": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/keccak256/-/keccak256-1.0.2.tgz", - "integrity": "sha512-f2EncSgmHmmQOkgxZ+/f2VaWTNkFL6f39VIrpoX+p8cEXJVyyCs/3h9GNz/ViHgwchxvv7oG5mjT2Tk4ZqInag==", - "dev": true, - "dependencies": { - "bn.js": "^4.11.8", - "keccak": "^3.0.1" - } - }, - "node_modules/keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/keccak256/-/keccak256-1.0.6.tgz", + "integrity": "sha512-8GLiM01PkdJVGUhR1e6M/AvWnSqYS0HaERI+K/QtStGDGlSTx2B1zTqZk4Zlqu5TxHJNTxWAdP9Y+WI50OApUw==", "dev": true, "dependencies": { - "json-buffer": "3.0.0" + "bn.js": "^5.2.0", + "buffer": "^6.0.3", + "keccak": "^3.0.2" } }, "node_modules/kind-of": { @@ -16973,7 +16972,7 @@ "node_modules/klaw": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", - "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", + "integrity": "sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==", "dev": true, "optionalDependencies": { "graceful-fs": "^4.1.9" @@ -17000,7 +16999,7 @@ "node_modules/lcid": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", "dev": true, "dependencies": { "invert-kv": "^1.0.0" @@ -17009,129 +17008,53 @@ "node": ">=0.10.0" } }, - "node_modules/level-codec": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-9.0.2.tgz", - "integrity": "sha512-UyIwNb1lJBChJnGfjmO0OR+ezh2iVu1Kas3nvBS/BzGnx79dv6g7unpKIDNPMhfdTEGoc7mC8uAu51XEtX+FHQ==", - "dev": true, - "dependencies": { - "buffer": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/level-concat-iterator": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/level-concat-iterator/-/level-concat-iterator-2.0.1.tgz", - "integrity": "sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/level-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-2.0.1.tgz", - "integrity": "sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw==", - "dev": true, - "dependencies": { - "errno": "~0.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/level-iterator-stream": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-4.0.2.tgz", - "integrity": "sha512-ZSthfEqzGSOMWoUGhTXdX9jv26d32XJuHz/5YnuHZzH6wldfWMOVwI9TBtKcya4BKTyTt3XVA0A3cF3q5CY30Q==", - "dev": true, - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.4.0", - "xtend": "^4.0.2" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/level-mem": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/level-mem/-/level-mem-5.0.1.tgz", - "integrity": "sha512-qd+qUJHXsGSFoHTziptAKXoLX87QjR7v2KMbqncDXPxQuCdsQlzmyX+gwrEHhlzn08vkf8TyipYyMmiC6Gobzg==", + "node_modules/level": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/level/-/level-8.0.0.tgz", + "integrity": "sha512-ypf0jjAk2BWI33yzEaaotpq7fkOPALKAgDBxggO6Q9HGX2MRXn0wbP1Jn/tJv1gtL867+YOjOB49WaUF3UoJNQ==", "dev": true, "dependencies": { - "level-packager": "^5.0.3", - "memdown": "^5.0.0" + "browser-level": "^1.0.1", + "classic-level": "^1.2.0" }, "engines": { - "node": ">=6" - } - }, - "node_modules/level-packager": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/level-packager/-/level-packager-5.1.1.tgz", - "integrity": "sha512-HMwMaQPlTC1IlcwT3+swhqf/NUO+ZhXVz6TY1zZIIZlIR0YSn8GtAAWmIvKjNY16ZkEg/JcpAuQskxsXqC0yOQ==", - "dev": true, - "dependencies": { - "encoding-down": "^6.3.0", - "levelup": "^4.3.2" + "node": ">=12" }, - "engines": { - "node": ">=6" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/level" } }, "node_modules/level-supports": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-1.0.1.tgz", - "integrity": "sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg==", - "dev": true, - "dependencies": { - "xtend": "^4.0.2" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/level-ws": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/level-ws/-/level-ws-2.0.0.tgz", - "integrity": "sha512-1iv7VXx0G9ec1isqQZ7y5LmoZo/ewAsyDHNA8EFDW5hqH2Kqovm33nSFkSdnLLAK+I5FlT+lo5Cw9itGe+CpQA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-4.0.1.tgz", + "integrity": "sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA==", "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "readable-stream": "^3.1.0", - "xtend": "^4.0.1" - }, "engines": { - "node": ">=6" + "node": ">=12" } }, - "node_modules/levelup": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/levelup/-/levelup-4.4.0.tgz", - "integrity": "sha512-94++VFO3qN95cM/d6eBXvd894oJE0w3cInq9USsyQzzoJxmiYzPAocNcuGCPGGjoXqDVJcr3C1jzt1TSjyaiLQ==", + "node_modules/level-transcoder": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/level-transcoder/-/level-transcoder-1.0.1.tgz", + "integrity": "sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w==", "dev": true, "dependencies": { - "deferred-leveldown": "~5.3.0", - "level-errors": "~2.0.0", - "level-iterator-stream": "~4.0.0", - "level-supports": "~1.0.0", - "xtend": "~4.0.0" + "buffer": "^6.0.3", + "module-error": "^1.0.1" }, "engines": { - "node": ">=6" + "node": ">=12" } }, "node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" }, "engines": { "node": ">= 0.8.0" @@ -17140,7 +17063,7 @@ "node_modules/load-json-file": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", "dev": true, "dependencies": { "graceful-fs": "^4.1.2", @@ -17153,16 +17076,18 @@ } }, "node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" + "p-locate": "^5.0.0" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/lodash": { @@ -17174,13 +17099,19 @@ "node_modules/lodash.assign": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", - "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", + "integrity": "sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw==", "dev": true }, - "node_modules/lodash.toarray": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz", - "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=", + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", "dev": true }, "node_modules/log-symbols": { @@ -17202,7 +17133,7 @@ "node_modules/loud-rejection": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "integrity": "sha512-RPNliZOFkqFumDhvYqOaNY4Uz9oJM2K9tC6JWsJJsNdhuONW4LQHRBpb0qf4pJApVffI5N39SwzWZJuEhfd7eQ==", "dev": true, "dependencies": { "currently-unhandled": "^0.4.1", @@ -17213,27 +17144,18 @@ } }, "node_modules/loupe": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz", - "integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", + "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", "dev": true, "dependencies": { "get-func-name": "^2.0.0" } }, - "node_modules/lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/lru_map": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", - "integrity": "sha1-tcg1G5Rky9dQM1p5ZQoOwOVhGN0=", + "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==", "dev": true }, "node_modules/lru-cache": { @@ -17245,12 +17167,6 @@ "yallist": "^3.0.2" } }, - "node_modules/ltgt": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz", - "integrity": "sha1-81ypHEk/e3PaDgdJUwTxezH4fuU=", - "dev": true - }, "node_modules/make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -17275,7 +17191,7 @@ "node_modules/map-obj": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", - "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=", + "integrity": "sha512-TzQSV2DiMYgoF5RycneKVUzIa9bQsj/B3tTgsE3dOGqlzHnGIDaC7XBE7grnA+8kZPnfqSGFe95VHc2oc0VFUQ==", "dev": true, "engines": { "node": ">=4" @@ -17307,58 +17223,24 @@ "safe-buffer": "^5.1.2" } }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/memdown": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/memdown/-/memdown-5.1.0.tgz", - "integrity": "sha512-B3J+UizMRAlEArDjWHTMmadet+UKwHd3UjMgGBkZcKAxAYVPS9o0Yeiha4qvz7iGiL2Sb3igUft6p7nbFWctpw==", - "dev": true, - "dependencies": { - "abstract-leveldown": "~6.2.1", - "functional-red-black-tree": "~1.0.1", - "immediate": "~3.2.3", - "inherits": "~2.0.1", - "ltgt": "~2.2.0", - "safe-buffer": "~5.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/memdown/node_modules/abstract-leveldown": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz", - "integrity": "sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ==", + "node_modules/memory-level": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/memory-level/-/memory-level-1.0.0.tgz", + "integrity": "sha512-UXzwewuWeHBz5krr7EvehKcmLFNoXxGcvuYhC41tRnkrTbJohtS7kVn9akmgirtRygg+f7Yjsfi8Uu5SGSQ4Og==", "dev": true, "dependencies": { - "buffer": "^5.5.0", - "immediate": "^3.2.3", - "level-concat-iterator": "~2.0.0", - "level-supports": "~1.0.0", - "xtend": "~4.0.0" + "abstract-level": "^1.0.0", + "functional-red-black-tree": "^1.0.1", + "module-error": "^1.0.1" }, "engines": { - "node": ">=6" + "node": ">=12" } }, - "node_modules/memdown/node_modules/immediate": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.2.3.tgz", - "integrity": "sha1-0UD6j2FGWb1lQSMwl92qwlzdmRw=", - "dev": true - }, "node_modules/memorystream": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", "dev": true, "engines": { "node": ">= 0.10.0" @@ -17384,12 +17266,6 @@ "node": ">=6" } }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", - "dev": true - }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -17399,83 +17275,35 @@ "node": ">= 8" } }, - "node_modules/merkle-patricia-tree": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-4.2.4.tgz", - "integrity": "sha512-eHbf/BG6eGNsqqfbLED9rIqbsF4+sykEaBn6OLNs71tjclbMcMOk1tEPmJKcNcNCLkvbpY/lwyOlizWsqPNo8w==", - "dev": true, - "dependencies": { - "@types/levelup": "^4.3.0", - "ethereumjs-util": "^7.1.4", - "level-mem": "^5.0.1", - "level-ws": "^2.0.0", - "readable-stream": "^3.6.0", - "semaphore-async-await": "^1.5.1" - } - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "braces": "^3.0.2", + "picomatch": "^2.3.1" }, "engines": { "node": ">=8.6" } }, - "node_modules/miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "dependencies": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "bin": { - "miller-rabin": "bin/miller-rabin" - } - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/mime-db": { - "version": "1.47.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", - "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==", + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { - "version": "2.1.30", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz", - "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==", + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "dependencies": { - "mime-db": "1.47.0" + "mime-db": "1.52.0" }, "engines": { "node": ">= 0.6" @@ -17490,24 +17318,6 @@ "node": ">=4" } }, - "node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", - "dev": true, - "dependencies": { - "dom-walk": "^0.1.0" - } - }, "node_modules/minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", @@ -17517,13 +17327,13 @@ "node_modules/minimalistic-crypto-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", "dev": true }, "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { "brace-expansion": "^1.1.7" @@ -17533,10 +17343,13 @@ } }, "node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/minimist-options": { "version": "3.0.2", @@ -17551,252 +17364,92 @@ "node": ">= 4" } }, - "node_modules/minipass": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", - "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "node_modules/minizlib": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", - "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", - "dev": true, - "dependencies": { - "minipass": "^2.9.0" - } - }, "node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, "dependencies": { - "minimist": "^1.2.5" + "minimist": "^1.2.6" }, "bin": { "mkdirp": "bin/cmd.js" } }, - "node_modules/mkdirp-promise": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz", - "integrity": "sha1-6bj2jlUsaKnBcTuEiD96HdA5uKE=", - "deprecated": "This package is broken and no longer maintained. 'mkdirp' itself supports promises now, please switch to that.", - "dev": true, - "dependencies": { - "mkdirp": "*" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/mnemonist": { - "version": "0.38.3", - "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.3.tgz", - "integrity": "sha512-2K9QYubXx/NAjv4VLq1d1Ly8pWNC5L3BrixtdkyTegXWJIqY+zLNDhhX/A+ZwWt70tB1S8H4BE8FLYEFyNoOBw==", + "version": "0.38.5", + "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz", + "integrity": "sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==", "dev": true, "dependencies": { - "obliterator": "^1.6.1" + "obliterator": "^2.0.0" } }, "node_modules/mocha": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", - "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.1.0.tgz", + "integrity": "sha512-vUF7IYxEoN7XhQpFLxQAEMtE4W91acW4B6En9l97MwE9stL1A9gusXfoHZCLVHDUJ/7V5+lbCM6yMqzo5vNymg==", "dev": true, "dependencies": { - "@ungap/promise-all-settled": "1.1.2", "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", "chokidar": "3.5.3", - "debug": "4.3.3", + "debug": "4.3.4", "diff": "5.0.0", "escape-string-regexp": "4.0.0", "find-up": "5.0.0", "glob": "7.2.0", - "growl": "1.10.5", "he": "1.2.0", "js-yaml": "4.1.0", "log-symbols": "4.1.0", - "minimatch": "4.2.1", + "minimatch": "5.0.1", "ms": "2.1.3", - "nanoid": "3.3.1", + "nanoid": "3.3.3", "serialize-javascript": "6.0.0", "strip-json-comments": "3.1.1", "supports-color": "8.1.1", - "which": "2.0.2", - "workerpool": "6.2.0", + "workerpool": "6.2.1", "yargs": "16.2.0", "yargs-parser": "20.2.4", "yargs-unparser": "2.0.0" }, "bin": { "_mocha": "bin/_mocha", - "mocha": "bin/mocha" + "mocha": "bin/mocha.js" }, "engines": { - "node": ">= 12.0.0" + "node": ">= 14.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/mochajs" } }, - "node_modules/mocha/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/mocha/node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/mocha/node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/mocha/node_modules/debug/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/mocha/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/mocha/node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/mocha/node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, "engines": { - "node": "*" - } - }, - "node_modules/mocha/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "node": ">=6" } }, - "node_modules/mocha/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "node_modules/mocha/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "balanced-match": "^1.0.0" } }, "node_modules/mocha/node_modules/minimatch": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", - "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" }, "engines": { "node": ">=10" @@ -17808,69 +17461,6 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, - "node_modules/mocha/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/mocha/node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/mocha/node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/mocha/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -17886,21 +17476,6 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/mocha/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/mocha/node_modules/yargs-parser": { "version": "20.2.4", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", @@ -17910,11 +17485,14 @@ "node": ">=10" } }, - "node_modules/mock-fs": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/mock-fs/-/mock-fs-4.14.0.tgz", - "integrity": "sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw==", - "dev": true + "node_modules/module-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/module-error/-/module-error-1.0.2.tgz", + "integrity": "sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==", + "dev": true, + "engines": { + "node": ">=10" + } }, "node_modules/ms": { "version": "2.1.2", @@ -17922,71 +17500,16 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "node_modules/multibase": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.6.1.tgz", - "integrity": "sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw==", - "deprecated": "This module has been superseded by the multiformats module", - "dev": true, - "dependencies": { - "base-x": "^3.0.8", - "buffer": "^5.5.0" - } - }, - "node_modules/multicodec": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-0.5.7.tgz", - "integrity": "sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA==", - "deprecated": "This module has been superseded by the multiformats module", - "dev": true, - "dependencies": { - "varint": "^5.0.0" - } - }, - "node_modules/multihashes": { - "version": "0.4.21", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-0.4.21.tgz", - "integrity": "sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw==", - "dev": true, - "dependencies": { - "buffer": "^5.5.0", - "multibase": "^0.7.0", - "varint": "^5.0.0" - } - }, - "node_modules/multihashes/node_modules/multibase": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.7.0.tgz", - "integrity": "sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg==", - "deprecated": "This module has been superseded by the multiformats module", - "dev": true, - "dependencies": { - "base-x": "^3.0.8", - "buffer": "^5.5.0" - } - }, "node_modules/mute-stream": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", - "dev": true - }, - "node_modules/nan": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", - "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", - "dev": true - }, - "node_modules/nano-json-stream-parser": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz", - "integrity": "sha1-DMj20OK2IrR5xA1JnEbWS3Vcb18=", + "integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==", "dev": true }, "node_modules/nanoid": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", - "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", "dev": true, "bin": { "nanoid": "bin/nanoid.cjs" @@ -17995,20 +17518,23 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/napi-macros": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.0.0.tgz", + "integrity": "sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg==", + "dev": true + }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, - "node_modules/negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", - "dev": true, - "engines": { - "node": ">= 0.6" - } + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true }, "node_modules/neo-async": { "version": "2.6.2", @@ -18016,12 +17542,6 @@ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, - "node_modules/next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", - "dev": true - }, "node_modules/nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", @@ -18035,12 +17555,12 @@ "dev": true }, "node_modules/node-emoji": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.10.0.tgz", - "integrity": "sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", + "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", "dev": true, "dependencies": { - "lodash.toarray": "^4.4.0" + "lodash": "^4.17.21" } }, "node_modules/node-environment-flags": { @@ -18083,9 +17603,9 @@ } }, "node_modules/node-gyp-build": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.2.3.tgz", - "integrity": "sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", + "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==", "dev": true, "bin": { "node-gyp-build": "bin.js", @@ -18105,7 +17625,7 @@ "node_modules/nopt": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==", "dev": true, "dependencies": { "abbrev": "1" @@ -18144,19 +17664,10 @@ "node": ">=0.10.0" } }, - "node_modules/normalize-url": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", - "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -18165,7 +17676,7 @@ "node_modules/number-to-bn": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", - "integrity": "sha1-uzYjWS9+X54AMLGXe9QaDFP+HqA=", + "integrity": "sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==", "dev": true, "dependencies": { "bn.js": "4.11.6", @@ -18179,7 +17690,7 @@ "node_modules/number-to-bn/node_modules/bn.js": { "version": "4.11.6", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", "dev": true }, "node_modules/oauth-sign": { @@ -18194,16 +17705,16 @@ "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/object-inspect": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", - "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -18219,32 +17730,30 @@ } }, "node_modules/object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", "dev": true, "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" }, "engines": { "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, "node_modules/object.getownpropertydescriptors": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz", - "integrity": "sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.5.tgz", + "integrity": "sha512-yDNzckpM6ntyQiGTik1fKV1DcVDRS+w8bvpWNCBanvH5LfRX9O8WTHqQzG4RZwRAM4I0oU7TV11Lj5v0g20ibw==", "dev": true, "dependencies": { + "array.prototype.reduce": "^1.0.5", "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" }, "engines": { "node": ">= 0.8" @@ -18254,36 +17763,15 @@ } }, "node_modules/obliterator": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-1.6.1.tgz", - "integrity": "sha512-9WXswnqINnnhOG/5SLimUlzuU1hFJUc8zkwyD59Sd+dPOMf05PmnYG/d6Q7HZ+KmgkZJa1PxRso6QdM3sTNHig==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.4.tgz", + "integrity": "sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==", "dev": true }, - "node_modules/oboe": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/oboe/-/oboe-2.1.5.tgz", - "integrity": "sha1-VVQoTFQ6ImbXo48X4HOCH73jk80=", - "dev": true, - "dependencies": { - "http-https": "^1.0.0" - } - }, - "node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true, - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "dependencies": { "wrappy": "1" @@ -18292,7 +17780,7 @@ "node_modules/onetime": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", "dev": true, "dependencies": { "mimic-fn": "^1.0.0" @@ -18318,17 +17806,17 @@ } }, "node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", "dev": true, "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" }, "engines": { "node": ">= 0.8.0" @@ -18337,7 +17825,7 @@ "node_modules/os-locale": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==", "dev": true, "dependencies": { "lcid": "^1.0.0" @@ -18349,52 +17837,40 @@ "node_modules/os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "dependencies": { - "p-try": "^1.0.0" + "yocto-queue": "^0.1.0" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "dependencies": { - "p-limit": "^1.1.0" + "p-limit": "^3.0.2" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-map": { @@ -18412,25 +17888,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-timeout": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", - "integrity": "sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=", - "dev": true, - "dependencies": { - "p-finally": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/parent-module": { @@ -18445,44 +17909,16 @@ "node": ">=6" } }, - "node_modules/parent-module/node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "dev": true, - "dependencies": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, "node_modules/parse-cache-control": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz", - "integrity": "sha1-juqz5U+laSD+Fro493+iGqzC104=", - "dev": true - }, - "node_modules/parse-headers": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.3.tgz", - "integrity": "sha512-QhhZ+DCCit2Coi2vmAKbq5RGTRcQUOE2+REgv8vdyu7MnYx2eZztegqtTx99TZ86GTIwqiy3+4nQTWZ2tgmdCA==", + "integrity": "sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==", "dev": true }, "node_modules/parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", "dev": true, "dependencies": { "error-ex": "^1.3.1", @@ -18492,90 +17928,70 @@ "node": ">=4" } }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/patch-package": { - "version": "6.4.7", - "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-6.4.7.tgz", - "integrity": "sha512-S0vh/ZEafZ17hbhgqdnpunKDfzHQibQizx9g8yEf5dcVk3KOflOfdufRXQX8CSEkyOQwuM/bNz1GwKvFj54kaQ==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-6.5.0.tgz", + "integrity": "sha512-tC3EqJmo74yKqfsMzELaFwxOAu6FH6t+FzFOsnWAuARm7/n2xB5AOeOueE221eM9gtMuIKMKpF9tBy/X2mNP0Q==", "dev": true, "dependencies": { "@yarnpkg/lockfile": "^1.1.0", - "chalk": "^2.4.2", + "chalk": "^4.1.2", "cross-spawn": "^6.0.5", "find-yarn-workspace-root": "^2.0.0", "fs-extra": "^7.0.1", "is-ci": "^2.0.0", "klaw-sync": "^6.0.0", - "minimist": "^1.2.0", + "minimist": "^1.2.6", "open": "^7.4.2", "rimraf": "^2.6.3", "semver": "^5.6.0", "slash": "^2.0.0", - "tmp": "^0.0.33" + "tmp": "^0.0.33", + "yaml": "^1.10.2" }, "bin": { "patch-package": "index.js" }, "engines": { + "node": ">=10", "npm": ">5" } }, - "node_modules/patch-package/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/patch-package/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "dev": true, "dependencies": { - "color-convert": "^1.9.0" + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" }, "engines": { - "node": ">=4" + "node": ">=4.8" } }, - "node_modules/patch-package/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/patch-package/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, "engines": { "node": ">=4" } }, - "node_modules/patch-package/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "node_modules/patch-package/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/patch-package/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/patch-package/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" } }, "node_modules/patch-package/node_modules/semver": { @@ -18587,16 +18003,46 @@ "semver": "bin/semver" } }, - "node_modules/patch-package/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/patch-package/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", "dev": true, "dependencies": { - "has-flag": "^3.0.0" + "shebang-regex": "^1.0.0" }, "engines": { - "node": ">=4" + "node": ">=0.10.0" + } + }, + "node_modules/patch-package/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/patch-package/node_modules/slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/patch-package/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" } }, "node_modules/path-browserify": { @@ -18606,18 +18052,18 @@ "dev": true }, "node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -18626,40 +18072,31 @@ "node_modules/path-is-inside": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", "dev": true }, "node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true - }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, "node_modules/path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, - "dependencies": { - "pify": "^3.0.0" - }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/pathval": { @@ -18690,13 +18127,13 @@ "node_modules/performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", "dev": true }, "node_modules/picomatch": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz", - "integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "engines": { "node": ">=8.6" @@ -18708,7 +18145,7 @@ "node_modules/pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "dev": true, "engines": { "node": ">=4" @@ -18717,7 +18154,7 @@ "node_modules/pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -18726,7 +18163,7 @@ "node_modules/pinkie-promise": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", "dev": true, "dependencies": { "pinkie": "^2.0.0" @@ -18799,24 +18236,6 @@ "node": ">=8" } }, - "node_modules/pkg-dir/node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-dir/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/postinstall-postinstall": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/postinstall-postinstall/-/postinstall-postinstall-2.1.0.tgz", @@ -18825,57 +18244,25 @@ "hasInstallScript": true }, "node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, "engines": { "node": ">= 0.8.0" } }, - "node_modules/prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/prettier": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.1.tgz", - "integrity": "sha512-8UVbTBYGwN37Bs9LERmxCPjdvPxlEowx2urIL6urHzdb3SDq4B/Z6xLFCblrSnE4iKWcS6ziJ3aOYrc1kz/E2A==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", + "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", "dev": true, + "optional": true, "bin": { "prettier": "bin-prettier.js" }, "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/printj": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/printj/-/printj-1.3.1.tgz", - "integrity": "sha512-GA3TdL8szPK4AQ2YnOe/b+Y1jUFwmmGMMK/qbY7VcE3Z7FU8JstbKiKRzO6CIiAKPhTO8m01NoQ0V5f3jc4OGg==", - "dev": true, - "bin": { - "printj": "bin/printj.njs" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true, - "engines": { - "node": ">= 0.6.0" + "node": ">=4" } }, "node_modules/process-nextick-args": { @@ -18894,9 +18281,9 @@ } }, "node_modules/promise": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/promise/-/promise-8.1.0.tgz", - "integrity": "sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", "dev": true, "dependencies": { "asap": "~2.0.6" @@ -18926,91 +18313,40 @@ "signal-exit": "^3.0.2" } }, - "node_modules/proxy-addr": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", - "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", - "dev": true, - "dependencies": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true - }, "node_modules/psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", "dev": true }, - "node_modules/public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "node_modules/punycode": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", - "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=", + "integrity": "sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA==", "dev": true, "engines": { "node": ">=6" } }, "node_modules/qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/query-string": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", - "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", "dev": true, "dependencies": { - "decode-uri-component": "^0.2.0", - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" + "side-channel": "^1.0.4" }, "engines": { - "node": ">=0.10.0" + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/querystring": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", "dev": true, "engines": { @@ -19040,7 +18376,7 @@ "node_modules/quick-lru": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", - "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", + "integrity": "sha512-tRS7sTgyxMXtLum8L65daJnHUhfDUgboRdcWW2bR9vBfrj2+O5HSMbQOJfJJjIVSPFqbBCF37FpwWXGitDc5tA==", "dev": true, "engines": { "node": ">=4" @@ -19055,33 +18391,14 @@ "safe-buffer": "^5.1.0" } }, - "node_modules/randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "dependencies": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/raw-body": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.1.tgz", - "integrity": "sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", "dev": true, "dependencies": { - "bytes": "3.1.0", - "http-errors": "1.7.3", + "bytes": "3.1.2", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", "unpipe": "1.0.0" }, @@ -19092,7 +18409,7 @@ "node_modules/read-pkg": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", "dev": true, "dependencies": { "load-json-file": "^4.0.0", @@ -19106,7 +18423,7 @@ "node_modules/read-pkg-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "integrity": "sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==", "dev": true, "dependencies": { "find-up": "^2.0.0", @@ -19116,6 +18433,85 @@ "node": ">=4" } }, + "node_modules/read-pkg-up/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", @@ -19131,9 +18527,9 @@ } }, "node_modules/readdirp": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", - "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, "dependencies": { "picomatch": "^2.2.1" @@ -19145,7 +18541,7 @@ "node_modules/rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", "dev": true, "dependencies": { "resolve": "^1.1.6" @@ -19155,21 +18551,21 @@ } }, "node_modules/recursive-readdir": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", - "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", + "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", "dev": true, "dependencies": { - "minimatch": "3.0.4" + "minimatch": "^3.0.5" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.0.0" } }, "node_modules/redent": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", - "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", + "integrity": "sha512-XNwrTx77JQCEMXTeb8movBKuK75MgH0RZkujNuDKCezemx/voapl9i2gCSi8WWm8+ox5ycJi1gxF22fR7c0Ciw==", "dev": true, "dependencies": { "indent-string": "^3.0.0", @@ -19179,19 +18575,48 @@ "node": ">=4" } }, + "node_modules/redent/node_modules/indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true, "engines": { - "node": ">=6.5.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" } }, "node_modules/req-cwd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/req-cwd/-/req-cwd-2.0.0.tgz", - "integrity": "sha1-1AgrTURZgDZkD7c93qAe1T20nrw=", + "integrity": "sha512-ueoIoLo1OfB6b05COxAA9UpeoscNpYyM+BqYlA7H6LVF4hKGPXQQSSaD2YmvDVJMkk4UDpAHIeU1zG53IqjvlQ==", "dev": true, "dependencies": { "req-from": "^2.0.0" @@ -19203,7 +18628,7 @@ "node_modules/req-from": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/req-from/-/req-from-2.0.0.tgz", - "integrity": "sha1-10GI5H+TeW9Kpx327jWuaJ8+DnA=", + "integrity": "sha512-LzTfEVDVQHBRfjOUMgNBA+V6DWsSnoeKzf42J7l0xa/B4jyPOuuF5MlNSmomLNGemWTnV2TIdjSSLnEn95fOQA==", "dev": true, "dependencies": { "resolve-from": "^3.0.0" @@ -19212,6 +18637,15 @@ "node": ">=4" } }, + "node_modules/req-from/node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/request": { "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", @@ -19277,10 +18711,43 @@ "request": "^2.34" } }, + "node_modules/request/node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/request/node_modules/qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/request/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "dev": true, + "bin": { + "uuid": "bin/uuid" + } + }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, "engines": { "node": ">=0.10.0" @@ -19298,16 +18765,15 @@ "node_modules/require-main-filename": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==", "dev": true }, "node_modules/resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", "dev": true, "dependencies": { - "is-core-module": "^2.2.0", "path-parse": "^1.0.6" }, "funding": { @@ -19315,27 +18781,18 @@ } }, "node_modules/resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, "engines": { "node": ">=4" } }, - "node_modules/responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "dev": true, - "dependencies": { - "lowercase-keys": "^1.0.0" - } - }, "node_modules/restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", "dev": true, "dependencies": { "onetime": "^2.0.0", @@ -19348,7 +18805,7 @@ "node_modules/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", "dev": true, "engines": { "node": ">= 4" @@ -19365,15 +18822,18 @@ } }, "node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "dependencies": { "glob": "^7.1.3" }, "bin": { "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/ripemd160": { @@ -19387,12 +18847,12 @@ } }, "node_modules/rlp": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.6.tgz", - "integrity": "sha512-HAfAmL6SDYNWPUOJNrM500x4Thn4PZsEy5pijPh40U9WfNk0z15hUYzO9xVIMAdIHdFtD8CBDHd75Td1g36Mjg==", + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", + "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", "dev": true, "dependencies": { - "bn.js": "^4.11.1" + "bn.js": "^5.2.0" }, "bin": { "rlp": "bin/rlp" @@ -19430,6 +18890,29 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/run-parallel-limit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz", + "integrity": "sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, "node_modules/rustbn.js": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/rustbn.js/-/rustbn.js-0.2.0.tgz", @@ -19468,6 +18951,20 @@ } ] }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -19499,29 +18996,25 @@ "istanbul": "lib/cli.js" } }, + "node_modules/sc-istanbul/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, "node_modules/sc-istanbul/node_modules/async": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==", "dev": true }, - "node_modules/sc-istanbul/node_modules/esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/sc-istanbul/node_modules/glob": { "version": "5.0.15", "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "integrity": "sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==", "dev": true, "dependencies": { "inflight": "^1.0.4", @@ -19537,22 +19030,48 @@ "node_modules/sc-istanbul/node_modules/has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", "dev": true, "engines": { "node": ">=0.10.0" } }, + "node_modules/sc-istanbul/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/sc-istanbul/node_modules/js-yaml/node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/sc-istanbul/node_modules/resolve": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "integrity": "sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==", "dev": true }, "node_modules/sc-istanbul/node_modules/supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", "dev": true, "dependencies": { "has-flag": "^1.0.0" @@ -19561,6 +19080,18 @@ "node": ">=0.8.0" } }, + "node_modules/sc-istanbul/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, "node_modules/scrypt-js": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", @@ -19568,13 +19099,13 @@ "dev": true }, "node_modules/secp256k1": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.2.tgz", - "integrity": "sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", + "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", "dev": true, "hasInstallScript": true, "dependencies": { - "elliptic": "^6.5.2", + "elliptic": "^6.5.4", "node-addon-api": "^2.0.0", "node-gyp-build": "^4.2.0" }, @@ -19582,15 +19113,6 @@ "node": ">=10.0.0" } }, - "node_modules/semaphore-async-await": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/semaphore-async-await/-/semaphore-async-await-1.5.1.tgz", - "integrity": "sha1-hXvvXjZEYBykuVcLh+nfXKEpdPo=", - "dev": true, - "engines": { - "node": ">=4.1" - } - }, "node_modules/semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -19600,51 +19122,6 @@ "semver": "bin/semver.js" } }, - "node_modules/send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.7.2", - "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - }, "node_modules/serialize-javascript": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", @@ -19654,53 +19131,22 @@ "randombytes": "^2.1.0" } }, - "node_modules/serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", - "dev": true, - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/servify": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/servify/-/servify-0.1.12.tgz", - "integrity": "sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw==", - "dev": true, - "dependencies": { - "body-parser": "^1.16.0", - "cors": "^2.8.1", - "express": "^4.14.0", - "request": "^2.79.0", - "xhr": "^2.3.3" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dev": true }, "node_modules/setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", "dev": true }, "node_modules/setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "dev": true }, "node_modules/sha.js": { @@ -19719,7 +19165,7 @@ "node_modules/sha1": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/sha1/-/sha1-1.1.1.tgz", - "integrity": "sha1-rdqnqTFo85PxnrKxUJFhjicA+Eg=", + "integrity": "sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA==", "dev": true, "dependencies": { "charenc": ">= 0.0.1", @@ -19730,24 +19176,24 @@ } }, "node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "dependencies": { - "shebang-regex": "^1.0.0" + "shebang-regex": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/shelljs": { @@ -19782,46 +19228,15 @@ } }, "node_modules/signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, - "node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/simple-get": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.8.1.tgz", - "integrity": "sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw==", - "dev": true, - "dependencies": { - "decompress-response": "^3.3.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, "node_modules/simple-git": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.10.0.tgz", - "integrity": "sha512-2w35xrS5rVtAW0g67LqtxCZN5cdddz/woQRfS0OJXaljXEoTychZ4jnE+CQgra/wX4ZvHeiChTUMenCwfIYEYw==", + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.14.1.tgz", + "integrity": "sha512-1ThF4PamK9wBORVGMK9HK5si4zoGS2GpRO7tkAFObA4FZv6dKaCVHLQT+8zlgiBm6K2h+wEU9yOaFCu/SR3OyA==", "dev": true, "dependencies": { "@kwsites/file-exists": "^1.1.1", @@ -19840,55 +19255,40 @@ "dev": true }, "node_modules/slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, "dependencies": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" }, "engines": { - "node": ">=6" - } - }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" + "node": ">=10" }, - "engines": { - "node": ">=4" + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/slice-ansi/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, - "dependencies": { - "color-name": "1.1.3" + "engines": { + "node": ">=8" } }, - "node_modules/slice-ansi/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, "node_modules/solc": { "version": "0.6.12", "resolved": "https://registry.npmjs.org/solc/-/solc-0.6.12.tgz", @@ -19911,10 +19311,16 @@ "node": ">=8.0.0" } }, + "node_modules/solc/node_modules/commander": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", + "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", + "dev": true + }, "node_modules/solc/node_modules/fs-extra": { "version": "0.30.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", - "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", + "integrity": "sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==", "dev": true, "dependencies": { "graceful-fs": "^4.1.2", @@ -19924,21 +19330,27 @@ "rimraf": "^2.2.8" } }, - "node_modules/solc/node_modules/js-sha3": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", - "dev": true - }, "node_modules/solc/node_modules/jsonfile": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", "dev": true, "optionalDependencies": { "graceful-fs": "^4.1.6" } }, + "node_modules/solc/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, "node_modules/solc/node_modules/semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -19974,6 +19386,27 @@ "prettier": "^1.14.3" } }, + "node_modules/solhint/node_modules/acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/solhint/node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/solhint/node_modules/ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -19986,6 +19419,24 @@ "node": ">=4" } }, + "node_modules/solhint/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/solhint/node_modules/astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/solhint/node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -20012,7 +19463,7 @@ "node_modules/solhint/node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, "node_modules/solhint/node_modules/commander": { @@ -20021,10 +19472,211 @@ "integrity": "sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ==", "dev": true }, + "node_modules/solhint/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/solhint/node_modules/cross-spawn/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/solhint/node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "node_modules/solhint/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/solhint/node_modules/eslint": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz", + "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.9.1", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^4.0.3", + "eslint-utils": "^1.3.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^5.0.1", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.7.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^6.2.2", + "js-yaml": "^3.13.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.11", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^5.5.1", + "strip-ansi": "^4.0.0", + "strip-json-comments": "^2.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^6.14.0 || ^8.10.0 || >=9.10.0" + } + }, + "node_modules/solhint/node_modules/eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/solhint/node_modules/eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/solhint/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/solhint/node_modules/eslint/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/solhint/node_modules/espree": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", + "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", + "dev": true, + "dependencies": { + "acorn": "^6.0.7", + "acorn-jsx": "^5.0.0", + "eslint-visitor-keys": "^1.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/solhint/node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/solhint/node_modules/file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "dependencies": { + "flat-cache": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/solhint/node_modules/flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "dependencies": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/solhint/node_modules/flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, + "node_modules/solhint/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/solhint/node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, "engines": { "node": ">=4" @@ -20039,19 +19691,179 @@ "node": ">= 4" } }, - "node_modules/solhint/node_modules/prettier": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", - "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", + "node_modules/solhint/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, - "optional": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, "bin": { - "prettier": "bin-prettier.js" + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/solhint/node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/solhint/node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/solhint/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/solhint/node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/solhint/node_modules/regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true, + "engines": { + "node": ">=6.5.0" + } + }, + "node_modules/solhint/node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/solhint/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/solhint/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/solhint/node_modules/slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/solhint/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/solhint/node_modules/string-width/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/solhint/node_modules/string-width/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/solhint/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" }, "engines": { "node": ">=4" } }, + "node_modules/solhint/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/solhint/node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -20064,39 +19876,101 @@ "node": ">=4" } }, + "node_modules/solhint/node_modules/table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "dependencies": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/solhint/node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/solhint/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, "node_modules/solidity-ast": { - "version": "0.4.31", - "resolved": "https://registry.npmjs.org/solidity-ast/-/solidity-ast-0.4.31.tgz", - "integrity": "sha512-kX6o4XE4ihaqENuRRTMJfwQNHoqWusPENZUlX4oVb19gQdfi7IswFWnThONHSW/61umgfWdKtCBgW45iuOTryQ==", + "version": "0.4.35", + "resolved": "https://registry.npmjs.org/solidity-ast/-/solidity-ast-0.4.35.tgz", + "integrity": "sha512-F5bTDLh3rmDxRmLSrs3qt3nvxJprWSEkS7h2KmuXDx7XTfJ6ZKVTV1rtPIYCqJAuPsU/qa8YUeFn7jdOAZcTPA==", "dev": true }, "node_modules/solidity-coverage": { - "version": "0.7.20", - "resolved": "https://registry.npmjs.org/solidity-coverage/-/solidity-coverage-0.7.20.tgz", - "integrity": "sha512-edOXTugUYdqxrtEnIn4vgrGjLPxdexcL0WD8LzAvVA3d1dwgcfRO3k8xQR02ZQnOnWMBi8Cqs0F+kAQQp3JW8g==", + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/solidity-coverage/-/solidity-coverage-0.8.2.tgz", + "integrity": "sha512-cv2bWb7lOXPE9/SSleDO6czkFiMHgP4NXPj+iW9W7iEKLBk7Cj0AGBiNmGX3V1totl9wjPrT0gHmABZKZt65rQ==", "dev": true, "dependencies": { - "@solidity-parser/parser": "^0.14.0", - "@truffle/provider": "^0.2.24", + "@ethersproject/abi": "^5.0.9", + "@solidity-parser/parser": "^0.14.1", "chalk": "^2.4.2", "death": "^1.1.0", "detect-port": "^1.3.0", + "difflib": "^0.2.4", "fs-extra": "^8.1.0", "ghost-testrpc": "^0.0.2", "global-modules": "^2.0.0", "globby": "^10.0.1", "jsonschema": "^1.2.4", "lodash": "^4.17.15", + "mocha": "7.1.2", "node-emoji": "^1.10.0", "pify": "^4.0.1", "recursive-readdir": "^2.2.2", "sc-istanbul": "^0.4.5", "semver": "^7.3.4", "shelljs": "^0.8.3", - "web3-utils": "^1.3.0" + "web3-utils": "^1.3.6" }, "bin": { "solidity-coverage": "plugins/bin.js" + }, + "peerDependencies": { + "hardhat": "^2.11.0" + } + }, + "node_modules/solidity-coverage/node_modules/ansi-colors": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", + "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/solidity-coverage/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true, + "engines": { + "node": ">=6" } }, "node_modules/solidity-coverage/node_modules/ansi-styles": { @@ -20111,6 +19985,24 @@ "node": ">=4" } }, + "node_modules/solidity-coverage/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/solidity-coverage/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/solidity-coverage/node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -20125,6 +20017,38 @@ "node": ">=4" } }, + "node_modules/solidity-coverage/node_modules/chokidar": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", + "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.2.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.1.1" + } + }, + "node_modules/solidity-coverage/node_modules/cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "dependencies": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, "node_modules/solidity-coverage/node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -20137,9 +20061,80 @@ "node_modules/solidity-coverage/node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, + "node_modules/solidity-coverage/node_modules/debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/solidity-coverage/node_modules/diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/solidity-coverage/node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "node_modules/solidity-coverage/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/solidity-coverage/node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/solidity-coverage/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/solidity-coverage/node_modules/flat": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.1.tgz", + "integrity": "sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==", + "dev": true, + "dependencies": { + "is-buffer": "~2.0.3" + }, + "bin": { + "flat": "cli.js" + } + }, "node_modules/solidity-coverage/node_modules/fs-extra": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", @@ -20154,15 +20149,116 @@ "node": ">=6 <7 || >=8" } }, + "node_modules/solidity-coverage/node_modules/fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "deprecated": "\"Please update to latest v2.3 or v2.2\"", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/solidity-coverage/node_modules/glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/solidity-coverage/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/solidity-coverage/node_modules/globby": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", + "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", + "dev": true, + "dependencies": { + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/solidity-coverage/node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, "engines": { "node": ">=4" } }, + "node_modules/solidity-coverage/node_modules/js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/solidity-coverage/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/solidity-coverage/node_modules/log-symbols": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", + "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/solidity-coverage/node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -20175,6 +20271,127 @@ "node": ">=10" } }, + "node_modules/solidity-coverage/node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/solidity-coverage/node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/solidity-coverage/node_modules/mocha": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.1.2.tgz", + "integrity": "sha512-o96kdRKMKI3E8U0bjnfqW4QMk12MwZ4mhdBTf+B5a1q9+aq2HRnj+3ZdJu0B/ZhJeK78MgYuv6L8d/rA5AeBJA==", + "dev": true, + "dependencies": { + "ansi-colors": "3.2.3", + "browser-stdout": "1.3.1", + "chokidar": "3.3.0", + "debug": "3.2.6", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "find-up": "3.0.0", + "glob": "7.1.3", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "3.13.1", + "log-symbols": "3.0.0", + "minimatch": "3.0.4", + "mkdirp": "0.5.5", + "ms": "2.1.1", + "node-environment-flags": "1.0.6", + "object.assign": "4.1.0", + "strip-json-comments": "2.0.1", + "supports-color": "6.0.0", + "which": "1.3.1", + "wide-align": "1.1.3", + "yargs": "13.3.2", + "yargs-parser": "13.1.2", + "yargs-unparser": "1.6.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mochajs" + } + }, + "node_modules/solidity-coverage/node_modules/mocha/node_modules/supports-color": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", + "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/solidity-coverage/node_modules/ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "node_modules/solidity-coverage/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/solidity-coverage/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/solidity-coverage/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/solidity-coverage/node_modules/pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", @@ -20184,10 +20401,28 @@ "node": ">=6" } }, + "node_modules/solidity-coverage/node_modules/readdirp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", + "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", + "dev": true, + "dependencies": { + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/solidity-coverage/node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, "node_modules/solidity-coverage/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -20199,6 +20434,41 @@ "node": ">=10" } }, + "node_modules/solidity-coverage/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/solidity-coverage/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/solidity-coverage/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/solidity-coverage/node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -20211,31 +20481,124 @@ "node": ">=4" } }, + "node_modules/solidity-coverage/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/solidity-coverage/node_modules/which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", + "dev": true + }, + "node_modules/solidity-coverage/node_modules/wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/solidity-coverage/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, "node_modules/solidity-coverage/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, + "node_modules/solidity-coverage/node_modules/yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "dependencies": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "node_modules/solidity-coverage/node_modules/yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "node_modules/solidity-coverage/node_modules/yargs-unparser": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", + "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", + "dev": true, + "dependencies": { + "flat": "^4.1.0", + "lodash": "^4.17.15", + "yargs": "^13.3.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", + "integrity": "sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA==", "dev": true, + "optional": true, + "dependencies": { + "amdefine": ">=0.0.4" + }, "engines": { - "node": ">=0.10.0" + "node": ">=0.8.0" } }, "node_modules/source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" } }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/spdx-correct": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", @@ -20263,21 +20626,21 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", - "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==", + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", "dev": true }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, "node_modules/sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", "dev": true, "dependencies": { "asn1": "~0.2.3", @@ -20299,6 +20662,12 @@ "node": ">=0.10.0" } }, + "node_modules/sshpk/node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true + }, "node_modules/stacktrace-parser": { "version": "0.1.10", "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", @@ -20321,30 +20690,30 @@ } }, "node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "node_modules/stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==", "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/strict-uri-encode": { + "node_modules/streamsearch": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=10.0.0" } }, "node_modules/string_decoder": { @@ -20369,48 +20738,71 @@ "node": ">=4" } }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "dependencies": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, "engines": { "node": ">=4" @@ -20419,7 +20811,7 @@ "node_modules/strip-hex-prefix": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", - "integrity": "sha1-DF8VX+8RUTczd96du1iNoFUA428=", + "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==", "dev": true, "dependencies": { "is-hex-prefixed": "1.0.0" @@ -20432,19 +20824,22 @@ "node_modules/strip-indent": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", - "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", + "integrity": "sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/strip-outer": { @@ -20459,6 +20854,15 @@ "node": ">=0.10.0" } }, + "node_modules/strip-outer/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -20471,131 +20875,6 @@ "node": ">=8" } }, - "node_modules/swarm-js": { - "version": "0.1.40", - "resolved": "https://registry.npmjs.org/swarm-js/-/swarm-js-0.1.40.tgz", - "integrity": "sha512-yqiOCEoA4/IShXkY3WKwP5PvZhmoOOD8clsKA7EEcRILMkTEYHCQ21HDCAcVpmIxZq4LyZvWeRJ6quIyHk1caA==", - "dev": true, - "dependencies": { - "bluebird": "^3.5.0", - "buffer": "^5.0.5", - "eth-lib": "^0.1.26", - "fs-extra": "^4.0.2", - "got": "^7.1.0", - "mime-types": "^2.1.16", - "mkdirp-promise": "^5.0.1", - "mock-fs": "^4.1.0", - "setimmediate": "^1.0.5", - "tar": "^4.0.2", - "xhr-request": "^1.0.1" - } - }, - "node_modules/swarm-js/node_modules/eth-lib": { - "version": "0.1.29", - "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.1.29.tgz", - "integrity": "sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ==", - "dev": true, - "dependencies": { - "bn.js": "^4.11.6", - "elliptic": "^6.4.0", - "nano-json-stream-parser": "^0.1.2", - "servify": "^0.1.12", - "ws": "^3.0.0", - "xhr-request-promise": "^0.1.2" - } - }, - "node_modules/swarm-js/node_modules/fs-extra": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", - "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "node_modules/swarm-js/node_modules/get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/swarm-js/node_modules/got": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", - "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", - "dev": true, - "dependencies": { - "decompress-response": "^3.2.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "is-plain-obj": "^1.1.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", - "isurl": "^1.0.0-alpha5", - "lowercase-keys": "^1.0.0", - "p-cancelable": "^0.3.0", - "p-timeout": "^1.1.1", - "safe-buffer": "^5.0.1", - "timed-out": "^4.0.0", - "url-parse-lax": "^1.0.0", - "url-to-options": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/swarm-js/node_modules/p-cancelable": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", - "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/swarm-js/node_modules/prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/swarm-js/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/swarm-js/node_modules/url-parse-lax": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", - "dev": true, - "dependencies": { - "prepend-http": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/swarm-js/node_modules/ws": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", - "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", - "dev": true, - "dependencies": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0", - "ultron": "~1.1.0" - } - }, "node_modules/sync-request": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/sync-request/-/sync-request-6.1.0.tgz", @@ -20620,77 +20899,70 @@ } }, "node_modules/table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", + "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", "dev": true, "dependencies": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=6.0.0" + "node": ">=10.0.0" } }, - "node_modules/table/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/table/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "node_modules/table/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "dev": true, "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" }, - "engines": { - "node": ">=6" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/table/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "node_modules/table/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/tar": { - "version": "4.4.13", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", - "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "node_modules/table/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/table/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "dependencies": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.8.6", - "minizlib": "^1.2.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.3" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=4.5" + "node": ">=8" } }, "node_modules/test-value": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/test-value/-/test-value-2.1.0.tgz", - "integrity": "sha1-Edpv9nDzRxpztiXKTz/c97t0gpE=", + "integrity": "sha512-+1epbAxtKeXttkGFMTX9H42oqzOTufR1ceCF+GYA5aOmvaPq9wd4PUS8329fn2RRLGNeUkgRLnVpycjx8DsO2w==", "dev": true, "dependencies": { "array-back": "^1.0.3", @@ -20703,7 +20975,7 @@ "node_modules/test-value/node_modules/array-back": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz", - "integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=", + "integrity": "sha512-1WxbZvrmyhkNoeYcizokbmh5oiOCIfyvGtcqbK3Ls1v1fKcquzxnQSceOx6tzq7jmai2kFLWIpGND2cLhH6TPw==", "dev": true, "dependencies": { "typical": "^2.6.0" @@ -20722,7 +20994,7 @@ "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, "node_modules/then-request": { @@ -20753,21 +21025,26 @@ "integrity": "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==", "dev": true }, + "node_modules/then-request/node_modules/form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", "dev": true }, - "node_modules/timed-out": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -20780,15 +21057,6 @@ "node": ">=0.6.0" } }, - "node_modules/to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -20802,9 +21070,9 @@ } }, "node_modules/toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true, "engines": { "node": ">=0.6" @@ -20835,13 +21103,13 @@ "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", "dev": true }, "node_modules/trim-newlines": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", - "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=", + "integrity": "sha512-MTBWv3jhVjTU7XR3IQHllbiJs8sc75a80OEhB6or/q7pLTWgQ0bMGQXXYQSrSuXe6WiKWDZ5txXY5P59a/coVA==", "dev": true, "engines": { "node": ">=4" @@ -20850,7 +21118,7 @@ "node_modules/trim-repeated": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", - "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=", + "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==", "dev": true, "dependencies": { "escape-string-regexp": "^1.0.2" @@ -20859,11 +21127,14 @@ "node": ">=0.10.0" } }, - "node_modules/true-case-path": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-2.2.1.tgz", - "integrity": "sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q==", - "dev": true + "node_modules/trim-repeated/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } }, "node_modules/ts-essentials": { "version": "1.0.4", @@ -20929,18 +21200,42 @@ "node_modules/ts-generator/node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, + "node_modules/ts-generator/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/ts-generator/node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, "engines": { "node": ">=4" } }, + "node_modules/ts-generator/node_modules/prettier": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, "node_modules/ts-generator/node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -20954,12 +21249,12 @@ } }, "node_modules/ts-node": { - "version": "10.7.0", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.7.0.tgz", - "integrity": "sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A==", + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", "dev": true, "dependencies": { - "@cspotcode/source-map-support": "0.7.0", + "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", "@tsconfig/node12": "^1.0.7", "@tsconfig/node14": "^1.0.0", @@ -20970,7 +21265,7 @@ "create-require": "^1.1.0", "diff": "^4.0.1", "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.0", + "v8-compile-cache-lib": "^3.0.1", "yn": "3.1.1" }, "bin": { @@ -20990,22 +21285,10 @@ "peerDependenciesMeta": { "@swc/core": { "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "node_modules/ts-node/node_modules/acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" + }, + "@swc/wasm": { + "optional": true + } } }, "node_modules/ts-node/node_modules/diff": { @@ -21026,13 +21309,28 @@ "node_modules/tsort": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/tsort/-/tsort-0.0.1.tgz", - "integrity": "sha1-4igPXoF/i/QnVlf9D5rr1E9aJ4Y=", + "integrity": "sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==", "dev": true }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", "dev": true, "dependencies": { "safe-buffer": "^5.0.1" @@ -21042,9 +21340,9 @@ } }, "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", "dev": true }, "node_modules/tweetnacl-util": { @@ -21053,19 +21351,13 @@ "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==", "dev": true }, - "node_modules/type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", - "dev": true - }, "node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, "dependencies": { - "prelude-ls": "~1.1.2" + "prelude-ls": "^1.2.1" }, "engines": { "node": ">= 0.8.0" @@ -21081,9 +21373,9 @@ } }, "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, "engines": { "node": ">=10" @@ -21092,19 +21384,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/typechain": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/typechain/-/typechain-3.0.0.tgz", @@ -21123,12 +21402,6 @@ "typechain": "dist/cli/cli.js" } }, - "node_modules/typechain/node_modules/js-sha3": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", - "dev": true - }, "node_modules/typechain/node_modules/ts-essentials": { "version": "6.0.7", "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-6.0.7.tgz", @@ -21141,22 +21414,13 @@ "node_modules/typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", "dev": true }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, "node_modules/typescript": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.3.tgz", - "integrity": "sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==", + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", + "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -21169,13 +21433,13 @@ "node_modules/typical": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/typical/-/typical-2.6.1.tgz", - "integrity": "sha1-XAgOXWYcu+OCWdLnCjxyU+hziB0=", + "integrity": "sha512-ofhi8kjIje6npGozTip9Fr8iecmYfEbS06i0JnIg+rh51KakryWF4+jX8lLKZVhy6N+ID45WYSFCxPOdTWCzNg==", "dev": true }, "node_modules/uglify-js": { - "version": "3.13.6", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.13.6.tgz", - "integrity": "sha512-rRprLwl8RVaS+Qvx3Wh5hPfPBn9++G6xkGlUupya0s5aDmNjI7z3lnRLB3u7sN4OmbB0pWgzhM9BEJyiWAwtAA==", + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", "dev": true, "optional": true, "bin": { @@ -21185,38 +21449,29 @@ "node": ">=0.8.0" } }, - "node_modules/ultron": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", - "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", - "dev": true - }, "node_modules/unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", "which-boxed-primitive": "^1.0.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/underscore": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz", - "integrity": "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==", - "dev": true - }, "node_modules/undici": { - "version": "4.16.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-4.16.0.tgz", - "integrity": "sha512-tkZSECUYi+/T1i4u+4+lwZmQgLXd4BLGlrc7KZPcLIW7Jpq99+Xpc30ONv7nS6F5UNOxp/HBZSSL9MafUrvJbw==", + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.12.0.tgz", + "integrity": "sha512-zMLamCG62PGjd9HHMpo05bSLvvwWOZgGeiWlN/vlqu3+lRo3elxktVGEyLMX+IO7c2eflLjcW74AlkhEZm15mg==", "dev": true, + "dependencies": { + "busboy": "^1.6.0" + }, "engines": { "node": ">=12.18" } @@ -21233,7 +21488,7 @@ "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "dev": true, "engines": { "node": ">= 0.8" @@ -21251,105 +21506,44 @@ "node_modules/url": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", "dev": true, "dependencies": { "punycode": "1.3.2", "querystring": "0.2.0" } }, - "node_modules/url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "dev": true, - "dependencies": { - "prepend-http": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/url-set-query": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-set-query/-/url-set-query-1.0.0.tgz", - "integrity": "sha1-AW6M/Xwg7gXK/neV6JK9BwL6ozk=", - "dev": true - }, - "node_modules/url-to-options": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", - "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=", - "dev": true, - "engines": { - "node": ">= 4" - } - }, "node_modules/url/node_modules/punycode": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", "dev": true }, - "node_modules/utf-8-validate": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.5.tgz", - "integrity": "sha512-+pnxRYsS/axEpkrrEpzYfNZGXp0IjC/9RIxwM5gntY4Koi8SHmUGSfxfWqxZdRxrtaoVstuOzUp/rbs3JSPELQ==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "node-gyp-build": "^4.2.0" - } - }, "node_modules/utf8": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==", "dev": true }, - "node_modules/util": { - "version": "0.12.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.3.tgz", - "integrity": "sha512-I8XkoQwE+fPQEhy9v012V+TSdH2kp9ts29i20TaaDUXsg7x/onePbhFJUExBfv/2ay1ZOp/Vsm3nDlmnFGSAog==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "safe-buffer": "^5.1.2", - "which-typed-array": "^1.1.2" - } - }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "dev": true, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true, "bin": { - "uuid": "bin/uuid" + "uuid": "dist/bin/uuid" } }, "node_modules/v8-compile-cache-lib": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.0.tgz", - "integrity": "sha512-mpSYqfsFvASnSn5qMiwrr4VKfumbPyONLCOPmsR3A6pTY/r0+tSaVbgPWSAIuzbk3lCTa+FForeTiO+wBQGkjA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", "dev": true }, "node_modules/validate-npm-package-license": { @@ -21362,25 +21556,10 @@ "spdx-expression-parse": "^3.0.0" } }, - "node_modules/varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==", - "dev": true - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", "dev": true, "engines": [ "node >=0.6.0" @@ -21391,411 +21570,18 @@ "extsprintf": "^1.2.0" } }, - "node_modules/web3": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/web3/-/web3-1.3.5.tgz", - "integrity": "sha512-UyQW/MT5EIGBrXPCh/FDIaD7RtJTn5/rJUNw2FOglp0qoXnCQHNKvntiR1ylztk05fYxIF6UgsC76IrazlKJjw==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "web3-bzz": "1.3.5", - "web3-core": "1.3.5", - "web3-eth": "1.3.5", - "web3-eth-personal": "1.3.5", - "web3-net": "1.3.5", - "web3-shh": "1.3.5", - "web3-utils": "1.3.5" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-bzz": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.3.5.tgz", - "integrity": "sha512-XiEUAbB1uKm/agqfwBsCW8fbw+sma85TfwuDpdcy591vinVk0S9TfWgLxro6v1KJ6nSELySIbKGbAJbh2GSyxw==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "@types/node": "^12.12.6", - "got": "9.6.0", - "swarm-js": "^0.1.40", - "underscore": "1.9.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-bzz/node_modules/@types/node": { - "version": "12.20.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.13.tgz", - "integrity": "sha512-1x8W5OpxPq+T85OUsHRP6BqXeosKmeXRtjoF39STcdf/UWLqUsoehstZKOi0CunhVqHG17AyZgpj20eRVooK6A==", - "dev": true - }, - "node_modules/web3-core": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.3.5.tgz", - "integrity": "sha512-VQjTvnGTqJwDwjKEHSApea3RmgtFGLDSJ6bqrOyHROYNyTyKYjFQ/drG9zs3rjDkND9mgh8foI1ty37Qua3QCQ==", - "dev": true, - "dependencies": { - "@types/bn.js": "^4.11.5", - "@types/node": "^12.12.6", - "bignumber.js": "^9.0.0", - "web3-core-helpers": "1.3.5", - "web3-core-method": "1.3.5", - "web3-core-requestmanager": "1.3.5", - "web3-utils": "1.3.5" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-core-helpers": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.3.5.tgz", - "integrity": "sha512-HYh3ix5FjysgT0jyzD8s/X5ym0b4BGU7I2QtuBiydMnE0mQEWy7GcT9XKpTySA8FTOHHIAQYvQS07DN/ky3UzA==", - "dev": true, - "dependencies": { - "underscore": "1.9.1", - "web3-eth-iban": "1.3.5", - "web3-utils": "1.3.5" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-core-method": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.3.5.tgz", - "integrity": "sha512-hCbmgQ+At6OTuaNGAdjXMsCr4eUCmp9yGKSuaB5HdkNVDpqFso4HHjVxcjNrTyJp3OZnyjKBzQzK1ZWLpLl84Q==", - "dev": true, - "dependencies": { - "@ethersproject/transactions": "^5.0.0-beta.135", - "underscore": "1.9.1", - "web3-core-helpers": "1.3.5", - "web3-core-promievent": "1.3.5", - "web3-core-subscriptions": "1.3.5", - "web3-utils": "1.3.5" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-core-promievent": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.3.5.tgz", - "integrity": "sha512-K0j8x3ZJr0eAyNvyUCxOUsSTd4hco0/9nxxlyOuijcsa6YV8l9NL6eqhniWbSyxCJT8ka5Mb7yAiUZe69EDLBQ==", - "dev": true, - "dependencies": { - "eventemitter3": "4.0.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-core-requestmanager": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.3.5.tgz", - "integrity": "sha512-9l294U3Ga8qmvv8E37BqjQREfMs+kFnkU3PY28g9DZGYzKvl3V1dgDYqxyrOBdCFhc7rNSpHdgC4PrVHjouspg==", - "dev": true, - "dependencies": { - "underscore": "1.9.1", - "util": "^0.12.0", - "web3-core-helpers": "1.3.5", - "web3-providers-http": "1.3.5", - "web3-providers-ipc": "1.3.5", - "web3-providers-ws": "1.3.5" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-core-subscriptions": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.3.5.tgz", - "integrity": "sha512-6mtXdaEB1V1zKLqYBq7RF2W75AK5ZJNGpW6QYC7Zvbku7zq1ZlgaUkJo88JKMWJ7etfaHaYqQ/7VveHk5sQynA==", - "dev": true, - "dependencies": { - "eventemitter3": "4.0.4", - "underscore": "1.9.1", - "web3-core-helpers": "1.3.5" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-core/node_modules/@types/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/web3-core/node_modules/@types/node": { - "version": "12.20.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.13.tgz", - "integrity": "sha512-1x8W5OpxPq+T85OUsHRP6BqXeosKmeXRtjoF39STcdf/UWLqUsoehstZKOi0CunhVqHG17AyZgpj20eRVooK6A==", - "dev": true - }, - "node_modules/web3-eth": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.3.5.tgz", - "integrity": "sha512-5qqDPMMD+D0xRqOV2ePU2G7/uQmhn0FgCEhFzKDMHrssDQJyQLW/VgfA0NLn64lWnuUrGnQStGvNxrWf7MgsfA==", - "dev": true, - "dependencies": { - "underscore": "1.9.1", - "web3-core": "1.3.5", - "web3-core-helpers": "1.3.5", - "web3-core-method": "1.3.5", - "web3-core-subscriptions": "1.3.5", - "web3-eth-abi": "1.3.5", - "web3-eth-accounts": "1.3.5", - "web3-eth-contract": "1.3.5", - "web3-eth-ens": "1.3.5", - "web3-eth-iban": "1.3.5", - "web3-eth-personal": "1.3.5", - "web3-net": "1.3.5", - "web3-utils": "1.3.5" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-abi": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.3.5.tgz", - "integrity": "sha512-bkbG2v/mOW5DH6rF/SEgqunusjYoEi2IBw+fkmD3rzWDaEY7+/i1xY94AeO257d06QMgld75GtV/N+aEs7A6vQ==", - "dev": true, - "dependencies": { - "@ethersproject/abi": "5.0.7", - "underscore": "1.9.1", - "web3-utils": "1.3.5" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-abi/node_modules/@ethersproject/abi": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.0.7.tgz", - "integrity": "sha512-Cqktk+hSIckwP/W8O47Eef60VwmoSC/L3lY0+dIBhQPCNn9E4V7rwmm2aFrNRRDJfFlGuZ1khkQUOc3oBX+niw==", - "dev": true, - "dependencies": { - "@ethersproject/address": "^5.0.4", - "@ethersproject/bignumber": "^5.0.7", - "@ethersproject/bytes": "^5.0.4", - "@ethersproject/constants": "^5.0.4", - "@ethersproject/hash": "^5.0.4", - "@ethersproject/keccak256": "^5.0.3", - "@ethersproject/logger": "^5.0.5", - "@ethersproject/properties": "^5.0.3", - "@ethersproject/strings": "^5.0.4" - } - }, - "node_modules/web3-eth-accounts": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.3.5.tgz", - "integrity": "sha512-r3WOR21rgm6Cd6OFnifr3Tizdm5K+g2TsSOPySwX4FrgLrYDL6ck4zr5VXUPz+llpSExb/JztpE8pqEHr3U2NA==", - "dev": true, - "dependencies": { - "crypto-browserify": "3.12.0", - "eth-lib": "0.2.8", - "ethereumjs-common": "^1.3.2", - "ethereumjs-tx": "^2.1.1", - "scrypt-js": "^3.0.1", - "underscore": "1.9.1", - "uuid": "3.3.2", - "web3-core": "1.3.5", - "web3-core-helpers": "1.3.5", - "web3-core-method": "1.3.5", - "web3-utils": "1.3.5" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-accounts/node_modules/uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true, - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/web3-eth-contract": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.3.5.tgz", - "integrity": "sha512-WfGVeQquN3D7Qm+KEIN9EI7yrm/fL2V9Y4+YhDWiKA/ns1pX1LYcEWojTOnBXCnPF3tcvoKKL+KBxXg1iKm38A==", - "dev": true, - "dependencies": { - "@types/bn.js": "^4.11.5", - "underscore": "1.9.1", - "web3-core": "1.3.5", - "web3-core-helpers": "1.3.5", - "web3-core-method": "1.3.5", - "web3-core-promievent": "1.3.5", - "web3-core-subscriptions": "1.3.5", - "web3-eth-abi": "1.3.5", - "web3-utils": "1.3.5" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-contract/node_modules/@types/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/web3-eth-ens": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.3.5.tgz", - "integrity": "sha512-5bkpFTXV18CvaVP8kCbLZZm2r1TWUv9AsXH+80yz8bTZulUGvXsBMRfK6e5nfEr2Yv59xlIXCFoalmmySI9EJw==", - "dev": true, - "dependencies": { - "content-hash": "^2.5.2", - "eth-ens-namehash": "2.0.8", - "underscore": "1.9.1", - "web3-core": "1.3.5", - "web3-core-helpers": "1.3.5", - "web3-core-promievent": "1.3.5", - "web3-eth-abi": "1.3.5", - "web3-eth-contract": "1.3.5", - "web3-utils": "1.3.5" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-iban": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.3.5.tgz", - "integrity": "sha512-x+BI/d2Vt0J1cKK8eFd4W0f1TDjgEOYCwiViTb28lLE+tqrgyPqWDA+l6UlKYLF/yMFX3Dym4ofcCOtgcn4q4g==", - "dev": true, - "dependencies": { - "bn.js": "^4.11.9", - "web3-utils": "1.3.5" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-personal": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.3.5.tgz", - "integrity": "sha512-xELQHNZ8p3VoO1582ghCaq+Bx7pSkOOalc6/ACOCGtHDMelqgVejrmSIZGScYl+k0HzngmQAzURZWQocaoGM1g==", - "dev": true, - "dependencies": { - "@types/node": "^12.12.6", - "web3-core": "1.3.5", - "web3-core-helpers": "1.3.5", - "web3-core-method": "1.3.5", - "web3-net": "1.3.5", - "web3-utils": "1.3.5" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-personal/node_modules/@types/node": { - "version": "12.20.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.13.tgz", - "integrity": "sha512-1x8W5OpxPq+T85OUsHRP6BqXeosKmeXRtjoF39STcdf/UWLqUsoehstZKOi0CunhVqHG17AyZgpj20eRVooK6A==", - "dev": true - }, - "node_modules/web3-net": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.3.5.tgz", - "integrity": "sha512-usbFbuUpKK8s7jPLGoUzi/WpNnefGFPTj948aJv8BZ04UQA4L/XS5NNkkhk358zNMmhGfEFW8wrWy+0Oy0njtA==", - "dev": true, - "dependencies": { - "web3-core": "1.3.5", - "web3-core-method": "1.3.5", - "web3-utils": "1.3.5" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-providers-http": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.3.5.tgz", - "integrity": "sha512-ZQOmceFjcajEZdiuqciXjijwIYWNmEJ1oxMtbrwB2eGxHRCMXEH2xGRUZuhOFNF88yQC/VXVi14yvYg5ZlFJlA==", - "dev": true, - "dependencies": { - "web3-core-helpers": "1.3.5", - "xhr2-cookies": "1.1.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-providers-ipc": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.3.5.tgz", - "integrity": "sha512-cbZOeb/sALiHjzMolJjIyHla/J5wdL2JKUtRO66Nh/uLALBCpU8JUgzNvpAdJ1ae3+A33+EdFStdzuDYHKtQew==", - "dev": true, - "dependencies": { - "oboe": "2.1.5", - "underscore": "1.9.1", - "web3-core-helpers": "1.3.5" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-providers-ws": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.3.5.tgz", - "integrity": "sha512-zeZ4LMvKhYaJBDCqA//Bzgp4r/T0tNq5U/xvN0axA4YflzF7yqlsbzGwCkcZYDbrUaK3Ltl2uOmvwjbWALOZ1A==", - "dev": true, - "dependencies": { - "eventemitter3": "4.0.4", - "underscore": "1.9.1", - "web3-core-helpers": "1.3.5", - "websocket": "^1.0.32" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-shh": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.3.5.tgz", - "integrity": "sha512-aRwzCduXvuGVslLL/Y15VcOHa70Qr2kxZI7UwOzQVhaaOdxuRRvo3AK/cmyln1Tsd54/n93Yk8I3qg5I2+6alw==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "web3-core": "1.3.5", - "web3-core-method": "1.3.5", - "web3-core-subscriptions": "1.3.5", - "web3-net": "1.3.5" - }, - "engines": { - "node": ">=8.0.0" - } - }, "node_modules/web3-utils": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.3.5.tgz", - "integrity": "sha512-5apMRm8ElYjI/92GHqijmaLC+s+d5lgjpjHft+rJSs/dsnX8I8tQreqev0dmU+wzU+2EEe4Sx9a/OwGWHhQv3A==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.8.0.tgz", + "integrity": "sha512-7nUIl7UWpLVka2f09CMbKOSEvorvHnaugIabU4mj7zfMvm0tSByLcEu3eyV9qgS11qxxLuOkzBIwCstTflhmpQ==", "dev": true, "dependencies": { - "bn.js": "^4.11.9", - "eth-lib": "0.2.8", + "bn.js": "^5.2.1", "ethereum-bloom-filters": "^1.0.6", + "ethereumjs-util": "^7.1.0", "ethjs-unit": "0.1.6", "number-to-bn": "1.7.0", "randombytes": "^2.1.0", - "underscore": "1.9.1", "utf8": "3.0.0" }, "engines": { @@ -21805,45 +21591,13 @@ "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", - "dev": true - }, - "node_modules/websocket": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", - "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", - "dev": true, - "dependencies": { - "bufferutil": "^4.0.1", - "debug": "^2.2.0", - "es5-ext": "^0.10.50", - "typedarray-to-buffer": "^3.1.5", - "utf-8-validate": "^5.0.2", - "yaeti": "^0.0.6" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/websocket/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/websocket/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", "dev": true }, "node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dev": true, "dependencies": { "tr46": "~0.0.3", @@ -21851,15 +21605,18 @@ } }, "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "dependencies": { "isexe": "^2.0.0" }, "bin": { - "which": "bin/which" + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" } }, "node_modules/which-boxed-primitive": { @@ -21881,30 +21638,9 @@ "node_modules/which-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==", "dev": true }, - "node_modules/which-typed-array": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.4.tgz", - "integrity": "sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.2", - "call-bind": "^1.0.0", - "es-abstract": "^1.18.0-next.1", - "foreach": "^2.0.5", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.1", - "is-typed-array": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/wide-align": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", @@ -21917,7 +21653,7 @@ "node_modules/window-size": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", - "integrity": "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU=", + "integrity": "sha512-UD7d8HFA2+PZsbKyaOCEy8gMh1oDtHgJh1LfgjQ4zVXmYjAT/kvz3PueITKuqDiIXQe7yzpPnxX3lNc+AhQMyw==", "dev": true, "bin": { "window-size": "cli.js" @@ -21938,13 +21674,13 @@ "node_modules/wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", "dev": true }, "node_modules/workerpool": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", - "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", "dev": true }, "node_modules/wrap-ansi": { @@ -21964,21 +21700,6 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -22002,22 +21723,10 @@ "node": ">=8" } }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, "node_modules/write": { @@ -22053,69 +21762,15 @@ } } }, - "node_modules/xhr": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", - "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", - "dev": true, - "dependencies": { - "global": "~4.4.0", - "is-function": "^1.0.1", - "parse-headers": "^2.0.0", - "xtend": "^4.0.0" - } - }, - "node_modules/xhr-request": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/xhr-request/-/xhr-request-1.1.0.tgz", - "integrity": "sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA==", - "dev": true, - "dependencies": { - "buffer-to-arraybuffer": "^0.0.5", - "object-assign": "^4.1.1", - "query-string": "^5.0.1", - "simple-get": "^2.7.0", - "timed-out": "^4.0.1", - "url-set-query": "^1.0.0", - "xhr": "^2.0.4" - } - }, - "node_modules/xhr-request-promise": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz", - "integrity": "sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg==", - "dev": true, - "dependencies": { - "xhr-request": "^1.1.0" - } - }, - "node_modules/xhr2-cookies": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz", - "integrity": "sha1-fXdEnQmZGX8VXLc7I99yUF7YnUg=", - "dev": true, - "dependencies": { - "cookiejar": "^2.1.1" - } - }, "node_modules/xmlhttprequest": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", - "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=", + "integrity": "sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA==", "dev": true, "engines": { "node": ">=0.4.0" } }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "engines": { - "node": ">=0.4" - } - }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -22125,21 +21780,21 @@ "node": ">=10" } }, - "node_modules/yaeti": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", - "integrity": "sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc=", - "dev": true, - "engines": { - "node": ">=0.10.32" - } - }, "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, "node_modules/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", @@ -22215,21 +21870,6 @@ "node": ">=8" } }, - "node_modules/yargs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, "node_modules/yargs/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -22253,18 +21893,6 @@ "node": ">=8" } }, - "node_modules/yargs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/yargs/node_modules/yargs-parser": { "version": "20.2.9", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", @@ -22298,27 +21926,27 @@ }, "dependencies": { "@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", "dev": true, "requires": { - "@babel/highlight": "^7.12.13" + "@babel/highlight": "^7.18.6" } }, "@babel/helper-validator-identifier": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", - "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==", + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", "dev": true }, "@babel/highlight": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz", - "integrity": "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.0", + "@babel/helper-validator-identifier": "^7.18.6", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, @@ -22355,13 +21983,19 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true }, "supports-color": { @@ -22375,19 +22009,20 @@ } } }, - "@cspotcode/source-map-consumer": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", - "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", - "dev": true + "@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "optional": true }, "@cspotcode/source-map-support": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", - "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==", + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "dev": true, "requires": { - "@cspotcode/source-map-consumer": "0.8.0" + "@jridgewell/trace-mapping": "0.3.9" } }, "@ensdomains/ens": { @@ -22406,19 +22041,19 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", "dev": true }, "camelcase": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==", "dev": true }, "cliui": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", "dev": true, "requires": { "string-width": "^1.0.1", @@ -22429,7 +22064,7 @@ "find-up": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", "dev": true, "requires": { "path-exists": "^2.0.0", @@ -22439,7 +22074,7 @@ "fs-extra": { "version": "0.30.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", - "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", + "integrity": "sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -22458,7 +22093,7 @@ "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", "dev": true, "requires": { "number-is-nan": "^1.0.0" @@ -22467,7 +22102,7 @@ "jsonfile": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", "dev": true, "requires": { "graceful-fs": "^4.1.6" @@ -22476,7 +22111,7 @@ "load-json-file": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -22489,7 +22124,7 @@ "parse-json": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", "dev": true, "requires": { "error-ex": "^1.2.0" @@ -22498,7 +22133,7 @@ "path-exists": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", "dev": true, "requires": { "pinkie-promise": "^2.0.0" @@ -22507,7 +22142,7 @@ "path-type": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -22518,13 +22153,13 @@ "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true }, "read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", "dev": true, "requires": { "load-json-file": "^1.0.0", @@ -22535,7 +22170,7 @@ "read-pkg-up": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", "dev": true, "requires": { "find-up": "^1.0.0", @@ -22545,9 +22180,18 @@ "require-from-string": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", - "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=", + "integrity": "sha512-H7AkJWMobeskkttHyhTVtS0fxpFLjxhbfMa6Bk3wimP7sdPRGL3EyCg3sAQenFfAe+xQ+oAc85Nmtvq0ROM83Q==", "dev": true }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -22570,7 +22214,7 @@ "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", "dev": true, "requires": { "code-point-at": "^1.0.0", @@ -22581,7 +22225,7 @@ "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -22590,7 +22234,7 @@ "strip-bom": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", "dev": true, "requires": { "is-utf8": "^0.2.0" @@ -22599,7 +22243,7 @@ "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", "dev": true, "requires": { "string-width": "^1.0.1", @@ -22615,7 +22259,7 @@ "yargs": { "version": "4.8.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz", - "integrity": "sha1-wMQpJMpKqmsObaFznfshZDn53cA=", + "integrity": "sha512-LqodLrnIDM3IFT+Hf/5sxBnEGECrfdC1uIbgZeJmESCSo4HoCAaKEus8MylXHAkdacGc0ye+Qa+dpkuom8uVYA==", "dev": true, "requires": { "cliui": "^3.2.0", @@ -22637,7 +22281,7 @@ "yargs-parser": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz", - "integrity": "sha1-hVaN488VD/SfpRgl8DqMiA3cxcQ=", + "integrity": "sha512-9pIKIJhnI5tonzG6OnCFlz/yln8xHYcGl+pn3xR0Vzff0vzN1PbNRaelgfgRUwZ3s4i3jvxT9WhmUGL4whnasA==", "dev": true, "requires": { "camelcase": "^3.0.0", @@ -22652,6 +22296,23 @@ "integrity": "sha512-bvaTH34PMCbv6anRa9I/0zjLJgY4EuznbEMgbV77JBCQ9KNC46rzi0avuxpOfu+xDjPEtSFGqVEOr5GlUSGudA==", "dev": true }, + "@eslint/eslintrc": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", + "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + } + }, "@ethereum-waffle/chai": { "version": "3.4.4", "resolved": "https://registry.npmjs.org/@ethereum-waffle/chai/-/chai-3.4.4.tgz", @@ -22715,503 +22376,450 @@ "postinstall-postinstall": "^2.1.0" } }, - "@ethereumjs/block": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/@ethereumjs/block/-/block-3.6.2.tgz", - "integrity": "sha512-mOqYWwMlAZpYUEOEqt7EfMFuVL2eyLqWWIzcf4odn6QgXY8jBI2NhVuJncrMCKeMZrsJAe7/auaRRB6YcdH+Qw==", - "dev": true, - "requires": { - "@ethereumjs/common": "^2.6.3", - "@ethereumjs/tx": "^3.5.1", - "ethereumjs-util": "^7.1.4", - "merkle-patricia-tree": "^4.2.4" - } - }, - "@ethereumjs/blockchain": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/@ethereumjs/blockchain/-/blockchain-5.5.2.tgz", - "integrity": "sha512-Jz26iJmmsQtngerW6r5BDFaew/f2mObLrRZo3rskLOx1lmtMZ8+TX/vJexmivrnWgmAsTdNWhlKUYY4thPhPig==", - "dev": true, - "requires": { - "@ethereumjs/block": "^3.6.2", - "@ethereumjs/common": "^2.6.3", - "@ethereumjs/ethash": "^1.1.0", - "debug": "^4.3.3", - "ethereumjs-util": "^7.1.4", - "level-mem": "^5.0.1", - "lru-cache": "^5.1.1", - "semaphore-async-await": "^1.5.1" - } - }, - "@ethereumjs/common": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.6.3.tgz", - "integrity": "sha512-mQwPucDL7FDYIg9XQ8DL31CnIYZwGhU5hyOO5E+BMmT71G0+RHvIT5rIkLBirJEKxV6+Rcf9aEIY0kXInxUWpQ==", - "dev": true, - "requires": { - "crc-32": "^1.2.0", - "ethereumjs-util": "^7.1.4" - } - }, - "@ethereumjs/ethash": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/ethash/-/ethash-1.1.0.tgz", - "integrity": "sha512-/U7UOKW6BzpA+Vt+kISAoeDie1vAvY4Zy2KF5JJb+So7+1yKmJeJEHOGSnQIj330e9Zyl3L5Nae6VZyh2TJnAA==", - "dev": true, - "requires": { - "@ethereumjs/block": "^3.5.0", - "@types/levelup": "^4.3.0", - "buffer-xor": "^2.0.1", - "ethereumjs-util": "^7.1.1", - "miller-rabin": "^4.0.0" - }, - "dependencies": { - "buffer-xor": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-2.0.2.tgz", - "integrity": "sha512-eHslX0bin3GB+Lx2p7lEYRShRewuNZL3fUl4qlVJGGiwoPGftmt8JQgk2Y9Ji5/01TnVDo33E5b5O3vUB1HdqQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.1" - } - } - } - }, - "@ethereumjs/tx": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.5.1.tgz", - "integrity": "sha512-xzDrTiu4sqZXUcaBxJ4n4W5FrppwxLxZB4ZDGVLtxSQR4lVuOnFR6RcUHdg1mpUhAPVrmnzLJpxaeXnPxIyhWA==", - "dev": true, - "requires": { - "@ethereumjs/common": "^2.6.3", - "ethereumjs-util": "^7.1.4" - } - }, - "@ethereumjs/vm": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/vm/-/vm-5.8.0.tgz", - "integrity": "sha512-mn2G2SX79QY4ckVvZUfxlNUpzwT2AEIkvgJI8aHoQaNYEHhH8rmdVDIaVVgz6//PjK52BZsK23afz+WvSR0Qqw==", - "dev": true, - "requires": { - "@ethereumjs/block": "^3.6.2", - "@ethereumjs/blockchain": "^5.5.2", - "@ethereumjs/common": "^2.6.3", - "@ethereumjs/tx": "^3.5.1", - "async-eventemitter": "^0.2.4", - "core-js-pure": "^3.0.1", - "debug": "^4.3.3", - "ethereumjs-util": "^7.1.4", - "functional-red-black-tree": "^1.0.1", - "mcl-wasm": "^0.7.1", - "merkle-patricia-tree": "^4.2.4", - "rustbn.js": "~0.2.0" - } - }, "@ethersproject/abi": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.6.0.tgz", - "integrity": "sha512-AhVByTwdXCc2YQ20v300w6KVHle9g2OFc28ZAFCPnJyEpkv1xKXjZcSTgWOlv1i+0dqlgF8RCF2Rn2KC1t+1Vg==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", + "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", "dev": true, "requires": { - "@ethersproject/address": "^5.6.0", - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/constants": "^5.6.0", - "@ethersproject/hash": "^5.6.0", - "@ethersproject/keccak256": "^5.6.0", - "@ethersproject/logger": "^5.6.0", - "@ethersproject/properties": "^5.6.0", - "@ethersproject/strings": "^5.6.0" + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" } }, "@ethersproject/abstract-provider": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.6.0.tgz", - "integrity": "sha512-oPMFlKLN+g+y7a79cLK3WiLcjWFnZQtXWgnLAbHZcN3s7L4v90UHpTOrLk+m3yr0gt+/h9STTM6zrr7PM8uoRw==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", "dev": true, "requires": { - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/logger": "^5.6.0", - "@ethersproject/networks": "^5.6.0", - "@ethersproject/properties": "^5.6.0", - "@ethersproject/transactions": "^5.6.0", - "@ethersproject/web": "^5.6.0" + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" } }, "@ethersproject/abstract-signer": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.6.0.tgz", - "integrity": "sha512-WOqnG0NJKtI8n0wWZPReHtaLkDByPL67tn4nBaDAhmVq8sjHTPbCdz4DRhVu/cfTOvfy9w3iq5QZ7BX7zw56BQ==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", "dev": true, "requires": { - "@ethersproject/abstract-provider": "^5.6.0", - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/logger": "^5.6.0", - "@ethersproject/properties": "^5.6.0" + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" } }, "@ethersproject/address": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.6.0.tgz", - "integrity": "sha512-6nvhYXjbXsHPS+30sHZ+U4VMagFC/9zAk6Gd/h3S21YW4+yfb0WfRtaAIZ4kfM4rrVwqiy284LP0GtL5HXGLxQ==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", "dev": true, "requires": { - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/keccak256": "^5.6.0", - "@ethersproject/logger": "^5.6.0", - "@ethersproject/rlp": "^5.6.0" + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" } }, "@ethersproject/base64": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.6.0.tgz", - "integrity": "sha512-2Neq8wxJ9xHxCF9TUgmKeSh9BXJ6OAxWfeGWvbauPh8FuHEjamgHilllx8KkSd5ErxyHIX7Xv3Fkcud2kY9ezw==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", "dev": true, "requires": { - "@ethersproject/bytes": "^5.6.0" + "@ethersproject/bytes": "^5.7.0" } }, "@ethersproject/basex": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.6.0.tgz", - "integrity": "sha512-qN4T+hQd/Md32MoJpc69rOwLYRUXwjTlhHDIeUkUmiN/JyWkkLLMoG0TqvSQKNqZOMgN5stbUYN6ILC+eD7MEQ==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", + "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", "dev": true, "requires": { - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/properties": "^5.6.0" + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/properties": "^5.7.0" } }, "@ethersproject/bignumber": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.6.0.tgz", - "integrity": "sha512-VziMaXIUHQlHJmkv1dlcd6GY2PmT0khtAqaMctCIDogxkrarMzA9L94KN1NeXqqOfFD6r0sJT3vCTOFSmZ07DA==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", "dev": true, "requires": { - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/logger": "^5.6.0", - "bn.js": "^4.11.9" + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" } }, "@ethersproject/bytes": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.6.1.tgz", - "integrity": "sha512-NwQt7cKn5+ZE4uDn+X5RAXLp46E1chXoaMmrxAyA0rblpxz8t58lVkrHXoRIn0lz1joQElQ8410GqhTqMOwc6g==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", "dev": true, "requires": { - "@ethersproject/logger": "^5.6.0" + "@ethersproject/logger": "^5.7.0" } }, "@ethersproject/constants": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.6.0.tgz", - "integrity": "sha512-SrdaJx2bK0WQl23nSpV/b1aq293Lh0sUaZT/yYKPDKn4tlAbkH96SPJwIhwSwTsoQQZxuh1jnqsKwyymoiBdWA==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", "dev": true, "requires": { - "@ethersproject/bignumber": "^5.6.0" + "@ethersproject/bignumber": "^5.7.0" } }, "@ethersproject/contracts": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.6.0.tgz", - "integrity": "sha512-74Ge7iqTDom0NX+mux8KbRUeJgu1eHZ3iv6utv++sLJG80FVuU9HnHeKVPfjd9s3woFhaFoQGf3B3iH/FrQmgw==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", + "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", "dev": true, "requires": { - "@ethersproject/abi": "^5.6.0", - "@ethersproject/abstract-provider": "^5.6.0", - "@ethersproject/abstract-signer": "^5.6.0", - "@ethersproject/address": "^5.6.0", - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/constants": "^5.6.0", - "@ethersproject/logger": "^5.6.0", - "@ethersproject/properties": "^5.6.0", - "@ethersproject/transactions": "^5.6.0" + "@ethersproject/abi": "^5.7.0", + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0" } }, "@ethersproject/hash": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.6.0.tgz", - "integrity": "sha512-fFd+k9gtczqlr0/BruWLAu7UAOas1uRRJvOR84uDf4lNZ+bTkGl366qvniUZHKtlqxBRU65MkOobkmvmpHU+jA==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", "dev": true, "requires": { - "@ethersproject/abstract-signer": "^5.6.0", - "@ethersproject/address": "^5.6.0", - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/keccak256": "^5.6.0", - "@ethersproject/logger": "^5.6.0", - "@ethersproject/properties": "^5.6.0", - "@ethersproject/strings": "^5.6.0" + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" } }, "@ethersproject/hdnode": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.6.0.tgz", - "integrity": "sha512-61g3Jp3nwDqJcL/p4nugSyLrpl/+ChXIOtCEM8UDmWeB3JCAt5FoLdOMXQc3WWkc0oM2C0aAn6GFqqMcS/mHTw==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", + "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", "dev": true, "requires": { - "@ethersproject/abstract-signer": "^5.6.0", - "@ethersproject/basex": "^5.6.0", - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/logger": "^5.6.0", - "@ethersproject/pbkdf2": "^5.6.0", - "@ethersproject/properties": "^5.6.0", - "@ethersproject/sha2": "^5.6.0", - "@ethersproject/signing-key": "^5.6.0", - "@ethersproject/strings": "^5.6.0", - "@ethersproject/transactions": "^5.6.0", - "@ethersproject/wordlists": "^5.6.0" + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" } }, "@ethersproject/json-wallets": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.6.0.tgz", - "integrity": "sha512-fmh86jViB9r0ibWXTQipxpAGMiuxoqUf78oqJDlCAJXgnJF024hOOX7qVgqsjtbeoxmcLwpPsXNU0WEe/16qPQ==", - "dev": true, - "requires": { - "@ethersproject/abstract-signer": "^5.6.0", - "@ethersproject/address": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/hdnode": "^5.6.0", - "@ethersproject/keccak256": "^5.6.0", - "@ethersproject/logger": "^5.6.0", - "@ethersproject/pbkdf2": "^5.6.0", - "@ethersproject/properties": "^5.6.0", - "@ethersproject/random": "^5.6.0", - "@ethersproject/strings": "^5.6.0", - "@ethersproject/transactions": "^5.6.0", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", + "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", + "dev": true, + "requires": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", "aes-js": "3.0.0", "scrypt-js": "3.0.1" } }, "@ethersproject/keccak256": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.6.0.tgz", - "integrity": "sha512-tk56BJ96mdj/ksi7HWZVWGjCq0WVl/QvfhFQNeL8fxhBlGoP+L80uDCiQcpJPd+2XxkivS3lwRm3E0CXTfol0w==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", "dev": true, "requires": { - "@ethersproject/bytes": "^5.6.0", + "@ethersproject/bytes": "^5.7.0", "js-sha3": "0.8.0" - }, - "dependencies": { - "js-sha3": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", - "dev": true - } } }, "@ethersproject/logger": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.6.0.tgz", - "integrity": "sha512-BiBWllUROH9w+P21RzoxJKzqoqpkyM1pRnEKG69bulE9TSQD8SAIvTQqIMZmmCO8pUNkgLP1wndX1gKghSpBmg==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", "dev": true }, "@ethersproject/networks": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.6.1.tgz", - "integrity": "sha512-b2rrupf3kCTcc3jr9xOWBuHylSFtbpJf79Ga7QR98ienU2UqGimPGEsYMgbI29KHJfA5Us89XwGVmxrlxmSrMg==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", "dev": true, "requires": { - "@ethersproject/logger": "^5.6.0" + "@ethersproject/logger": "^5.7.0" } }, "@ethersproject/pbkdf2": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.6.0.tgz", - "integrity": "sha512-Wu1AxTgJo3T3H6MIu/eejLFok9TYoSdgwRr5oGY1LTLfmGesDoSx05pemsbrPT2gG4cQME+baTSCp5sEo2erZQ==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", + "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", "dev": true, "requires": { - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/sha2": "^5.6.0" + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/sha2": "^5.7.0" } }, "@ethersproject/properties": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.6.0.tgz", - "integrity": "sha512-szoOkHskajKePTJSZ46uHUWWkbv7TzP2ypdEK6jGMqJaEt2sb0jCgfBo0gH0m2HBpRixMuJ6TBRaQCF7a9DoCg==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", "dev": true, "requires": { - "@ethersproject/logger": "^5.6.0" + "@ethersproject/logger": "^5.7.0" } }, "@ethersproject/providers": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.6.2.tgz", - "integrity": "sha512-6/EaFW/hNWz+224FXwl8+HdMRzVHt8DpPmu5MZaIQqx/K/ELnC9eY236SMV7mleCM3NnEArFwcAAxH5kUUgaRg==", - "dev": true, - "requires": { - "@ethersproject/abstract-provider": "^5.6.0", - "@ethersproject/abstract-signer": "^5.6.0", - "@ethersproject/address": "^5.6.0", - "@ethersproject/basex": "^5.6.0", - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/constants": "^5.6.0", - "@ethersproject/hash": "^5.6.0", - "@ethersproject/logger": "^5.6.0", - "@ethersproject/networks": "^5.6.0", - "@ethersproject/properties": "^5.6.0", - "@ethersproject/random": "^5.6.0", - "@ethersproject/rlp": "^5.6.0", - "@ethersproject/sha2": "^5.6.0", - "@ethersproject/strings": "^5.6.0", - "@ethersproject/transactions": "^5.6.0", - "@ethersproject/web": "^5.6.0", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", + "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", + "dev": true, + "requires": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0", "bech32": "1.1.4", "ws": "7.4.6" } }, "@ethersproject/random": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.6.0.tgz", - "integrity": "sha512-si0PLcLjq+NG/XHSZz90asNf+YfKEqJGVdxoEkSukzbnBgC8rydbgbUgBbBGLeHN4kAJwUFEKsu3sCXT93YMsw==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", + "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", "dev": true, "requires": { - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/logger": "^5.6.0" + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" } }, "@ethersproject/rlp": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.6.0.tgz", - "integrity": "sha512-dz9WR1xpcTL+9DtOT/aDO+YyxSSdO8YIS0jyZwHHSlAmnxA6cKU3TrTd4Xc/bHayctxTgGLYNuVVoiXE4tTq1g==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", "dev": true, "requires": { - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/logger": "^5.6.0" + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" } }, "@ethersproject/sha2": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.6.0.tgz", - "integrity": "sha512-1tNWCPFLu1n3JM9t4/kytz35DkuF9MxqkGGEHNauEbaARdm2fafnOyw1s0tIQDPKF/7bkP1u3dbrmjpn5CelyA==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", "dev": true, "requires": { - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/logger": "^5.6.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", "hash.js": "1.1.7" } }, "@ethersproject/signing-key": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.6.0.tgz", - "integrity": "sha512-S+njkhowmLeUu/r7ir8n78OUKx63kBdMCPssePS89So1TH4hZqnWFsThEd/GiXYp9qMxVrydf7KdM9MTGPFukA==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", "dev": true, "requires": { - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/logger": "^5.6.0", - "@ethersproject/properties": "^5.6.0", - "bn.js": "^4.11.9", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", "elliptic": "6.5.4", "hash.js": "1.1.7" } }, "@ethersproject/solidity": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.6.0.tgz", - "integrity": "sha512-YwF52vTNd50kjDzqKaoNNbC/r9kMDPq3YzDWmsjFTRBcIF1y4JCQJ8gB30wsTfHbaxgxelI5BfxQSxD/PbJOww==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", + "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", "dev": true, "requires": { - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/keccak256": "^5.6.0", - "@ethersproject/logger": "^5.6.0", - "@ethersproject/sha2": "^5.6.0", - "@ethersproject/strings": "^5.6.0" + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0" } }, "@ethersproject/strings": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.6.0.tgz", - "integrity": "sha512-uv10vTtLTZqrJuqBZR862ZQjTIa724wGPWQqZrofaPI/kUsf53TBG0I0D+hQ1qyNtllbNzaW+PDPHHUI6/65Mg==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", "dev": true, "requires": { - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/constants": "^5.6.0", - "@ethersproject/logger": "^5.6.0" + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" } }, "@ethersproject/transactions": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.6.0.tgz", - "integrity": "sha512-4HX+VOhNjXHZyGzER6E/LVI2i6lf9ejYeWD6l4g50AdmimyuStKc39kvKf1bXWQMg7QNVh+uC7dYwtaZ02IXeg==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", "dev": true, "requires": { - "@ethersproject/address": "^5.6.0", - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/constants": "^5.6.0", - "@ethersproject/keccak256": "^5.6.0", - "@ethersproject/logger": "^5.6.0", - "@ethersproject/properties": "^5.6.0", - "@ethersproject/rlp": "^5.6.0", - "@ethersproject/signing-key": "^5.6.0" + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" } }, "@ethersproject/units": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.6.0.tgz", - "integrity": "sha512-tig9x0Qmh8qbo1w8/6tmtyrm/QQRviBh389EQ+d8fP4wDsBrJBf08oZfoiz1/uenKK9M78yAP4PoR7SsVoTjsw==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", + "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", "dev": true, "requires": { - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/constants": "^5.6.0", - "@ethersproject/logger": "^5.6.0" + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" } }, "@ethersproject/wallet": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.6.0.tgz", - "integrity": "sha512-qMlSdOSTyp0MBeE+r7SUhr1jjDlC1zAXB8VD84hCnpijPQiSNbxr6GdiLXxpUs8UKzkDiNYYC5DRI3MZr+n+tg==", - "dev": true, - "requires": { - "@ethersproject/abstract-provider": "^5.6.0", - "@ethersproject/abstract-signer": "^5.6.0", - "@ethersproject/address": "^5.6.0", - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/hash": "^5.6.0", - "@ethersproject/hdnode": "^5.6.0", - "@ethersproject/json-wallets": "^5.6.0", - "@ethersproject/keccak256": "^5.6.0", - "@ethersproject/logger": "^5.6.0", - "@ethersproject/properties": "^5.6.0", - "@ethersproject/random": "^5.6.0", - "@ethersproject/signing-key": "^5.6.0", - "@ethersproject/transactions": "^5.6.0", - "@ethersproject/wordlists": "^5.6.0" + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", + "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", + "dev": true, + "requires": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/json-wallets": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" } }, "@ethersproject/web": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.6.0.tgz", - "integrity": "sha512-G/XHj0hV1FxI2teHRfCGvfBUHFmU+YOSbCxlAMqJklxSa7QMiHFQfAxvwY2PFqgvdkxEKwRNr/eCjfAPEm2Ctg==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", "dev": true, "requires": { - "@ethersproject/base64": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/logger": "^5.6.0", - "@ethersproject/properties": "^5.6.0", - "@ethersproject/strings": "^5.6.0" + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" } }, "@ethersproject/wordlists": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.6.0.tgz", - "integrity": "sha512-q0bxNBfIX3fUuAo9OmjlEYxP40IB8ABgb7HjEZCL5IKubzV3j30CWi2rqQbjTS2HfoyQbfINoKcTVWP4ejwR7Q==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", + "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "@humanwhocodes/config-array": { + "version": "0.11.7", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", + "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==", "dev": true, "requires": { - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/hash": "^5.6.0", - "@ethersproject/logger": "^5.6.0", - "@ethersproject/properties": "^5.6.0", - "@ethersproject/strings": "^5.6.0" + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + } + }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" } }, "@kwsites/file-exists": { @@ -23230,9 +22838,9 @@ "dev": true }, "@metamask/eth-sig-util": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-4.0.0.tgz", - "integrity": "sha512-LczOjjxY4A7XYloxzyxJIHONELmUxVZncpOLoClpEcTiebiVdM46KRPYXGuULro9oNNR2xdVx3yoKiQjdfWmoA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz", + "integrity": "sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==", "dev": true, "requires": { "ethereumjs-abi": "^0.6.8", @@ -23251,6 +22859,12 @@ "@types/node": "*" } }, + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, "ethereumjs-util": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", @@ -23265,67 +22879,375 @@ "ethjs-util": "0.1.6", "rlp": "^2.2.3" } - }, - "tweetnacl": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", - "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", - "dev": true } } }, + "@noble/hashes": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.2.tgz", + "integrity": "sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA==", + "dev": true + }, + "@noble/secp256k1": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.6.3.tgz", + "integrity": "sha512-T04e4iTurVy7I8Sw4+c5OSN9/RkPlo1uKxAomtxQNLq8j1uPAqnsqG1bqvY3Jv7c13gyr6dui0zmh/I3+f/JaQ==", + "dev": true + }, "@nodelib/fs.scandir": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", - "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "requires": { - "@nodelib/fs.stat": "2.0.4", + "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "@nodelib/fs.stat": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", - "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true }, "@nodelib/fs.walk": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz", - "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, "requires": { - "@nodelib/fs.scandir": "2.1.4", + "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, + "@nomicfoundation/ethereumjs-block": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-4.0.0.tgz", + "integrity": "sha512-bk8uP8VuexLgyIZAHExH1QEovqx0Lzhc9Ntm63nCRKLHXIZkobaFaeCVwTESV7YkPKUk7NiK11s8ryed4CS9yA==", + "dev": true, + "requires": { + "@nomicfoundation/ethereumjs-common": "^3.0.0", + "@nomicfoundation/ethereumjs-rlp": "^4.0.0", + "@nomicfoundation/ethereumjs-trie": "^5.0.0", + "@nomicfoundation/ethereumjs-tx": "^4.0.0", + "@nomicfoundation/ethereumjs-util": "^8.0.0", + "ethereum-cryptography": "0.1.3" + } + }, + "@nomicfoundation/ethereumjs-blockchain": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-6.0.0.tgz", + "integrity": "sha512-pLFEoea6MWd81QQYSReLlLfH7N9v7lH66JC/NMPN848ySPPQA5renWnE7wPByfQFzNrPBuDDRFFULMDmj1C0xw==", + "dev": true, + "requires": { + "@nomicfoundation/ethereumjs-block": "^4.0.0", + "@nomicfoundation/ethereumjs-common": "^3.0.0", + "@nomicfoundation/ethereumjs-ethash": "^2.0.0", + "@nomicfoundation/ethereumjs-rlp": "^4.0.0", + "@nomicfoundation/ethereumjs-trie": "^5.0.0", + "@nomicfoundation/ethereumjs-util": "^8.0.0", + "abstract-level": "^1.0.3", + "debug": "^4.3.3", + "ethereum-cryptography": "0.1.3", + "level": "^8.0.0", + "lru-cache": "^5.1.1", + "memory-level": "^1.0.0" + } + }, + "@nomicfoundation/ethereumjs-common": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-3.0.0.tgz", + "integrity": "sha512-WS7qSshQfxoZOpHG/XqlHEGRG1zmyjYrvmATvc4c62+gZXgre1ymYP8ZNgx/3FyZY0TWe9OjFlKOfLqmgOeYwA==", + "dev": true, + "requires": { + "@nomicfoundation/ethereumjs-util": "^8.0.0", + "crc-32": "^1.2.0" + } + }, + "@nomicfoundation/ethereumjs-ethash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-2.0.0.tgz", + "integrity": "sha512-WpDvnRncfDUuXdsAXlI4lXbqUDOA+adYRQaEezIkxqDkc+LDyYDbd/xairmY98GnQzo1zIqsIL6GB5MoMSJDew==", + "dev": true, + "requires": { + "@nomicfoundation/ethereumjs-block": "^4.0.0", + "@nomicfoundation/ethereumjs-rlp": "^4.0.0", + "@nomicfoundation/ethereumjs-util": "^8.0.0", + "abstract-level": "^1.0.3", + "bigint-crypto-utils": "^3.0.23", + "ethereum-cryptography": "0.1.3" + } + }, + "@nomicfoundation/ethereumjs-evm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-1.0.0.tgz", + "integrity": "sha512-hVS6qRo3V1PLKCO210UfcEQHvlG7GqR8iFzp0yyjTg2TmJQizcChKgWo8KFsdMw6AyoLgLhHGHw4HdlP8a4i+Q==", + "dev": true, + "requires": { + "@nomicfoundation/ethereumjs-common": "^3.0.0", + "@nomicfoundation/ethereumjs-util": "^8.0.0", + "@types/async-eventemitter": "^0.2.1", + "async-eventemitter": "^0.2.4", + "debug": "^4.3.3", + "ethereum-cryptography": "0.1.3", + "mcl-wasm": "^0.7.1", + "rustbn.js": "~0.2.0" + } + }, + "@nomicfoundation/ethereumjs-rlp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-4.0.0.tgz", + "integrity": "sha512-GaSOGk5QbUk4eBP5qFbpXoZoZUj/NrW7MRa0tKY4Ew4c2HAS0GXArEMAamtFrkazp0BO4K5p2ZCG3b2FmbShmw==", + "dev": true + }, + "@nomicfoundation/ethereumjs-statemanager": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-1.0.0.tgz", + "integrity": "sha512-jCtqFjcd2QejtuAMjQzbil/4NHf5aAWxUc+CvS0JclQpl+7M0bxMofR2AJdtz+P3u0ke2euhYREDiE7iSO31vQ==", + "dev": true, + "requires": { + "@nomicfoundation/ethereumjs-common": "^3.0.0", + "@nomicfoundation/ethereumjs-rlp": "^4.0.0", + "@nomicfoundation/ethereumjs-trie": "^5.0.0", + "@nomicfoundation/ethereumjs-util": "^8.0.0", + "debug": "^4.3.3", + "ethereum-cryptography": "0.1.3", + "functional-red-black-tree": "^1.0.1" + } + }, + "@nomicfoundation/ethereumjs-trie": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-5.0.0.tgz", + "integrity": "sha512-LIj5XdE+s+t6WSuq/ttegJzZ1vliwg6wlb+Y9f4RlBpuK35B9K02bO7xU+E6Rgg9RGptkWd6TVLdedTI4eNc2A==", + "dev": true, + "requires": { + "@nomicfoundation/ethereumjs-rlp": "^4.0.0", + "@nomicfoundation/ethereumjs-util": "^8.0.0", + "ethereum-cryptography": "0.1.3", + "readable-stream": "^3.6.0" + } + }, + "@nomicfoundation/ethereumjs-tx": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-4.0.0.tgz", + "integrity": "sha512-Gg3Lir2lNUck43Kp/3x6TfBNwcWC9Z1wYue9Nz3v4xjdcv6oDW9QSMJxqsKw9QEGoBBZ+gqwpW7+F05/rs/g1w==", + "dev": true, + "requires": { + "@nomicfoundation/ethereumjs-common": "^3.0.0", + "@nomicfoundation/ethereumjs-rlp": "^4.0.0", + "@nomicfoundation/ethereumjs-util": "^8.0.0", + "ethereum-cryptography": "0.1.3" + } + }, + "@nomicfoundation/ethereumjs-util": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-8.0.0.tgz", + "integrity": "sha512-2emi0NJ/HmTG+CGY58fa+DQuAoroFeSH9gKu9O6JnwTtlzJtgfTixuoOqLEgyyzZVvwfIpRueuePb8TonL1y+A==", + "dev": true, + "requires": { + "@nomicfoundation/ethereumjs-rlp": "^4.0.0-beta.2", + "ethereum-cryptography": "0.1.3" + } + }, + "@nomicfoundation/ethereumjs-vm": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-6.0.0.tgz", + "integrity": "sha512-JMPxvPQ3fzD063Sg3Tp+UdwUkVxMoo1uML6KSzFhMH3hoQi/LMuXBoEHAoW83/vyNS9BxEe6jm6LmT5xdeEJ6w==", + "dev": true, + "requires": { + "@nomicfoundation/ethereumjs-block": "^4.0.0", + "@nomicfoundation/ethereumjs-blockchain": "^6.0.0", + "@nomicfoundation/ethereumjs-common": "^3.0.0", + "@nomicfoundation/ethereumjs-evm": "^1.0.0", + "@nomicfoundation/ethereumjs-rlp": "^4.0.0", + "@nomicfoundation/ethereumjs-statemanager": "^1.0.0", + "@nomicfoundation/ethereumjs-trie": "^5.0.0", + "@nomicfoundation/ethereumjs-tx": "^4.0.0", + "@nomicfoundation/ethereumjs-util": "^8.0.0", + "@types/async-eventemitter": "^0.2.1", + "async-eventemitter": "^0.2.4", + "debug": "^4.3.3", + "ethereum-cryptography": "0.1.3", + "functional-red-black-tree": "^1.0.1", + "mcl-wasm": "^0.7.1", + "rustbn.js": "~0.2.0" + } + }, + "@nomicfoundation/solidity-analyzer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.0.tgz", + "integrity": "sha512-xGWAiVCGOycvGiP/qrlf9f9eOn7fpNbyJygcB0P21a1MDuVPlKt0Srp7rvtBEutYQ48ouYnRXm33zlRnlTOPHg==", + "dev": true, + "requires": { + "@nomicfoundation/solidity-analyzer-darwin-arm64": "0.1.0", + "@nomicfoundation/solidity-analyzer-darwin-x64": "0.1.0", + "@nomicfoundation/solidity-analyzer-freebsd-x64": "0.1.0", + "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": "0.1.0", + "@nomicfoundation/solidity-analyzer-linux-arm64-musl": "0.1.0", + "@nomicfoundation/solidity-analyzer-linux-x64-gnu": "0.1.0", + "@nomicfoundation/solidity-analyzer-linux-x64-musl": "0.1.0", + "@nomicfoundation/solidity-analyzer-win32-arm64-msvc": "0.1.0", + "@nomicfoundation/solidity-analyzer-win32-ia32-msvc": "0.1.0", + "@nomicfoundation/solidity-analyzer-win32-x64-msvc": "0.1.0" + } + }, + "@nomicfoundation/solidity-analyzer-darwin-arm64": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.0.tgz", + "integrity": "sha512-vEF3yKuuzfMHsZecHQcnkUrqm8mnTWfJeEVFHpg+cO+le96xQA4lAJYdUan8pXZohQxv1fSReQsn4QGNuBNuCw==", + "dev": true, + "optional": true + }, + "@nomicfoundation/solidity-analyzer-darwin-x64": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.0.tgz", + "integrity": "sha512-dlHeIg0pTL4dB1l9JDwbi/JG6dHQaU1xpDK+ugYO8eJ1kxx9Dh2isEUtA4d02cQAl22cjOHTvifAk96A+ItEHA==", + "dev": true, + "optional": true + }, + "@nomicfoundation/solidity-analyzer-freebsd-x64": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-freebsd-x64/-/solidity-analyzer-freebsd-x64-0.1.0.tgz", + "integrity": "sha512-WFCZYMv86WowDA4GiJKnebMQRt3kCcFqHeIomW6NMyqiKqhK1kIZCxSLDYsxqlx396kKLPN1713Q1S8tu68GKg==", + "dev": true, + "optional": true + }, + "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.0.tgz", + "integrity": "sha512-DTw6MNQWWlCgc71Pq7CEhEqkb7fZnS7oly13pujs4cMH1sR0JzNk90Mp1zpSCsCs4oKan2ClhMlLKtNat/XRKQ==", + "dev": true, + "optional": true + }, + "@nomicfoundation/solidity-analyzer-linux-arm64-musl": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.0.tgz", + "integrity": "sha512-wUpUnR/3GV5Da88MhrxXh/lhb9kxh9V3Jya2NpBEhKDIRCDmtXMSqPMXHZmOR9DfCwCvG6vLFPr/+YrPCnUN0w==", + "dev": true, + "optional": true + }, + "@nomicfoundation/solidity-analyzer-linux-x64-gnu": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.0.tgz", + "integrity": "sha512-lR0AxK1x/MeKQ/3Pt923kPvwigmGX3OxeU5qNtQ9pj9iucgk4PzhbS3ruUeSpYhUxG50jN4RkIGwUMoev5lguw==", + "dev": true, + "optional": true + }, + "@nomicfoundation/solidity-analyzer-linux-x64-musl": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.0.tgz", + "integrity": "sha512-A1he/8gy/JeBD3FKvmI6WUJrGrI5uWJNr5Xb9WdV+DK0F8msuOqpEByLlnTdLkXMwW7nSl3awvLezOs9xBHJEg==", + "dev": true, + "optional": true + }, + "@nomicfoundation/solidity-analyzer-win32-arm64-msvc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-arm64-msvc/-/solidity-analyzer-win32-arm64-msvc-0.1.0.tgz", + "integrity": "sha512-7x5SXZ9R9H4SluJZZP8XPN+ju7Mx+XeUMWZw7ZAqkdhP5mK19I4vz3x0zIWygmfE8RT7uQ5xMap0/9NPsO+ykw==", + "dev": true, + "optional": true + }, + "@nomicfoundation/solidity-analyzer-win32-ia32-msvc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-ia32-msvc/-/solidity-analyzer-win32-ia32-msvc-0.1.0.tgz", + "integrity": "sha512-m7w3xf+hnE774YRXu+2mGV7RiF3QJtUoiYU61FascCkQhX3QMQavh7saH/vzb2jN5D24nT/jwvaHYX/MAM9zUw==", + "dev": true, + "optional": true + }, + "@nomicfoundation/solidity-analyzer-win32-x64-msvc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.0.tgz", + "integrity": "sha512-xCuybjY0sLJQnJhupiFAXaek2EqF0AP0eBjgzaalPXSNvCEN6ZYHvUzdA50ENDVeSYFXcUsYf3+FsD3XKaeptA==", + "dev": true, + "optional": true + }, "@nomiclabs/hardhat-ethers": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.0.5.tgz", - "integrity": "sha512-A2gZAGB6kUvLx+kzM92HKuUF33F1FSe90L0TmkXkT2Hh0OKRpvWZURUSU2nghD2yC4DzfEZ3DftfeHGvZ2JTUw==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.2.1.tgz", + "integrity": "sha512-RHWYwnxryWR8hzRmU4Jm/q4gzvXpetUOJ4OPlwH2YARcDB+j79+yAYCwO0lN1SUOb4++oOTJEe6AWLEc42LIvg==", "dev": true, "requires": {} }, "@nomiclabs/hardhat-etherscan": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-etherscan/-/hardhat-etherscan-3.0.3.tgz", - "integrity": "sha512-OfNtUKc/ZwzivmZnnpwWREfaYncXteKHskn3yDnz+fPBZ6wfM4GR+d5RwjREzYFWE+o5iR9ruXhWw/8fejWM9g==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-etherscan/-/hardhat-etherscan-3.1.2.tgz", + "integrity": "sha512-IEikeOVq0C/7CY6aD74d8L4BpGoc/FNiN6ldiPVg0QIFIUSu4FSGA1dmtJZJKk1tjpwgrfTLQNWnigtEaN9REg==", "dev": true, "requires": { "@ethersproject/abi": "^5.1.2", "@ethersproject/address": "^5.0.2", "cbor": "^5.0.2", + "chalk": "^2.4.2", "debug": "^4.1.1", "fs-extra": "^7.0.1", + "lodash": "^4.17.11", "semver": "^6.3.0", - "undici": "^4.14.1" + "table": "^6.8.0", + "undici": "^5.4.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "@nomiclabs/hardhat-solhint": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-solhint/-/hardhat-solhint-2.0.0.tgz", - "integrity": "sha512-fn+izC923/oCnfbGyp7YwOXZYtwcrDIrTLlFVeEgeSAHe2ZnipRRtNCxEClZuzCptHmTzIIayBmAaijsTmEAoA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-solhint/-/hardhat-solhint-2.0.1.tgz", + "integrity": "sha512-SrTLufY21t78KLpJL5fS6gHIsCwVv0yWsHp1aQOPL1qwRWpe0Mnh5wb2YzBHd3Dbr/KzUYys+j2ui0PsSVU9pg==", "dev": true, "requires": { "solhint": "^2.0.0" @@ -23354,38 +23276,32 @@ "dev": true }, "@openzeppelin/hardhat-upgrades": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/@openzeppelin/hardhat-upgrades/-/hardhat-upgrades-1.17.0.tgz", - "integrity": "sha512-GNxR3/3fCKQsFpBi/r+5ib6U81UM9KCypmcOQxuCkVp9JKJ80/3hQdg1R+AQku/dlnhutPsfkCokH2LZFc5mNA==", + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/@openzeppelin/hardhat-upgrades/-/hardhat-upgrades-1.21.0.tgz", + "integrity": "sha512-Kwl7IN0Hlhj4HluMTTl0DrtU90OI/Q6rG3sAyd2pv3fababe9EuZqs9DydOlkWM45JwTzC+eBzX3TgHsqI13eA==", "dev": true, "requires": { - "@openzeppelin/upgrades-core": "^1.14.1", + "@openzeppelin/upgrades-core": "^1.20.0", "chalk": "^4.1.0", + "debug": "^4.1.1", "proper-lockfile": "^4.1.1" } }, "@openzeppelin/upgrades-core": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@openzeppelin/upgrades-core/-/upgrades-core-1.14.1.tgz", - "integrity": "sha512-iKlh1mbUxyfdjdEiUFyhMkqirfas+DMUu7ED53nZbHEyhcYsm+5Fl/g0Bv6bZA+a7k8kO8+22DNEKsqaDUBc2Q==", + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/@openzeppelin/upgrades-core/-/upgrades-core-1.20.4.tgz", + "integrity": "sha512-Y4/+BPIbnopfE6ZhPOE2CD0V5fnvDxKKm7+kryx5+WrcRCTW3B5DjbXL9xyyoviG8Rn5EXUh5Fk1GLbiYDfu0g==", "dev": true, "requires": { - "bn.js": "^5.1.2", "cbor": "^8.0.0", "chalk": "^4.1.0", - "compare-versions": "^4.0.0", + "compare-versions": "^5.0.0", "debug": "^4.1.1", "ethereumjs-util": "^7.0.3", "proper-lockfile": "^4.1.1", "solidity-ast": "^0.4.15" }, "dependencies": { - "bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", - "dev": true - }, "cbor": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/cbor/-/cbor-8.1.0.tgz", @@ -23492,6 +23408,33 @@ } } }, + "@scure/base": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz", + "integrity": "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==", + "dev": true + }, + "@scure/bip32": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.0.tgz", + "integrity": "sha512-ftTW3kKX54YXLCxH6BB7oEEoJfoE2pIgw7MINKAs5PsS6nqKPuKk1haTF/EuHmYqG330t5GSrdmtRuHaY1a62Q==", + "dev": true, + "requires": { + "@noble/hashes": "~1.1.1", + "@noble/secp256k1": "~1.6.0", + "@scure/base": "~1.1.0" + } + }, + "@scure/bip39": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.0.tgz", + "integrity": "sha512-pwrPOS16VeTKg98dYXQyIjJEcWfz7/1YJIwxUEPFfQPtc86Ym/1sVgQ2RLoD43AazMk2l/unK4ITySSpW2+82w==", + "dev": true, + "requires": { + "@noble/hashes": "~1.1.1", + "@scure/base": "~1.1.0" + } + }, "@sentry/core": { "version": "5.30.0", "resolved": "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz", @@ -23573,182 +23516,37 @@ "tslib": "^1.9.3" } }, - "@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", - "dev": true - }, - "@sinonjs/commons": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", - "dev": true, - "requires": { - "type-detect": "4.0.8" - } - }, - "@sinonjs/fake-timers": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-7.0.5.tgz", - "integrity": "sha512-fUt6b15bjV/VW93UP5opNXJxdwZSbK1EdiwnhN7XrQrcpaOhMJpZ/CjwFpM3THpxwA+YviBUJKSuEqKlCK5alw==", - "dev": true, - "requires": { - "@sinonjs/commons": "^1.7.0" - } - }, "@solidity-parser/parser": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.14.1.tgz", - "integrity": "sha512-eLjj2L6AuQjBB6s/ibwCAc0DwrR5Ge+ys+wgWo+bviU7fV2nTMQhU63CGaDKXg9iTmMxwhkyoggdIR7ZGRfMgw==", + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.14.5.tgz", + "integrity": "sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg==", "dev": true, "requires": { "antlr4ts": "^0.5.0-alpha.4" } }, - "@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "dev": true, - "requires": { - "defer-to-connect": "^1.0.1" - } - }, - "@truffle/error": { - "version": "0.0.14", - "resolved": "https://registry.npmjs.org/@truffle/error/-/error-0.0.14.tgz", - "integrity": "sha512-utJx+SZYoMqk8wldQG4gCVKhV8GwMJbWY7sLXFT/D8wWZTnE2peX7URFJh/cxkjTRCO328z1s2qewkhyVsu2HA==", - "dev": true - }, - "@truffle/interface-adapter": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/@truffle/interface-adapter/-/interface-adapter-0.4.23.tgz", - "integrity": "sha512-mfpwY25Apx36WHHNJMNHWyDQVFZoZYNQ43rOwr/n+5gAMxke7+D7+IR9UW4kuO/Jp0+2848UxMdRV+oqm017kQ==", - "dev": true, - "requires": { - "bn.js": "^5.1.3", - "ethers": "^4.0.32", - "web3": "1.3.5" - }, - "dependencies": { - "bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", - "dev": true - }, - "elliptic": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", - "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", - "dev": true, - "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "ethers": { - "version": "4.0.48", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-4.0.48.tgz", - "integrity": "sha512-sZD5K8H28dOrcidzx9f8KYh8083n5BexIO3+SbE4jK83L85FxtpXZBCQdXb8gkg+7sBqomcLhhkU7UHL+F7I2g==", - "dev": true, - "requires": { - "aes-js": "3.0.0", - "bn.js": "^4.4.0", - "elliptic": "6.5.3", - "hash.js": "1.1.3", - "js-sha3": "0.5.7", - "scrypt-js": "2.0.4", - "setimmediate": "1.0.4", - "uuid": "2.0.1", - "xmlhttprequest": "1.8.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "hash.js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", - "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.0" - } - }, - "scrypt-js": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.4.tgz", - "integrity": "sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw==", - "dev": true - }, - "setimmediate": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.4.tgz", - "integrity": "sha1-IOgd5iLUoCWIzgyNqJc8vPHTE48=", - "dev": true - }, - "uuid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.1.tgz", - "integrity": "sha1-wqMN7bPlNdcsz4LjQ5QaULqFM6w=", - "dev": true - } - } - }, - "@truffle/provider": { - "version": "0.2.30", - "resolved": "https://registry.npmjs.org/@truffle/provider/-/provider-0.2.30.tgz", - "integrity": "sha512-5ScTbWsrm7zmQjw020T41U30/kYA1LppXAtaeucUGN2jvPrSwlh0aTL18makbqftTx1NRuYKw7C8wO4jCKQSUQ==", - "dev": true, - "requires": { - "@truffle/error": "^0.0.14", - "@truffle/interface-adapter": "^0.4.23", - "web3": "1.3.5" - } - }, "@tsconfig/node10": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", - "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", "dev": true }, "@tsconfig/node12": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", - "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", "dev": true }, "@tsconfig/node14": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", - "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", "dev": true }, "@tsconfig/node16": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", - "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", "dev": true }, "@typechain/ethers-v5": { @@ -23760,25 +23558,25 @@ "ethers": "^5.0.2" } }, - "@types/abstract-leveldown": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/abstract-leveldown/-/abstract-leveldown-7.2.0.tgz", - "integrity": "sha512-q5veSX6zjUy/DlDhR4Y4cU0k2Ar+DT2LUraP00T19WLmTO6Se1djepCCaqU6nQrwcJ5Hyo/CWqxTzrrFg8eqbQ==", + "@types/async-eventemitter": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@types/async-eventemitter/-/async-eventemitter-0.2.1.tgz", + "integrity": "sha512-M2P4Ng26QbAeITiH7w1d7OxtldgfAe0wobpyJzVK/XOb0cUGKU2R4pfAhqcJBXAe2ife5ZOhSv4wk7p+ffURtg==", "dev": true }, "@types/bn.js": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.0.tgz", - "integrity": "sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz", + "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==", "dev": true, "requires": { "@types/node": "*" } }, "@types/chai": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.0.tgz", - "integrity": "sha512-/ceqdqeRraGolFTcfoXNiqjyQhZzbINDngeoAq9GoHa8PPK1yNzTaxWjA6BFWp5Ua9JpXEMSS4s5i9tS0hOJtw==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.4.tgz", + "integrity": "sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==", "dev": true }, "@types/chai-as-promised": { @@ -23791,9 +23589,9 @@ } }, "@types/cli-table": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@types/cli-table/-/cli-table-0.3.0.tgz", - "integrity": "sha512-QnZUISJJXyhyD6L1e5QwXDV/A5i2W1/gl6D6YMc8u0ncPepbv/B4w3S+izVvtAg60m6h+JP09+Y/0zF2mojlFQ==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@types/cli-table/-/cli-table-0.3.1.tgz", + "integrity": "sha512-m3+6WWfSSl6zqoXy8uQQifbgqV7Gt6fsyWnHLgUWVtJQk75+OfUB+edSZ52YDj7leSiZtX7w1/E4w2x/Hb0orA==", "dev": true }, "@types/concat-stream": { @@ -23808,49 +23606,38 @@ "@types/form-data": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-0.0.33.tgz", - "integrity": "sha1-yayFsqX9GENbjIXZ7LUObWyJP/g=", + "integrity": "sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw==", "dev": true, "requires": { "@types/node": "*" } }, "@types/glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", "dev": true, "requires": { "@types/minimatch": "*", "@types/node": "*" } }, - "@types/level-errors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/level-errors/-/level-errors-3.0.0.tgz", - "integrity": "sha512-/lMtoq/Cf/2DVOm6zE6ORyOM+3ZVm/BvzEZVxUhf6bgh8ZHglXlBqxbxSlJeVp8FCbD3IVvk/VbsaNmDjrQvqQ==", + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", "dev": true }, - "@types/levelup": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@types/levelup/-/levelup-4.3.3.tgz", - "integrity": "sha512-K+OTIjJcZHVlZQN1HmU64VtrC0jC3dXWQozuEIR9zVvltIk90zaGPM2AgT+fIkChpzHhFE3YnvFLCbLtzAmexA==", - "dev": true, - "requires": { - "@types/abstract-leveldown": "*", - "@types/level-errors": "*", - "@types/node": "*" - } - }, "@types/lru-cache": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.0.tgz", - "integrity": "sha512-RaE0B+14ToE4l6UqdarKPnXwVDuigfFv+5j9Dze/Nqr23yyuqdNvzcZi3xB+3Agvi5R4EOgAksfv3lXX4vBt9w==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==", "dev": true }, "@types/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", "dev": true }, "@types/mkdirp": { @@ -23863,120 +23650,290 @@ } }, "@types/mocha": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.0.tgz", - "integrity": "sha512-QCWHkbMv4Y5U9oW10Uxbr45qMMSzl4OzijsozynUAgx3kEHUdXB00udx2dWDQ7f2TU2a2uuiFaRZjCe3unPpeg==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.1.tgz", + "integrity": "sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==", "dev": true }, "@types/node": { - "version": "17.0.23", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.23.tgz", - "integrity": "sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw==", + "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", "dev": true }, "@types/node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-oMqjURCaxoSIsHSr1E47QHzbmzNR5rK8McHuNb11BOM9cHcIK3Avy0s/b2JlXHoQGTYS3NsvWzV1M0iK7l0wbA==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.2.tgz", + "integrity": "sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==", "dev": true, "requires": { "@types/node": "*", "form-data": "^3.0.0" + } + }, + "@types/pbkdf2": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz", + "integrity": "sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/prettier": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow==", + "dev": true + }, + "@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "@types/resolve": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", + "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/secp256k1": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.3.tgz", + "integrity": "sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/semver": { + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", + "dev": true + }, + "@types/sinon": { + "version": "10.0.13", + "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.13.tgz", + "integrity": "sha512-UVjDqJblVNQYvVNUsj0PuYYw0ELRmgt1Nt5Vk0pT5f16ROGfcKJY8o1HVuMOJOpD727RrGB9EGvoaTQE5tgxZQ==", + "dev": true, + "requires": { + "@types/sinonjs__fake-timers": "*" + } + }, + "@types/sinon-chai": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-3.2.9.tgz", + "integrity": "sha512-/19t63pFYU0ikrdbXKBWj9PCdnKyTd0Qkz0X91Ta081cYsq90OxYdcWwK/dwEoDa6dtXgj2HJfmzgq+QZTHdmQ==", + "dev": true, + "requires": { + "@types/chai": "*", + "@types/sinon": "*" + } + }, + "@types/sinonjs__fake-timers": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.2.tgz", + "integrity": "sha512-9GcLXF0/v3t80caGs5p2rRfkB+a8VBGLJZVih6CNFkx8IZ994wiKKLSRs9nuFwk1HevWs/1mnUmkApGrSGsShA==", + "dev": true + }, + "@types/underscore": { + "version": "1.11.4", + "resolved": "https://registry.npmjs.org/@types/underscore/-/underscore-1.11.4.tgz", + "integrity": "sha512-uO4CD2ELOjw8tasUrAhvnn2W4A0ZECOvMjCivJr4gA9pGgjv+qxKWY9GLTMVEK8ej85BxQOocUyE7hImmSQYcg==", + "dev": true + }, + "@types/web3": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/@types/web3/-/web3-1.0.19.tgz", + "integrity": "sha512-fhZ9DyvDYDwHZUp5/STa9XW2re0E8GxoioYJ4pEUZ13YHpApSagixj7IAdoYH5uAK+UalGq6Ml8LYzmgRA/q+A==", + "dev": true, + "requires": { + "@types/bn.js": "*", + "@types/underscore": "*" + } + }, + "@typescript-eslint/eslint-plugin": { + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.42.1.tgz", + "integrity": "sha512-LyR6x784JCiJ1j6sH5Y0K6cdExqCCm8DJUTcwG5ThNXJj/G8o5E56u5EdG4SLy+bZAwZBswC+GYn3eGdttBVCg==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.42.1", + "@typescript-eslint/type-utils": "5.42.1", + "@typescript-eslint/utils": "5.42.1", + "debug": "^4.3.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" }, "dependencies": { - "form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "lru-cache": "^6.0.0" } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true } } }, - "@types/pbkdf2": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz", - "integrity": "sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==", + "@typescript-eslint/parser": { + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.42.1.tgz", + "integrity": "sha512-kAV+NiNBWVQDY9gDJDToTE/NO8BHi4f6b7zTsVAJoTkmB/zlfOpiEVBzHOKtlgTndCKe8vj9F/PuolemZSh50Q==", "dev": true, + "peer": true, "requires": { - "@types/node": "*" + "@typescript-eslint/scope-manager": "5.42.1", + "@typescript-eslint/types": "5.42.1", + "@typescript-eslint/typescript-estree": "5.42.1", + "debug": "^4.3.4" } }, - "@types/prettier": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.4.tgz", - "integrity": "sha512-ReVR2rLTV1kvtlWFyuot+d1pkpG2Fw/XKE3PDAdj57rbM97ttSp9JZ2UsP+2EHTylra9cUf6JA7tGwW1INzUrA==", - "dev": true - }, - "@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", - "dev": true - }, - "@types/resolve": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", - "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", + "@typescript-eslint/scope-manager": { + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.42.1.tgz", + "integrity": "sha512-QAZY/CBP1Emx4rzxurgqj3rUinfsh/6mvuKbLNMfJMMKYLRBfweus8brgXF8f64ABkIZ3zdj2/rYYtF8eiuksQ==", "dev": true, "requires": { - "@types/node": "*" + "@typescript-eslint/types": "5.42.1", + "@typescript-eslint/visitor-keys": "5.42.1" } }, - "@types/secp256k1": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.2.tgz", - "integrity": "sha512-QMg+9v0bbNJ2peLuHRWxzmy0HRJIG6gFZNhaRSp7S3ggSbCCxiqQB2/ybvhXyhHOCequpNkrx7OavNhrWOsW0A==", + "@typescript-eslint/type-utils": { + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.42.1.tgz", + "integrity": "sha512-WWiMChneex5w4xPIX56SSnQQo0tEOy5ZV2dqmj8Z371LJ0E+aymWD25JQ/l4FOuuX+Q49A7pzh/CGIQflxMVXg==", "dev": true, "requires": { - "@types/node": "*" + "@typescript-eslint/typescript-estree": "5.42.1", + "@typescript-eslint/utils": "5.42.1", + "debug": "^4.3.4", + "tsutils": "^3.21.0" } }, - "@types/sinon": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.0.tgz", - "integrity": "sha512-jDZ55oCKxqlDmoTBBbBBEx+N8ZraUVhggMZ9T5t+6/Dh8/4NiOjSUfpLrPiEwxQDlAe3wpAkoXhWvE6LibtsMQ==", + "@typescript-eslint/types": { + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.42.1.tgz", + "integrity": "sha512-Qrco9dsFF5lhalz+lLFtxs3ui1/YfC6NdXu+RAGBa8uSfn01cjO7ssCsjIsUs484vny9Xm699FSKwpkCcqwWwA==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.42.1.tgz", + "integrity": "sha512-qElc0bDOuO0B8wDhhW4mYVgi/LZL+igPwXtV87n69/kYC/7NG3MES0jHxJNCr4EP7kY1XVsRy8C/u3DYeTKQmw==", "dev": true, "requires": { - "@sinonjs/fake-timers": "^7.0.4" + "@typescript-eslint/types": "5.42.1", + "@typescript-eslint/visitor-keys": "5.42.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } } }, - "@types/sinon-chai": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-3.2.5.tgz", - "integrity": "sha512-bKQqIpew7mmIGNRlxW6Zli/QVyc3zikpGzCa797B/tRnD9OtHvZ/ts8sYXV+Ilj9u3QRaUEM8xrjgd1gwm1BpQ==", + "@typescript-eslint/utils": { + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.42.1.tgz", + "integrity": "sha512-Gxvf12xSp3iYZd/fLqiQRD4uKZjDNR01bQ+j8zvhPjpsZ4HmvEFL/tC4amGNyxN9Rq+iqvpHLhlqx6KTxz9ZyQ==", "dev": true, "requires": { - "@types/chai": "*", - "@types/sinon": "*" + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.42.1", + "@typescript-eslint/types": "5.42.1", + "@typescript-eslint/typescript-estree": "5.42.1", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0", + "semver": "^7.3.7" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } } }, - "@types/underscore": { - "version": "1.11.2", - "resolved": "https://registry.npmjs.org/@types/underscore/-/underscore-1.11.2.tgz", - "integrity": "sha512-Ls2ylbo7++ITrWk2Yc3G/jijwSq5V3GT0tlgVXEl2kKYXY3ImrtmTCoE2uyTWFRI5owMBriloZFWbE1SXOsE7w==", - "dev": true - }, - "@types/web3": { - "version": "1.0.19", - "resolved": "https://registry.npmjs.org/@types/web3/-/web3-1.0.19.tgz", - "integrity": "sha512-fhZ9DyvDYDwHZUp5/STa9XW2re0E8GxoioYJ4pEUZ13YHpApSagixj7IAdoYH5uAK+UalGq6Ml8LYzmgRA/q+A==", + "@typescript-eslint/visitor-keys": { + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.42.1.tgz", + "integrity": "sha512-LOQtSF4z+hejmpUvitPlc4hA7ERGoj2BVkesOcG91HCn8edLGUXbTrErmutmPbl8Bo9HjAvOO/zBKQHExXNA2A==", "dev": true, "requires": { - "@types/bn.js": "*", - "@types/underscore": "*" + "@typescript-eslint/types": "5.42.1", + "eslint-visitor-keys": "^3.3.0" } }, - "@ungap/promise-all-settled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", - "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", - "dev": true - }, "@yarnpkg/lockfile": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", @@ -23986,7 +23943,7 @@ "abbrev": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", - "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=", + "integrity": "sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==", "dev": true }, "abort-controller": { @@ -23998,39 +23955,31 @@ "event-target-shim": "^5.0.0" } }, - "abstract-leveldown": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.3.0.tgz", - "integrity": "sha512-TU5nlYgta8YrBMNpc9FwQzRbiXsj49gsALsXadbGHt9CROPzX5fB0rWDR5mtdpOOKa5XqRFpbj1QroPAoPzVjQ==", - "dev": true, - "requires": { - "buffer": "^5.5.0", - "immediate": "^3.2.3", - "level-concat-iterator": "~2.0.0", - "level-supports": "~1.0.0", - "xtend": "~4.0.0" - } - }, - "accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "abstract-level": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/abstract-level/-/abstract-level-1.0.3.tgz", + "integrity": "sha512-t6jv+xHy+VYwc4xqZMn2Pa9DjcdzvzZmQGRjTFc8spIbRGHgBrEKbPq+rYXc7CCo0lxgYvSgKVg9qZAhpVQSjA==", "dev": true, "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" + "buffer": "^6.0.3", + "catering": "^2.1.0", + "is-buffer": "^2.0.5", + "level-supports": "^4.0.0", + "level-transcoder": "^1.0.1", + "module-error": "^1.0.1", + "queue-microtask": "^1.2.3" } }, "acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", "dev": true }, "acorn-jsx": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", - "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, "requires": {} }, @@ -24041,9 +23990,9 @@ "dev": true }, "address": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", - "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.1.tgz", + "integrity": "sha512-B+6bi5D34+fDYENiH5qOlA0cV2rAGKuWZ9LeyUUehbXy8e0VS9e498yO0Jeeh+iM+6KbfudHTFjXw2MmJD4QRA==", "dev": true }, "adm-zip": { @@ -24055,7 +24004,7 @@ "aes-js": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", - "integrity": "sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0=", + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", "dev": true }, "agent-base": { @@ -24075,14 +24024,6 @@ "requires": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" - }, - "dependencies": { - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true - } } }, "ajv": { @@ -24100,14 +24041,14 @@ "amdefine": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==", "dev": true, "optional": true }, "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true }, "ansi-escapes": { @@ -24117,12 +24058,20 @@ "dev": true, "requires": { "type-fest": "^0.21.3" + }, + "dependencies": { + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + } } }, "ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, "ansi-styles": { @@ -24163,13 +24112,10 @@ "dev": true }, "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, "array-back": { "version": "2.0.0", @@ -24180,22 +24126,10 @@ "typical": "^2.6.1" } }, - "array-filter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", - "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=", - "dev": true - }, "array-find-index": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "integrity": "sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==", "dev": true }, "array-union": { @@ -24207,46 +24141,47 @@ "array-uniq": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", "dev": true }, + "array.prototype.reduce": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz", + "integrity": "sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.7" + } + }, "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", "dev": true }, "asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", "dev": true }, "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", "dev": true, "requires": { "safer-buffer": "~2.1.0" } }, - "asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - } - }, "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", "dev": true }, "assertion-error": { @@ -24256,15 +24191,15 @@ "dev": true }, "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true }, "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "requires": { "lodash": "^4.17.14" @@ -24279,31 +24214,16 @@ "async": "^2.4.0" } }, - "async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "dev": true - }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true }, - "available-typed-arrays": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz", - "integrity": "sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ==", - "dev": true, - "requires": { - "array-filter": "^1.0.0" - } - }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", "dev": true }, "aws4": { @@ -24319,9 +24239,9 @@ "dev": true }, "base-x": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.8.tgz", - "integrity": "sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", + "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", "dev": true, "requires": { "safe-buffer": "^5.0.1" @@ -24336,10 +24256,18 @@ "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", "dev": true, "requires": { "tweetnacl": "^0.14.3" + }, + "dependencies": { + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true + } } }, "bech32": { @@ -24348,10 +24276,25 @@ "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", "dev": true }, + "bigint-crypto-utils": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/bigint-crypto-utils/-/bigint-crypto-utils-3.1.7.tgz", + "integrity": "sha512-zpCQpIE2Oy5WIQpjC9iYZf8Uh9QqoS51ZCooAcNvzv1AQ3VWdT52D0ksr1+/faeK8HVIej1bxXcP75YcqH3KPA==", + "dev": true, + "requires": { + "bigint-mod-arith": "^3.1.0" + } + }, + "bigint-mod-arith": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bigint-mod-arith/-/bigint-mod-arith-3.1.2.tgz", + "integrity": "sha512-nx8J8bBeiRR+NlsROFH9jHswW5HO8mgfOSqW0AmjicMMvaONDa8AO+5ViKDUUNytBPWiwfvZP4/Bj4Y3lUfvgQ==", + "dev": true + }, "bignumber.js": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.1.tgz", - "integrity": "sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.0.tgz", + "integrity": "sha512-4LwHK4nfDOraBCtst+wOWIHbu1vhvAPJK8g8nROd4iuc3PSEjWif/qwbkh8jwCJz6yDBvtU4KPynETgrfh7y3A==", "dev": true }, "binary-extensions": { @@ -24360,28 +24303,10 @@ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true }, - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, - "requires": { - "file-uri-to-path": "1.0.0" - } - }, - "bip66": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/bip66/-/bip66-1.1.5.tgz", - "integrity": "sha1-AfqHSHhcpwlV1QESF9GzE5lpyiI=", - "dev": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, "blakejs": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.1.0.tgz", - "integrity": "sha1-ad+S75U6qIylGjLfarHFShVfx6U=", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", + "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==", "dev": true }, "bluebird": { @@ -24391,83 +24316,11 @@ "dev": true }, "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", "dev": true }, - "body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", - "dev": true, - "requires": { - "bytes": "3.1.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", - "dev": true - }, - "raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", - "dev": true, - "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - } - } - }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -24490,9 +24343,21 @@ "brorand": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", "dev": true }, + "browser-level": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browser-level/-/browser-level-1.0.1.tgz", + "integrity": "sha512-XECYKJ+Dbzw0lbydyQuJzwNXtOpbMSq737qxJN11sIRTErOMShvDpbzTlgju7orJKvx4epULolZAuJGLzCmWRQ==", + "dev": true, + "requires": { + "abstract-level": "^1.0.2", + "catering": "^2.1.1", + "module-error": "^1.0.2", + "run-parallel-limit": "^1.1.0" + } + }, "browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", @@ -24513,76 +24378,10 @@ "safe-buffer": "^5.0.1" } }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "dev": true, - "requires": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - }, - "dependencies": { - "bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", - "dev": true - } - } - }, - "browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "dev": true, - "requires": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", - "dev": true - } - } - }, "bs58": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", "dev": true, "requires": { "base-x": "^3.0.2" @@ -24600,80 +24399,42 @@ } }, "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "dev": true, "requires": { "base64-js": "^1.3.1", - "ieee754": "^1.1.13" + "ieee754": "^1.2.1" } }, "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "buffer-to-arraybuffer": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz", - "integrity": "sha1-YGSkD6dutDxyOrqe+PbhIW0QURo=", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, "buffer-xor": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", "dev": true }, - "bufferutil": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.3.tgz", - "integrity": "sha512-yEYTwGndELGvfXsImMBLop58eaGW+YdONi1fNjTINSY98tmMmFijBG6WXgdkfuLNt4imzQNtIE+eBp1PVpMCSw==", + "busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", "dev": true, "requires": { - "node-gyp-build": "^4.2.0" + "streamsearch": "^1.1.0" } }, "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true }, - "cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "dev": true, - "requires": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "dependencies": { - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true - } - } - }, "call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -24687,37 +24448,45 @@ "caller-callsite": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==", "dev": true, "requires": { "callsites": "^2.0.0" + }, + "dependencies": { + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==", + "dev": true + } } }, "caller-path": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==", "dev": true, "requires": { "caller-callsite": "^2.0.0" } }, "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, "camelcase": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "integrity": "sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==", "dev": true }, "camelcase-keys": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", - "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", + "integrity": "sha512-Ej37YKYbFUI8QiYlvj9YHb6/Z60dZyPJW0Cs8sFilMbd2lP0bw3ylAq9yJkK4lcTA2dID5fG8LjmJYbO7kWb7Q==", "dev": true, "requires": { "camelcase": "^4.1.0", @@ -24728,7 +24497,13 @@ "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "dev": true + }, + "catering": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/catering/-/catering-2.1.1.tgz", + "integrity": "sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w==", "dev": true }, "cbor": { @@ -24742,14 +24517,14 @@ } }, "chai": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz", - "integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", + "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", "dev": true, "requires": { "assertion-error": "^1.1.0", "check-error": "^1.0.2", - "deep-eql": "^3.0.1", + "deep-eql": "^4.1.2", "get-func-name": "^2.0.0", "loupe": "^2.3.1", "pathval": "^1.1.1", @@ -24766,9 +24541,9 @@ } }, "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -24784,68 +24559,48 @@ "charenc": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", - "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", "dev": true }, "check-error": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", "dev": true }, "chokidar": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", - "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, "requires": { - "anymatch": "~3.1.1", + "anymatch": "~3.1.2", "braces": "~3.0.2", - "fsevents": "~2.3.1", - "glob-parent": "~5.1.0", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", - "readdirp": "~3.5.0" - } - }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "cids": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/cids/-/cids-0.7.5.tgz", - "integrity": "sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA==", - "dev": true, - "requires": { - "buffer": "^5.5.0", - "class-is": "^1.1.0", - "multibase": "~0.6.0", - "multicodec": "^1.0.0", - "multihashes": "~0.4.15" + "readdirp": "~3.6.0" }, "dependencies": { - "multicodec": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-1.0.4.tgz", - "integrity": "sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg==", + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "requires": { - "buffer": "^5.6.0", - "varint": "^5.0.0" + "is-glob": "^4.0.1" } } } }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, "cipher-base": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", @@ -24856,11 +24611,18 @@ "safe-buffer": "^5.0.1" } }, - "class-is": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/class-is/-/class-is-1.1.0.tgz", - "integrity": "sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==", - "dev": true + "classic-level": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/classic-level/-/classic-level-1.2.0.tgz", + "integrity": "sha512-qw5B31ANxSluWz9xBzklRWTUAJ1SXIdaVKTVS7HcTGKOAmExx65Wo5BUICW+YGORe2FOUaDghoI9ZDxj82QcFg==", + "dev": true, + "requires": { + "abstract-level": "^1.0.2", + "catering": "^2.1.0", + "module-error": "^1.0.1", + "napi-macros": "~2.0.0", + "node-gyp-build": "^4.3.0" + } }, "clean-stack": { "version": "2.2.0", @@ -24871,7 +24633,7 @@ "cli-cursor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", "dev": true, "requires": { "restore-cursor": "^2.0.0" @@ -24884,14 +24646,6 @@ "dev": true, "requires": { "colors": "1.0.3" - }, - "dependencies": { - "colors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", - "dev": true - } } }, "cli-table3": { @@ -24903,6 +24657,15 @@ "colors": "^1.1.2", "object-assign": "^4.1.0", "string-width": "^2.1.1" + }, + "dependencies": { + "colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true, + "optional": true + } } }, "cli-width": { @@ -24922,18 +24685,6 @@ "wrap-ansi": "^7.0.0" }, "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -24950,31 +24701,13 @@ "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } } } }, - "clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "dev": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", "dev": true }, "color-convert": { @@ -24993,9 +24726,9 @@ "dev": true }, "colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", "dev": true }, "combined-stream": { @@ -25025,27 +24758,27 @@ } }, "commander": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", - "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, "commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", "dev": true }, "compare-versions": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-4.1.3.tgz", - "integrity": "sha512-WQfnbDcrYnGr55UwbxKiQKASnTtNnaAWVi8jZyy8NTpVAXWACSne8lMD1iaIo9AiU6mnuLvSVshCzewVuWxHUg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-5.0.1.tgz", + "integrity": "sha512-v8Au3l0b+Nwkp4G142JcgJFh1/TUhdxut7wzD1Nq1dyp5oa3tXaqb03EXOAB6jS4gMlalkjAUPZBMiAfKUixHQ==", "dev": true }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, "concat-stream": { @@ -25092,79 +24825,17 @@ } } }, - "content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", - "dev": true, - "requires": { - "safe-buffer": "5.1.2" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - } - } - }, - "content-hash": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/content-hash/-/content-hash-2.5.2.tgz", - "integrity": "sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw==", - "dev": true, - "requires": { - "cids": "^0.7.1", - "multicodec": "^0.5.5", - "multihashes": "^0.4.15" - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true - }, "cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", - "dev": true - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", - "dev": true - }, - "cookiejar": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", - "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==", - "dev": true - }, - "core-js-pure": { - "version": "3.21.1", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.21.1.tgz", - "integrity": "sha512-12VZfFIu+wyVbBebyHmRTuEE/tZrB4tJToWcwAMcsp3h4+sHR+fMJWbKpYiCRWlhFBq+KNyO8rIV9rTkeVmznQ==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", "dev": true }, "core-util-is": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dev": true, - "requires": { - "object-assign": "^4", - "vary": "^1" - } + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true }, "cosmiconfig": { "version": "5.2.1", @@ -25176,27 +24847,56 @@ "is-directory": "^0.3.1", "js-yaml": "^3.13.1", "parse-json": "^4.0.0" + }, + "dependencies": { + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "dev": true + } } }, "crc-32": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.1.tgz", - "integrity": "sha512-Dn/xm/1vFFgs3nfrpEVScHoIslO9NZRITWGz/1E/St6u4xw99vfZzVkW0OSnzx2h9egej9xwMCEut6sqwokM/w==", - "dev": true, - "requires": { - "exit-on-epipe": "~1.0.1", - "printj": "~1.3.1" - } - }, - "create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - } + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "dev": true }, "create-hash": { "version": "1.2.0", @@ -25232,74 +24932,35 @@ "dev": true }, "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" } }, "crypt": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", - "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", "dev": true }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, "currently-unhandled": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "integrity": "sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==", "dev": true, "requires": { "array-find-index": "^1.0.1" } }, - "d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dev": true, - "requires": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", "dev": true, "requires": { "assert-plus": "^1.0.0" @@ -25308,7 +24969,7 @@ "death": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/death/-/death-1.1.0.tgz", - "integrity": "sha1-AaqcQB7dknUFFEcLgmY5DGbGcxg=", + "integrity": "sha512-vsV6S4KVHvTGxbEcij7hkWRv0It+sGGWVOM67dQde/o5Xjnr+KmLjxWJii2uEObIrt1CcM9w0Yaovx+iOlIL+w==", "dev": true }, "debug": { @@ -25323,13 +24984,13 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true }, "decamelize-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", - "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", "dev": true, "requires": { "decamelize": "^1.1.0", @@ -25339,134 +25000,56 @@ "map-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", "dev": true } } }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "dev": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, "deep-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.2.tgz", + "integrity": "sha512-gT18+YW4CcW/DBNTwAmqTtkJh7f9qqScu2qFVlx7kCoeY9tlBu9cUcr7+I+Z/noG8INehS3xQgLpTtd/QUTn4w==", "dev": true, "requires": { "type-detect": "^4.0.0" } }, "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, - "deferred-leveldown": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-5.3.0.tgz", - "integrity": "sha512-a59VOT+oDy7vtAbLRCZwWgxu2BaCfd5Hk7wxJd48ei7I+nsg8Orlb9CLG0PMZienk9BSUKgeAqkO2+Lw+1+Ukw==", - "dev": true, - "requires": { - "abstract-leveldown": "~6.2.1", - "inherits": "^2.0.3" - }, - "dependencies": { - "abstract-leveldown": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz", - "integrity": "sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ==", - "dev": true, - "requires": { - "buffer": "^5.5.0", - "immediate": "^3.2.3", - "level-concat-iterator": "~2.0.0", - "level-supports": "~1.0.0", - "xtend": "~4.0.0" - } - } - } - }, "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", "dev": true, "requires": { - "object-keys": "^1.0.12" + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" } }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true }, "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true - }, - "des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true }, "detect-port": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.3.0.tgz", - "integrity": "sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.5.1.tgz", + "integrity": "sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==", "dev": true, "requires": { "address": "^1.0.1", - "debug": "^2.6.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } + "debug": "4" } }, "diff": { @@ -25475,15 +25058,13 @@ "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", "dev": true }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "difflib": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/difflib/-/difflib-0.2.4.tgz", + "integrity": "sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w==", "dev": true, "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" + "heap": ">= 0.2.0" } }, "dir-glob": { @@ -25493,14 +25074,6 @@ "dev": true, "requires": { "path-type": "^4.0.0" - }, - "dependencies": { - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - } } }, "doctrine": { @@ -25512,51 +25085,22 @@ "esutils": "^2.0.2" } }, - "dom-walk": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", - "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", - "dev": true - }, "dotenv": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.0.tgz", - "integrity": "sha512-qD9WU0MPM4SWLPJy/r2Be+2WgQj8plChsyrCNQzW/0WjvcJQiKQJ9mH3ZgB3fxbUUxgc/11ZJ0Fi5KiimWGz2Q==", - "dev": true - }, - "drbg.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/drbg.js/-/drbg.js-1.0.1.tgz", - "integrity": "sha1-Pja2xCs3BDgjzbwzLVjzHiRFSAs=", - "dev": true, - "requires": { - "browserify-aes": "^1.0.6", - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4" - } - }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", + "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", "dev": true }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", "dev": true, "requires": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" } }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "dev": true - }, "elliptic": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", @@ -25570,6 +25114,14 @@ "inherits": "^2.0.4", "minimalistic-assert": "^1.0.1", "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } } }, "email-addresses": { @@ -25579,38 +25131,11 @@ "dev": true }, "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "encoding-down": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/encoding-down/-/encoding-down-6.3.0.tgz", - "integrity": "sha512-QKrV0iKR6MZVJV08QY0wp1e7vF6QbhnbQhb07bwpEyuz4uZiZgPlEGdkCROuFkUwdxlFaiPIhjyarH1ee/3vhw==", - "dev": true, - "requires": { - "abstract-leveldown": "^6.2.1", - "inherits": "^2.0.3", - "level-codec": "^9.0.0", - "level-errors": "^2.0.0" - } - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, "enquirer": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", @@ -25626,15 +25151,6 @@ "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true }, - "errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "requires": { - "prr": "~1.0.1" - } - }, "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -25645,33 +25161,57 @@ } }, "es-abstract": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.2.tgz", - "integrity": "sha512-gfSBJoZdlL2xRiOCy0g8gLMryhoe1TlimjzU99L/31Z8QEGIhVQI+EWwt5lT+AuU9SnorVupXFqqOGqGfsyO6w==", + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz", + "integrity": "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==", "dev": true, "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.3", "get-symbol-description": "^1.0.0", "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", "has-symbols": "^1.0.3", "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", + "is-callable": "^1.2.7", "is-negative-zero": "^2.0.2", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.1", + "is-shared-array-buffer": "^1.0.2", "is-string": "^1.0.7", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.0", + "object-inspect": "^1.12.2", "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" + }, + "dependencies": { + "object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + } + } } }, + "es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", + "dev": true + }, "es-to-primitive": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", @@ -25683,60 +25223,22 @@ "is-symbol": "^1.0.2" } }, - "es5-ext": { - "version": "0.10.53", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", - "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", - "dev": true, - "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.3", - "next-tick": "~1.0.0" - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "dev": true, - "requires": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true - }, "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true }, "escodegen": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", - "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", + "integrity": "sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A==", "dev": true, "requires": { "esprima": "^2.7.1", @@ -25746,196 +25248,166 @@ "source-map": "~0.2.0" }, "dependencies": { - "esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "estraverse": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", + "integrity": "sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA==", "dev": true }, - "source-map": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", - "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", "dev": true, - "optional": true, "requires": { - "amdefine": ">=0.0.4" + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" } } } }, "eslint": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz", - "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.9.1", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.27.0.tgz", + "integrity": "sha512-0y1bfG2ho7mty+SiILVf9PfuRA49ek4Nc60Wmmu62QlobNR+CeXa4xXIJgcuwSQgZiWaPH+5BDsctpIW0PR/wQ==", + "dev": true, + "requires": { + "@eslint/eslintrc": "^1.3.3", + "@humanwhocodes/config-array": "^0.11.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", "doctrine": "^3.0.0", - "eslint-scope": "^4.0.3", - "eslint-utils": "^1.3.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^5.0.1", - "esquery": "^1.0.1", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob": "^7.1.2", - "globals": "^11.7.0", - "ignore": "^4.0.6", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.15.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", - "inquirer": "^6.2.2", - "js-yaml": "^3.13.0", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.11", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.2", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^5.5.1", - "strip-ansi": "^4.0.0", - "strip-json-comments": "^2.0.1", - "table": "^5.2.3", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" }, "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", "dev": true, "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" } }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, "eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, "requires": { - "esrecurse": "^4.1.0", + "esrecurse": "^4.3.0", "estraverse": "^4.1.1" - }, - "dependencies": { - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - } } }, "eslint-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", - "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, "requires": { - "eslint-visitor-keys": "^1.1.0" + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } } }, "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", "dev": true }, "espree": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", - "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", + "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", "dev": true, "requires": { - "acorn": "^6.0.7", - "acorn-jsx": "^5.0.0", - "eslint-visitor-keys": "^1.0.0" + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" } }, "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==", "dev": true }, "esquery": { @@ -25948,9 +25420,9 @@ }, "dependencies": { "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true } } @@ -25965,17 +25437,17 @@ }, "dependencies": { "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true } } }, "estraverse": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", - "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true }, "esutils": { @@ -25984,33 +25456,35 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "dev": true - }, "eth-ens-namehash": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz", - "integrity": "sha1-IprEbsqG1S4MmR58sq74P/D2i88=", + "integrity": "sha512-VWEI1+KJfz4Km//dadyvBBoBeSQ0MHTXPvr8UIXiLW6IanxvAV+DmlZAijZwAyggqGUfwQBeHf7tc9wzc1piSw==", "dev": true, "requires": { "idna-uts46-hx": "^2.3.1", "js-sha3": "^0.5.7" + }, + "dependencies": { + "js-sha3": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", + "integrity": "sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==", + "dev": true + } } }, "eth-gas-reporter": { - "version": "0.2.24", - "resolved": "https://registry.npmjs.org/eth-gas-reporter/-/eth-gas-reporter-0.2.24.tgz", - "integrity": "sha512-RbXLC2bnuPHzIMU/rnLXXlb6oiHEEKu7rq2UrAX/0mfo0Lzrr/kb9QTjWjfz8eNvc+uu6J8AuBwI++b+MLNI2w==", + "version": "0.2.25", + "resolved": "https://registry.npmjs.org/eth-gas-reporter/-/eth-gas-reporter-0.2.25.tgz", + "integrity": "sha512-1fRgyE4xUB8SoqLgN3eDfpDfwEfRxh2Sz1b7wzFbyQA+9TekMmvSjjoRu9SKcSVyK+vLkLIsVbJDsTWjw195OQ==", "dev": true, "requires": { "@ethersproject/abi": "^5.0.0-beta.146", "@solidity-parser/parser": "^0.14.0", "cli-table3": "^0.5.0", "colors": "1.4.0", - "ethereumjs-util": "6.2.0", + "ethereum-cryptography": "^1.0.3", "ethers": "^4.0.40", "fs-readdir-recursive": "^1.1.0", "lodash": "^4.17.14", @@ -26023,15 +25497,6 @@ "sync-request": "^6.0.0" }, "dependencies": { - "@types/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, "ansi-colors": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", @@ -26053,6 +25518,21 @@ "color-convert": "^1.9.0" } }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", @@ -26120,7 +25600,13 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", "dev": true }, "debug": { @@ -26138,19 +25624,34 @@ "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", "dev": true }, - "ethereumjs-util": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.0.tgz", - "integrity": "sha512-vb0XN9J2QGdZGIEKG2vXM+kUdEivUfU6Wmi5y0cg+LRhDYKnXIZ/Lz7XjFbHRR9VIKq2lVGLzGBkA++y2nOdOQ==", + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "ethereum-cryptography": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.1.2.tgz", + "integrity": "sha512-XDSJlg4BD+hq9N2FjvotwUET9Tfxpxc3kWGE2AqUG5vcbeunnbImVk3cj6e/xT3phdW21mE8R5IugU4fspQDcQ==", "dev": true, "requires": { - "@types/bn.js": "^4.11.3", - "bn.js": "^4.11.0", - "create-hash": "^1.1.2", - "ethjs-util": "0.1.6", - "keccak": "^2.0.0", - "rlp": "^2.2.3", - "secp256k1": "^3.0.1" + "@noble/hashes": "1.1.2", + "@noble/secp256k1": "1.6.3", + "@scure/bip32": "1.1.0", + "@scure/bip39": "1.1.0" } }, "ethers": { @@ -26209,10 +25710,19 @@ "path-is-absolute": "^1.0.0" } }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true }, "hash.js": { @@ -26225,16 +25735,20 @@ "minimalistic-assert": "^1.0.0" } }, - "keccak": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/keccak/-/keccak-2.1.0.tgz", - "integrity": "sha512-m1wbJRTo+gWbctZWay9i26v5fFnYkOn7D5PCxJ3fZUGUEb49dE1Pm4BREUYCt/aoO6di7jeoGmhvqN9Nzylm3Q==", + "js-sha3": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", + "integrity": "sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==", + "dev": true + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", "dev": true, "requires": { - "bindings": "^1.5.0", - "inherits": "^2.0.4", - "nan": "^2.14.0", - "safe-buffer": "^5.2.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" } }, "locate-path": { @@ -26256,6 +25770,24 @@ "chalk": "^2.4.2" } }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, "mocha": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.2.0.tgz", @@ -26294,18 +25826,6 @@ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", "dev": true }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, "p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -26324,10 +25844,10 @@ "p-limit": "^2.0.0" } }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true }, "readdirp": { @@ -26351,26 +25871,10 @@ "integrity": "sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw==", "dev": true }, - "secp256k1": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-3.8.0.tgz", - "integrity": "sha512-k5ke5avRZbtl9Tqx/SA7CbY3NF6Ro+Sj9cZxezFzuBlLDmyqPiL8hJJ+EmzD8Ig4LUDByHJ3/iPOVoRixs/hmw==", - "dev": true, - "requires": { - "bindings": "^1.5.0", - "bip66": "^1.1.5", - "bn.js": "^4.11.8", - "create-hash": "^1.2.0", - "drbg.js": "^1.0.1", - "elliptic": "^6.5.2", - "nan": "^2.14.0", - "safe-buffer": "^5.1.2" - } - }, "setimmediate": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.4.tgz", - "integrity": "sha1-IOgd5iLUoCWIzgyNqJc8vPHTE48=", + "integrity": "sha512-/TjEmXQVEzdod/FFskf3o7oOAsGhHf2j1dZqRFbDzq4F3mvvxflIIi4Hd3bLQE9y/CpwqfSQam5JakI/mi3Pog==", "dev": true }, "string-width": { @@ -26393,6 +25897,12 @@ "ansi-regex": "^4.1.0" } }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true + }, "supports-color": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", @@ -26405,13 +25915,22 @@ "uuid": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.1.tgz", - "integrity": "sha1-wqMN7bPlNdcsz4LjQ5QaULqFM6w=", + "integrity": "sha512-nWg9+Oa3qD2CQzHIP4qKUqwNfzKn8P0LtFhotaCTFchsV7ZfDhAybeip/HZVeMIpZi9JgY1E3nUlwaCmZT1sEg==", "dev": true }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", "dev": true }, "wrap-ansi": { @@ -26472,32 +25991,13 @@ } } }, - "eth-lib": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", - "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", - "dev": true, - "requires": { - "bn.js": "^4.11.6", - "elliptic": "^6.4.0", - "xhr-request-promise": "^0.1.2" - } - }, "ethereum-bloom-filters": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.9.tgz", - "integrity": "sha512-GiK/RQkAkcVaEdxKVkPcG07PQ5vD7v2MFSHgZmBJSfMzNRHimntdBithsHAT89tAXnIpzVDWt8iaCD1DvkaxGg==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz", + "integrity": "sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==", "dev": true, "requires": { "js-sha3": "^0.8.0" - }, - "dependencies": { - "js-sha3": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", - "dev": true - } } }, "ethereum-checksum-address": { @@ -26577,47 +26077,11 @@ "@types/node": "*" } }, - "ethereumjs-util": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", - "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", - "dev": true, - "requires": { - "@types/bn.js": "^4.11.3", - "bn.js": "^4.11.0", - "create-hash": "^1.1.2", - "elliptic": "^6.5.2", - "ethereum-cryptography": "^0.1.3", - "ethjs-util": "0.1.6", - "rlp": "^2.2.3" - } - } - } - }, - "ethereumjs-common": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/ethereumjs-common/-/ethereumjs-common-1.5.2.tgz", - "integrity": "sha512-hTfZjwGX52GS2jcVO6E2sx4YuFnf0Fhp5ylo4pEPhEffNln7vS59Hr5sLnp3/QCazFLluuBZ+FZ6J5HTp0EqCA==", - "dev": true - }, - "ethereumjs-tx": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz", - "integrity": "sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw==", - "dev": true, - "requires": { - "ethereumjs-common": "^1.5.0", - "ethereumjs-util": "^6.0.0" - }, - "dependencies": { - "@types/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", - "dev": true, - "requires": { - "@types/node": "*" - } + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true }, "ethereumjs-util": { "version": "6.2.1", @@ -26637,9 +26101,9 @@ } }, "ethereumjs-util": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.4.tgz", - "integrity": "sha512-p6KmuPCX4mZIqsQzXfmSx9Y0l2hqf+VkAiwSisW3UKUFdk8ZkAt+AYaor83z2nSi6CU2zSsXMlD80hAbNEGM0A==", + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", + "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", "dev": true, "requires": { "@types/bn.js": "^5.1.0", @@ -26647,58 +26111,50 @@ "create-hash": "^1.1.2", "ethereum-cryptography": "^0.1.3", "rlp": "^2.2.4" - }, - "dependencies": { - "bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", - "dev": true - } } }, "ethers": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.6.2.tgz", - "integrity": "sha512-EzGCbns24/Yluu7+ToWnMca3SXJ1Jk1BvWB7CCmVNxyOeM4LLvw2OLuIHhlkhQk1dtOcj9UMsdkxUh8RiG1dxQ==", - "dev": true, - "requires": { - "@ethersproject/abi": "5.6.0", - "@ethersproject/abstract-provider": "5.6.0", - "@ethersproject/abstract-signer": "5.6.0", - "@ethersproject/address": "5.6.0", - "@ethersproject/base64": "5.6.0", - "@ethersproject/basex": "5.6.0", - "@ethersproject/bignumber": "5.6.0", - "@ethersproject/bytes": "5.6.1", - "@ethersproject/constants": "5.6.0", - "@ethersproject/contracts": "5.6.0", - "@ethersproject/hash": "5.6.0", - "@ethersproject/hdnode": "5.6.0", - "@ethersproject/json-wallets": "5.6.0", - "@ethersproject/keccak256": "5.6.0", - "@ethersproject/logger": "5.6.0", - "@ethersproject/networks": "5.6.1", - "@ethersproject/pbkdf2": "5.6.0", - "@ethersproject/properties": "5.6.0", - "@ethersproject/providers": "5.6.2", - "@ethersproject/random": "5.6.0", - "@ethersproject/rlp": "5.6.0", - "@ethersproject/sha2": "5.6.0", - "@ethersproject/signing-key": "5.6.0", - "@ethersproject/solidity": "5.6.0", - "@ethersproject/strings": "5.6.0", - "@ethersproject/transactions": "5.6.0", - "@ethersproject/units": "5.6.0", - "@ethersproject/wallet": "5.6.0", - "@ethersproject/web": "5.6.0", - "@ethersproject/wordlists": "5.6.0" + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "dev": true, + "requires": { + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/abstract-signer": "5.7.0", + "@ethersproject/address": "5.7.0", + "@ethersproject/base64": "5.7.0", + "@ethersproject/basex": "5.7.0", + "@ethersproject/bignumber": "5.7.0", + "@ethersproject/bytes": "5.7.0", + "@ethersproject/constants": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/hash": "5.7.0", + "@ethersproject/hdnode": "5.7.0", + "@ethersproject/json-wallets": "5.7.0", + "@ethersproject/keccak256": "5.7.0", + "@ethersproject/logger": "5.7.0", + "@ethersproject/networks": "5.7.1", + "@ethersproject/pbkdf2": "5.7.0", + "@ethersproject/properties": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/random": "5.7.0", + "@ethersproject/rlp": "5.7.0", + "@ethersproject/sha2": "5.7.0", + "@ethersproject/signing-key": "5.7.0", + "@ethersproject/solidity": "5.7.0", + "@ethersproject/strings": "5.7.0", + "@ethersproject/transactions": "5.7.0", + "@ethersproject/units": "5.7.0", + "@ethersproject/wallet": "5.7.0", + "@ethersproject/web": "5.7.1", + "@ethersproject/wordlists": "5.7.0" } }, "ethjs-unit": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", - "integrity": "sha1-xmWSHkduh7ziqdWIpv4EBbLEFpk=", + "integrity": "sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==", "dev": true, "requires": { "bn.js": "4.11.6", @@ -26708,7 +26164,7 @@ "bn.js": { "version": "4.11.6", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", "dev": true } } @@ -26729,12 +26185,6 @@ "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", "dev": true }, - "eventemitter3": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", - "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==", - "dev": true - }, "evp_bytestokey": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", @@ -26745,102 +26195,6 @@ "safe-buffer": "^5.1.1" } }, - "exit-on-epipe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz", - "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==", - "dev": true - }, - "express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", - "dev": true, - "requires": { - "accepts": "~1.3.7", - "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", - "content-type": "~1.0.4", - "cookie": "0.4.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", - "dev": true - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - } - } - }, - "ext": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", - "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", - "dev": true, - "requires": { - "type": "^2.0.0" - }, - "dependencies": { - "type": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.5.0.tgz", - "integrity": "sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==", - "dev": true - } - } - }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -26861,7 +26215,7 @@ "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", "dev": true }, "fast-deep-equal": { @@ -26877,17 +26231,27 @@ "dev": true }, "fast-glob": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", - "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.0", + "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.2", - "picomatch": "^2.2.1" + "micromatch": "^4.0.4" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } } }, "fast-json-stable-stringify": { @@ -26899,13 +26263,13 @@ "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, "fastq": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz", - "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", "dev": true, "requires": { "reusify": "^1.0.4" @@ -26914,31 +26278,33 @@ "figures": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", "dev": true, "requires": { "escape-string-regexp": "^1.0.5" + }, + "dependencies": { + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + } } }, "file-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "requires": { - "flat-cache": "^2.0.1" + "flat-cache": "^3.0.4" } }, - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true - }, "filename-reserved-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", - "integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=", + "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==", "dev": true }, "filenamify": { @@ -26961,38 +26327,6 @@ "to-regex-range": "^5.0.1" } }, - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, "find-cache-dir": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", @@ -27007,7 +26341,7 @@ "find-replace": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-1.0.3.tgz", - "integrity": "sha1-uI5zZNLZyVlVnziMZmcNYTBEH6A=", + "integrity": "sha512-KrUnjzDCD9426YnCP56zGYy/eieTnhtK6Vn++j+JJzmlsWWwEkDnsyVF575spT6HJ6Ow9tlbT3TQTDsa+O4UWA==", "dev": true, "requires": { "array-back": "^1.0.4", @@ -27017,7 +26351,7 @@ "array-back": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz", - "integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=", + "integrity": "sha512-1WxbZvrmyhkNoeYcizokbmh5oiOCIfyvGtcqbK3Ls1v1fKcquzxnQSceOx6tzq7jmai2kFLWIpGND2cLhH6TPw==", "dev": true, "requires": { "typical": "^2.6.0" @@ -27026,12 +26360,13 @@ } }, "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "requires": { - "locate-path": "^2.0.0" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" } }, "find-yarn-workspace-root": { @@ -27050,72 +26385,48 @@ "dev": true }, "flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, "requires": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" - }, - "dependencies": { - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } + "flatted": "^3.1.0", + "rimraf": "^3.0.2" } }, "flatted": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", "dev": true }, "follow-redirects": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.0.tgz", - "integrity": "sha512-0vRwd7RKQBTt+mgu87mtYeofLFZpTas2S9zY+jIeuLJMNvudIgF52nr19q40HOwH5RrhWIPuj9puybzSJiRrVg==", - "dev": true - }, - "foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", "dev": true }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", "dev": true }, "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", "dev": true, "requires": { "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", + "combined-stream": "^1.0.8", "mime-types": "^2.1.12" } }, - "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", - "dev": true - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "fp-ts": { + "version": "1.19.3", + "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz", + "integrity": "sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==", "dev": true }, "fs-extra": { @@ -27129,15 +26440,6 @@ "universalify": "^0.1.0" } }, - "fs-minipass": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", - "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", - "dev": true, - "requires": { - "minipass": "^2.6.0" - } - }, "fs-readdir-recursive": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", @@ -27147,7 +26449,7 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, "fsevents": { @@ -27163,10 +26465,28 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, + "function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + } + }, "functional-red-black-tree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true }, "ganache-core": { @@ -34229,35 +33549,26 @@ "get-func-name": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", "dev": true }, "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", "dev": true, "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", - "has-symbols": "^1.0.1" + "has-symbols": "^1.0.3" } }, "get-port": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", - "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=", + "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==", "dev": true }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, "get-symbol-description": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", @@ -34271,7 +33582,7 @@ "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", "dev": true, "requires": { "assert-plus": "^1.0.0" @@ -34295,18 +33606,12 @@ "array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", "dev": true, "requires": { "array-uniq": "^1.0.1" } }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, "fs-extra": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", @@ -34321,7 +33626,7 @@ "globby": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", "dev": true, "requires": { "array-union": "^1.0.1", @@ -34334,7 +33639,7 @@ "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true } } @@ -34381,13 +33686,19 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true }, "supports-color": { @@ -34402,9 +33713,9 @@ } }, "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -34416,22 +33727,12 @@ } }, "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "global": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", - "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "requires": { - "min-document": "^2.19.0", - "process": "^0.11.10" + "is-glob": "^4.0.3" } }, "global-modules": { @@ -34452,61 +33753,52 @@ "ini": "^1.3.5", "kind-of": "^6.0.2", "which": "^1.3.1" + }, + "dependencies": { + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } } }, "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } }, "globby": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", - "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "requires": { - "@types/glob": "^7.1.1", "array-union": "^2.1.0", "dir-glob": "^3.0.1", - "fast-glob": "^3.0.3", - "glob": "^7.1.3", - "ignore": "^5.1.1", - "merge2": "^1.2.3", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", "slash": "^3.0.0" - }, - "dependencies": { - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - } - } - }, - "got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "dev": true, - "requires": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" } }, "graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", "dev": true }, "growl": { @@ -34526,12 +33818,20 @@ "source-map": "^0.6.1", "uglify-js": "^3.1.4", "wordwrap": "^1.0.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", "dev": true }, "har-validator": { @@ -34545,20 +33845,25 @@ } }, "hardhat": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.9.2.tgz", - "integrity": "sha512-elTcUK1EdFverWinybQ+DoJzsM6sgiHUYs0ZYNNXMfESty6ESHiFSwkfJsC88/q09vmIz6YVaMh73BYnYd+feQ==", + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.12.2.tgz", + "integrity": "sha512-f3ZhzXy1uyQv0UXnAQ8GCBOWjzv++WJNb7bnm10SsyC3dB7vlPpsMWBNhq7aoRxKrNhX9tCev81KFV3i5BTeMQ==", "dev": true, "requires": { - "@ethereumjs/block": "^3.6.0", - "@ethereumjs/blockchain": "^5.5.0", - "@ethereumjs/common": "^2.6.0", - "@ethereumjs/tx": "^3.4.0", - "@ethereumjs/vm": "^5.6.0", "@ethersproject/abi": "^5.1.2", "@metamask/eth-sig-util": "^4.0.0", + "@nomicfoundation/ethereumjs-block": "^4.0.0", + "@nomicfoundation/ethereumjs-blockchain": "^6.0.0", + "@nomicfoundation/ethereumjs-common": "^3.0.0", + "@nomicfoundation/ethereumjs-evm": "^1.0.0", + "@nomicfoundation/ethereumjs-rlp": "^4.0.0", + "@nomicfoundation/ethereumjs-statemanager": "^1.0.0", + "@nomicfoundation/ethereumjs-trie": "^5.0.0", + "@nomicfoundation/ethereumjs-tx": "^4.0.0", + "@nomicfoundation/ethereumjs-util": "^8.0.0", + "@nomicfoundation/ethereumjs-vm": "^6.0.0", + "@nomicfoundation/solidity-analyzer": "^0.1.0", "@sentry/node": "^5.18.1", - "@solidity-parser/parser": "^0.14.1", "@types/bn.js": "^5.1.0", "@types/lru-cache": "^5.1.0", "abort-controller": "^3.0.0", @@ -34571,31 +33876,28 @@ "debug": "^4.1.1", "enquirer": "^2.3.0", "env-paths": "^2.2.0", - "ethereum-cryptography": "^0.1.2", + "ethereum-cryptography": "^1.0.3", "ethereumjs-abi": "^0.6.8", - "ethereumjs-util": "^7.1.3", "find-up": "^2.1.0", "fp-ts": "1.19.3", "fs-extra": "^7.0.1", - "glob": "^7.1.3", + "glob": "7.2.0", "immutable": "^4.0.0-rc.12", "io-ts": "1.10.4", + "keccak": "^3.0.2", "lodash": "^4.17.11", - "merkle-patricia-tree": "^4.2.2", "mnemonist": "^0.38.0", - "mocha": "^9.2.0", + "mocha": "^10.0.0", "p-map": "^4.0.0", "qs": "^6.7.0", "raw-body": "^2.4.1", "resolve": "1.17.0", "semver": "^6.3.0", - "slash": "^3.0.0", "solc": "0.7.3", "source-map-support": "^0.5.13", "stacktrace-parser": "^0.1.10", - "true-case-path": "^2.2.1", "tsort": "0.0.1", - "undici": "^4.14.1", + "undici": "^5.4.0", "uuid": "^8.3.2", "ws": "^7.4.6" }, @@ -34632,69 +33934,106 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, - "fp-ts": { - "version": "1.19.3", - "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz", - "integrity": "sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==", + "commander": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", + "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", "dev": true }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true }, - "io-ts": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-1.10.4.tgz", - "integrity": "sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==", + "ethereum-cryptography": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.1.2.tgz", + "integrity": "sha512-XDSJlg4BD+hq9N2FjvotwUET9Tfxpxc3kWGE2AqUG5vcbeunnbImVk3cj6e/xT3phdW21mE8R5IugU4fspQDcQ==", "dev": true, "requires": { - "fp-ts": "^1.0.0" + "@noble/hashes": "1.1.2", + "@noble/secp256k1": "1.6.3", + "@scure/bip32": "1.1.0", + "@scure/bip39": "1.1.0" } }, - "js-sha3": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true }, "jsonfile": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", "dev": true, "requires": { "graceful-fs": "^4.1.6" } }, - "qs": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", - "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", "dev": true, "requires": { - "side-channel": "^1.0.4" + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" } }, - "resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dev": true, "requires": { - "path-parse": "^1.0.6" + "p-try": "^1.0.0" } }, - "slash": { + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true + }, + "path-exists": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, "solc": { "version": "0.7.3", "resolved": "https://registry.npmjs.org/solc/-/solc-0.7.3.tgz", @@ -34715,7 +34054,7 @@ "fs-extra": { "version": "0.30.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", - "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", + "integrity": "sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -34741,30 +34080,63 @@ "requires": { "has-flag": "^3.0.0" } + } + } + }, + "hardhat-contract-sizer": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/hardhat-contract-sizer/-/hardhat-contract-sizer-2.6.1.tgz", + "integrity": "sha512-b8wS7DBvyo22kmVwpzstAQTdDCThpl/ySBqZh5ga9Yxjf61/uTL12TEg5nl7lDeWy73ntEUzxMwY6XxbQEc2wA==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "cli-table3": "^0.6.0" + }, + "dependencies": { + "cli-table3": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", + "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", + "dev": true, + "requires": { + "@colors/colors": "1.5.0", + "string-width": "^4.2.0" + } }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } } } }, "hardhat-gas-reporter": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.8.tgz", - "integrity": "sha512-1G5thPnnhcwLHsFnl759f2tgElvuwdkzxlI65fC9PwxYMEe9cmjkVAAWTf3/3y8uP6ZSPiUiOW8PgZnykmZe0g==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.9.tgz", + "integrity": "sha512-INN26G3EW43adGKBNzYWOlI3+rlLnasXTwW79YNnUhXPDa+yHESgt639dJEs37gCjhkbNKcRRJnomXEuMFBXJg==", "dev": true, "requires": { "array-uniq": "1.0.3", - "eth-gas-reporter": "^0.2.24", + "eth-gas-reporter": "^0.2.25", "sha1": "^1.1.1" } }, "hardhat-tracer": { - "version": "1.1.0-rc.3", - "resolved": "https://registry.npmjs.org/hardhat-tracer/-/hardhat-tracer-1.1.0-rc.3.tgz", - "integrity": "sha512-UGOfwRXkdxWM66JqcyGDJfIjiDXNkqgiaomLPvILg3nppVTjxtBmddYtnvGhDrV9FE1NgWyBnP1B35NaRIKM8A==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/hardhat-tracer/-/hardhat-tracer-1.1.1.tgz", + "integrity": "sha512-NgOnnNAvARBtYC5x5c7Qcbw+lr+Jb+0OV1NC2tTpUUQj0ym+/0y42F0CYT/zKnHw3uf046NKg0CNTzYg1j0JWg==", "dev": true, "requires": { "ethers": "^5.6.1" @@ -34780,9 +34152,9 @@ } }, "has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", "dev": true }, "has-flag": { @@ -34791,11 +34163,14 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "has-symbol-support-x": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", - "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==", - "dev": true + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.1" + } }, "has-symbols": { "version": "1.0.3", @@ -34803,15 +34178,6 @@ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true }, - "has-to-string-tag-x": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", - "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", - "dev": true, - "requires": { - "has-symbol-support-x": "^1.4.1" - } - }, "has-tostringtag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", @@ -34848,10 +34214,16 @@ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true }, + "heap": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz", + "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==", + "dev": true + }, "hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", "dev": true, "requires": { "hash.js": "^1.0.3", @@ -34877,31 +34249,19 @@ "parse-cache-control": "^1.0.1" } }, - "http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", - "dev": true - }, "http-errors": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", - "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, "requires": { - "depd": "~1.1.2", + "depd": "2.0.0", "inherits": "2.0.4", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" } }, - "http-https": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/http-https/-/http-https-1.0.0.tgz", - "integrity": "sha1-L5CN1fHbQGjAWM1ubUzjkskTOJs=", - "dev": true - }, "http-response-object": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz", @@ -34922,7 +34282,7 @@ "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", "dev": true, "requires": { "assert-plus": "^1.0.0", @@ -34931,9 +34291,9 @@ } }, "https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, "requires": { "agent-base": "6", @@ -34965,49 +34325,43 @@ "dev": true }, "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true - }, - "immediate": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz", - "integrity": "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true }, "immutable": { - "version": "4.0.0-rc.12", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0-rc.12.tgz", - "integrity": "sha512-0M2XxkZLx/mi3t8NVwIm1g8nHoEmM9p9UBl/G9k4+hm0kBgOVdMV/B3CY5dQ8qG8qc80NN4gDV4HQv6FTJ5q7A==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", + "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", "dev": true }, "import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" } }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true }, "indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dev": true, "requires": { "once": "^1.3.0", @@ -35053,6 +34407,12 @@ "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", "dev": true }, + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -35085,13 +34445,19 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true }, "strip-ansi": { @@ -35101,14 +34467,6 @@ "dev": true, "requires": { "ansi-regex": "^4.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - } } }, "supports-color": { @@ -35142,35 +34500,32 @@ "invert-kv": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==", "dev": true }, - "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "dev": true - }, - "is-arguments": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", - "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", + "io-ts": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-1.10.4.tgz", + "integrity": "sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==", "dev": true, "requires": { - "call-bind": "^1.0.0" + "fp-ts": "^1.0.0" } }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, "is-bigint": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz", - "integrity": "sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==", - "dev": true + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "requires": { + "has-bigints": "^1.0.1" + } }, "is-binary-path": { "version": "2.1.0", @@ -35182,12 +34537,13 @@ } }, "is-boolean-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz", - "integrity": "sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dev": true, "requires": { - "call-bind": "^1.0.2" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" } }, "is-buffer": { @@ -35197,9 +34553,9 @@ "dev": true }, "is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true }, "is-ci": { @@ -35211,25 +34567,19 @@ "ci-info": "^2.0.0" } }, - "is-core-module": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.3.0.tgz", - "integrity": "sha512-xSphU2KG9867tsYdLD4RWQ1VqdFl4HTO9Thf3I/3dLEfr0dbPTWKsuCKrgqMljg4nPE+Gq0VCnzT3gr0CyBmsw==", + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "dev": true, "requires": { - "has": "^1.0.3" + "has-tostringtag": "^1.0.0" } }, - "is-date-object": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz", - "integrity": "sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==", - "dev": true - }, "is-directory": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", "dev": true }, "is-docker": { @@ -35241,31 +34591,19 @@ "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "is-function": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", - "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==", - "dev": true - }, - "is-generator-function": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.9.tgz", - "integrity": "sha512-ZJ34p1uvIfptHCN7sFTjGibB9/oBg17sHqzDLfuwhvmN/qLVvIQXRQ8licZQ35WJ8KuEQt/etnnzQFI9C9Ue/A==", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", "dev": true }, "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "requires": { "is-extglob": "^2.1.1" @@ -35274,7 +34612,7 @@ "is-hex-prefixed": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", - "integrity": "sha1-fY035q135dEnFIkTxXPggtd39VQ=", + "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==", "dev": true }, "is-negative-zero": { @@ -35290,21 +34628,24 @@ "dev": true }, "is-number-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz", - "integrity": "sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==", - "dev": true + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } }, - "is-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz", - "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==", + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true }, "is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", "dev": true }, "is-regex": { @@ -35317,23 +34658,14 @@ "has-tostringtag": "^1.0.0" } }, - "is-retry-allowed": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", - "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==", - "dev": true - }, "is-shared-array-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", - "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", - "dev": true - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } }, "is-string": { "version": "1.0.7", @@ -35353,23 +34685,10 @@ "has-symbols": "^1.0.2" } }, - "is-typed-array": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.5.tgz", - "integrity": "sha512-S+GRDgJlR3PyEbsX/Fobd9cqpZBuvUS+8asRqYDMLCb2qMzt1oz5m5oxQCxOgUDxiWsOVNi4yaF+/uvdlHlYug==", - "dev": true, - "requires": { - "available-typed-arrays": "^1.0.2", - "call-bind": "^1.0.2", - "es-abstract": "^1.18.0-next.2", - "foreach": "^2.0.5", - "has-symbols": "^1.0.1" - } - }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "dev": true }, "is-unicode-supported": { @@ -35387,7 +34706,7 @@ "is-utf8": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", "dev": true }, "is-weakref": { @@ -35411,35 +34730,31 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", "dev": true }, - "isurl": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", - "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", - "dev": true, - "requires": { - "has-to-string-tag-x": "^1.2.0", - "is-object": "^1.0.1" - } + "js-sdsl": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", + "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==", + "dev": true }, "js-sha3": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", - "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", "dev": true }, "js-tokens": { @@ -35449,25 +34764,18 @@ "dev": true }, "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "^2.0.1" } }, "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true - }, - "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", "dev": true }, "json-parse-better-errors": { @@ -35477,9 +34785,9 @@ "dev": true }, "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", "dev": true }, "json-schema-traverse": { @@ -35491,69 +34799,62 @@ "json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", "dev": true }, "jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, "requires": { "graceful-fs": "^4.1.6" } }, "jsonschema": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.0.tgz", - "integrity": "sha512-/YgW6pRMr6M7C+4o8kS+B/2myEpHCrxO4PEWnqJNBFMjn7EWXqlQ4tGwL6xTHeRplwuZmcAncdvfOad1nT2yMw==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.1.tgz", + "integrity": "sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==", "dev": true }, "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", "dev": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", - "json-schema": "0.2.3", + "json-schema": "0.4.0", "verror": "1.10.0" } }, "keccak": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.1.tgz", - "integrity": "sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.2.tgz", + "integrity": "sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ==", "dev": true, "requires": { "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0" + "node-gyp-build": "^4.2.0", + "readable-stream": "^3.6.0" } }, "keccak256": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/keccak256/-/keccak256-1.0.2.tgz", - "integrity": "sha512-f2EncSgmHmmQOkgxZ+/f2VaWTNkFL6f39VIrpoX+p8cEXJVyyCs/3h9GNz/ViHgwchxvv7oG5mjT2Tk4ZqInag==", - "dev": true, - "requires": { - "bn.js": "^4.11.8", - "keccak": "^3.0.1" - } - }, - "keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/keccak256/-/keccak256-1.0.6.tgz", + "integrity": "sha512-8GLiM01PkdJVGUhR1e6M/AvWnSqYS0HaERI+K/QtStGDGlSTx2B1zTqZk4Zlqu5TxHJNTxWAdP9Y+WI50OApUw==", "dev": true, "requires": { - "json-buffer": "3.0.0" + "bn.js": "^5.2.0", + "buffer": "^6.0.3", + "keccak": "^3.0.2" } }, "kind-of": { @@ -35565,7 +34866,7 @@ "klaw": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", - "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", + "integrity": "sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==", "dev": true, "requires": { "graceful-fs": "^4.1.9" @@ -35589,114 +34890,52 @@ "lcid": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", "dev": true, "requires": { "invert-kv": "^1.0.0" } }, - "level-codec": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-9.0.2.tgz", - "integrity": "sha512-UyIwNb1lJBChJnGfjmO0OR+ezh2iVu1Kas3nvBS/BzGnx79dv6g7unpKIDNPMhfdTEGoc7mC8uAu51XEtX+FHQ==", + "level": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/level/-/level-8.0.0.tgz", + "integrity": "sha512-ypf0jjAk2BWI33yzEaaotpq7fkOPALKAgDBxggO6Q9HGX2MRXn0wbP1Jn/tJv1gtL867+YOjOB49WaUF3UoJNQ==", "dev": true, "requires": { - "buffer": "^5.6.0" + "browser-level": "^1.0.1", + "classic-level": "^1.2.0" } }, - "level-concat-iterator": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/level-concat-iterator/-/level-concat-iterator-2.0.1.tgz", - "integrity": "sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw==", + "level-supports": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-4.0.1.tgz", + "integrity": "sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA==", "dev": true }, - "level-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-2.0.1.tgz", - "integrity": "sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw==", - "dev": true, - "requires": { - "errno": "~0.1.1" - } - }, - "level-iterator-stream": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-4.0.2.tgz", - "integrity": "sha512-ZSthfEqzGSOMWoUGhTXdX9jv26d32XJuHz/5YnuHZzH6wldfWMOVwI9TBtKcya4BKTyTt3XVA0A3cF3q5CY30Q==", - "dev": true, - "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.4.0", - "xtend": "^4.0.2" - } - }, - "level-mem": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/level-mem/-/level-mem-5.0.1.tgz", - "integrity": "sha512-qd+qUJHXsGSFoHTziptAKXoLX87QjR7v2KMbqncDXPxQuCdsQlzmyX+gwrEHhlzn08vkf8TyipYyMmiC6Gobzg==", - "dev": true, - "requires": { - "level-packager": "^5.0.3", - "memdown": "^5.0.0" - } - }, - "level-packager": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/level-packager/-/level-packager-5.1.1.tgz", - "integrity": "sha512-HMwMaQPlTC1IlcwT3+swhqf/NUO+ZhXVz6TY1zZIIZlIR0YSn8GtAAWmIvKjNY16ZkEg/JcpAuQskxsXqC0yOQ==", - "dev": true, - "requires": { - "encoding-down": "^6.3.0", - "levelup": "^4.3.2" - } - }, - "level-supports": { + "level-transcoder": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-1.0.1.tgz", - "integrity": "sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg==", - "dev": true, - "requires": { - "xtend": "^4.0.2" - } - }, - "level-ws": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/level-ws/-/level-ws-2.0.0.tgz", - "integrity": "sha512-1iv7VXx0G9ec1isqQZ7y5LmoZo/ewAsyDHNA8EFDW5hqH2Kqovm33nSFkSdnLLAK+I5FlT+lo5Cw9itGe+CpQA==", + "resolved": "https://registry.npmjs.org/level-transcoder/-/level-transcoder-1.0.1.tgz", + "integrity": "sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w==", "dev": true, "requires": { - "inherits": "^2.0.3", - "readable-stream": "^3.1.0", - "xtend": "^4.0.1" - } - }, - "levelup": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/levelup/-/levelup-4.4.0.tgz", - "integrity": "sha512-94++VFO3qN95cM/d6eBXvd894oJE0w3cInq9USsyQzzoJxmiYzPAocNcuGCPGGjoXqDVJcr3C1jzt1TSjyaiLQ==", - "dev": true, - "requires": { - "deferred-leveldown": "~5.3.0", - "level-errors": "~2.0.0", - "level-iterator-stream": "~4.0.0", - "level-supports": "~1.0.0", - "xtend": "~4.0.0" + "buffer": "^6.0.3", + "module-error": "^1.0.1" } }, "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" } }, "load-json-file": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -35706,13 +34945,12 @@ } }, "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" + "p-locate": "^5.0.0" } }, "lodash": { @@ -35724,13 +34962,19 @@ "lodash.assign": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", - "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", + "integrity": "sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw==", "dev": true }, - "lodash.toarray": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz", - "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=", + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", "dev": true }, "log-symbols": { @@ -35746,7 +34990,7 @@ "loud-rejection": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "integrity": "sha512-RPNliZOFkqFumDhvYqOaNY4Uz9oJM2K9tC6JWsJJsNdhuONW4LQHRBpb0qf4pJApVffI5N39SwzWZJuEhfd7eQ==", "dev": true, "requires": { "currently-unhandled": "^0.4.1", @@ -35754,24 +34998,18 @@ } }, "loupe": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz", - "integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", + "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", "dev": true, "requires": { "get-func-name": "^2.0.0" } }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true - }, "lru_map": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", - "integrity": "sha1-tcg1G5Rky9dQM1p5ZQoOwOVhGN0=", + "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==", "dev": true }, "lru-cache": { @@ -35783,12 +35021,6 @@ "yallist": "^3.0.2" } }, - "ltgt": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz", - "integrity": "sha1-81ypHEk/e3PaDgdJUwTxezH4fuU=", - "dev": true - }, "make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -35807,7 +35039,7 @@ "map-obj": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", - "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=", + "integrity": "sha512-TzQSV2DiMYgoF5RycneKVUzIa9bQsj/B3tTgsE3dOGqlzHnGIDaC7XBE7grnA+8kZPnfqSGFe95VHc2oc0VFUQ==", "dev": true }, "markdown-table": { @@ -35833,51 +35065,21 @@ "safe-buffer": "^5.1.2" } }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", - "dev": true - }, - "memdown": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/memdown/-/memdown-5.1.0.tgz", - "integrity": "sha512-B3J+UizMRAlEArDjWHTMmadet+UKwHd3UjMgGBkZcKAxAYVPS9o0Yeiha4qvz7iGiL2Sb3igUft6p7nbFWctpw==", + "memory-level": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/memory-level/-/memory-level-1.0.0.tgz", + "integrity": "sha512-UXzwewuWeHBz5krr7EvehKcmLFNoXxGcvuYhC41tRnkrTbJohtS7kVn9akmgirtRygg+f7Yjsfi8Uu5SGSQ4Og==", "dev": true, "requires": { - "abstract-leveldown": "~6.2.1", - "functional-red-black-tree": "~1.0.1", - "immediate": "~3.2.3", - "inherits": "~2.0.1", - "ltgt": "~2.2.0", - "safe-buffer": "~5.2.0" - }, - "dependencies": { - "abstract-leveldown": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz", - "integrity": "sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ==", - "dev": true, - "requires": { - "buffer": "^5.5.0", - "immediate": "^3.2.3", - "level-concat-iterator": "~2.0.0", - "level-supports": "~1.0.0", - "xtend": "~4.0.0" - } - }, - "immediate": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.2.3.tgz", - "integrity": "sha1-0UD6j2FGWb1lQSMwl92qwlzdmRw=", - "dev": true - } + "abstract-level": "^1.0.0", + "functional-red-black-tree": "^1.0.1", + "module-error": "^1.0.1" } }, "memorystream": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", "dev": true }, "meow": { @@ -35897,77 +35099,35 @@ "yargs-parser": "^10.0.0" } }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", - "dev": true - }, "merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true }, - "merkle-patricia-tree": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-4.2.4.tgz", - "integrity": "sha512-eHbf/BG6eGNsqqfbLED9rIqbsF4+sykEaBn6OLNs71tjclbMcMOk1tEPmJKcNcNCLkvbpY/lwyOlizWsqPNo8w==", - "dev": true, - "requires": { - "@types/levelup": "^4.3.0", - "ethereumjs-util": "^7.1.4", - "level-mem": "^5.0.1", - "level-ws": "^2.0.0", - "readable-stream": "^3.6.0", - "semaphore-async-await": "^1.5.1" - } - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "dev": true - }, "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - } - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" + "braces": "^3.0.2", + "picomatch": "^2.3.1" } }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true - }, "mime-db": { - "version": "1.47.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", - "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==", + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true }, "mime-types": { - "version": "2.1.30", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz", - "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==", + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "requires": { - "mime-db": "1.47.0" + "mime-db": "1.52.0" } }, "mimic-fn": { @@ -35976,21 +35136,6 @@ "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", "dev": true }, - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true - }, - "min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", - "dev": true, - "requires": { - "dom-walk": "^0.1.0" - } - }, "minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", @@ -36000,22 +35145,22 @@ "minimalistic-crypto-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", "dev": true }, "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", "dev": true }, "minimist-options": { @@ -36028,189 +35173,75 @@ "is-plain-obj": "^1.1.0" } }, - "minipass": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", - "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", - "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", - "dev": true, - "requires": { - "minipass": "^2.9.0" - } - }, "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, "requires": { - "minimist": "^1.2.5" - } - }, - "mkdirp-promise": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz", - "integrity": "sha1-6bj2jlUsaKnBcTuEiD96HdA5uKE=", - "dev": true, - "requires": { - "mkdirp": "*" + "minimist": "^1.2.6" } }, "mnemonist": { - "version": "0.38.3", - "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.3.tgz", - "integrity": "sha512-2K9QYubXx/NAjv4VLq1d1Ly8pWNC5L3BrixtdkyTegXWJIqY+zLNDhhX/A+ZwWt70tB1S8H4BE8FLYEFyNoOBw==", + "version": "0.38.5", + "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz", + "integrity": "sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==", "dev": true, "requires": { - "obliterator": "^1.6.1" + "obliterator": "^2.0.0" } }, "mocha": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", - "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.1.0.tgz", + "integrity": "sha512-vUF7IYxEoN7XhQpFLxQAEMtE4W91acW4B6En9l97MwE9stL1A9gusXfoHZCLVHDUJ/7V5+lbCM6yMqzo5vNymg==", "dev": true, "requires": { - "@ungap/promise-all-settled": "1.1.2", "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", "chokidar": "3.5.3", - "debug": "4.3.3", + "debug": "4.3.4", "diff": "5.0.0", "escape-string-regexp": "4.0.0", "find-up": "5.0.0", "glob": "7.2.0", - "growl": "1.10.5", "he": "1.2.0", "js-yaml": "4.1.0", "log-symbols": "4.1.0", - "minimatch": "4.2.1", + "minimatch": "5.0.1", "ms": "2.1.3", - "nanoid": "3.3.1", + "nanoid": "3.3.3", "serialize-javascript": "6.0.0", "strip-json-comments": "3.1.1", "supports-color": "8.1.1", - "which": "2.0.2", - "workerpool": "6.2.0", + "workerpool": "6.2.1", "yargs": "16.2.0", "yargs-parser": "20.2.4", "yargs-unparser": "2.0.0" }, "dependencies": { - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - } - }, - "debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dev": true, - "requires": { - "ms": "2.1.2" - }, - "dependencies": { - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "dev": true }, - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "dependencies": { - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - } - } - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "requires": { - "p-locate": "^5.0.0" + "balanced-match": "^1.0.0" } }, "minimatch": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", - "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", "dev": true, "requires": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" } }, "ms": { @@ -36219,45 +35250,6 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, "supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -36267,15 +35259,6 @@ "has-flag": "^4.0.0" } }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, "yargs-parser": { "version": "20.2.4", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", @@ -36284,10 +35267,10 @@ } } }, - "mock-fs": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/mock-fs/-/mock-fs-4.14.0.tgz", - "integrity": "sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw==", + "module-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/module-error/-/module-error-1.0.2.tgz", + "integrity": "sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==", "dev": true }, "ms": { @@ -36296,82 +35279,34 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "multibase": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.6.1.tgz", - "integrity": "sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw==", - "dev": true, - "requires": { - "base-x": "^3.0.8", - "buffer": "^5.5.0" - } - }, - "multicodec": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-0.5.7.tgz", - "integrity": "sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA==", - "dev": true, - "requires": { - "varint": "^5.0.0" - } - }, - "multihashes": { - "version": "0.4.21", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-0.4.21.tgz", - "integrity": "sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw==", - "dev": true, - "requires": { - "buffer": "^5.5.0", - "multibase": "^0.7.0", - "varint": "^5.0.0" - }, - "dependencies": { - "multibase": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.7.0.tgz", - "integrity": "sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg==", - "dev": true, - "requires": { - "base-x": "^3.0.8", - "buffer": "^5.5.0" - } - } - } - }, "mute-stream": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", - "dev": true - }, - "nan": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", - "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", + "integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==", "dev": true }, - "nano-json-stream-parser": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz", - "integrity": "sha1-DMj20OK2IrR5xA1JnEbWS3Vcb18=", + "nanoid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", "dev": true }, - "nanoid": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", - "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", + "napi-macros": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.0.0.tgz", + "integrity": "sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg==", "dev": true }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, - "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", "dev": true }, "neo-async": { @@ -36380,12 +35315,6 @@ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, - "next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", - "dev": true - }, "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", @@ -36399,12 +35328,12 @@ "dev": true }, "node-emoji": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.10.0.tgz", - "integrity": "sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", + "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", "dev": true, "requires": { - "lodash.toarray": "^4.4.0" + "lodash": "^4.17.21" } }, "node-environment-flags": { @@ -36435,9 +35364,9 @@ } }, "node-gyp-build": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.2.3.tgz", - "integrity": "sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", + "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==", "dev": true }, "nofilter": { @@ -36449,7 +35378,7 @@ "nopt": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==", "dev": true, "requires": { "abbrev": "1" @@ -36481,22 +35410,16 @@ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, - "normalize-url": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", - "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==", - "dev": true - }, "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", "dev": true }, "number-to-bn": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", - "integrity": "sha1-uzYjWS9+X54AMLGXe9QaDFP+HqA=", + "integrity": "sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==", "dev": true, "requires": { "bn.js": "4.11.6", @@ -36506,7 +35429,7 @@ "bn.js": { "version": "4.11.6", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", "dev": true } } @@ -36520,13 +35443,13 @@ "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "dev": true }, "object-inspect": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", - "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", "dev": true }, "object-keys": { @@ -36536,56 +35459,39 @@ "dev": true }, "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", "dev": true, "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" } }, "object.getownpropertydescriptors": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz", - "integrity": "sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.5.tgz", + "integrity": "sha512-yDNzckpM6ntyQiGTik1fKV1DcVDRS+w8bvpWNCBanvH5LfRX9O8WTHqQzG4RZwRAM4I0oU7TV11Lj5v0g20ibw==", "dev": true, "requires": { + "array.prototype.reduce": "^1.0.5", "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" } }, "obliterator": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-1.6.1.tgz", - "integrity": "sha512-9WXswnqINnnhOG/5SLimUlzuU1hFJUc8zkwyD59Sd+dPOMf05PmnYG/d6Q7HZ+KmgkZJa1PxRso6QdM3sTNHig==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.4.tgz", + "integrity": "sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==", "dev": true }, - "oboe": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/oboe/-/oboe-2.1.5.tgz", - "integrity": "sha1-VVQoTFQ6ImbXo48X4HOCH73jk80=", - "dev": true, - "requires": { - "http-https": "^1.0.0" - } - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "requires": { "wrappy": "1" @@ -36594,7 +35500,7 @@ "onetime": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", "dev": true, "requires": { "mimic-fn": "^1.0.0" @@ -36611,23 +35517,23 @@ } }, "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", "dev": true, "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" } }, "os-locale": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==", "dev": true, "requires": { "lcid": "^1.0.0" @@ -36636,37 +35542,25 @@ "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, - "p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", - "dev": true - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "dev": true }, "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "requires": { - "p-try": "^1.0.0" + "yocto-queue": "^0.1.0" } }, "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "requires": { - "p-limit": "^1.1.0" + "p-limit": "^3.0.2" } }, "p-map": { @@ -36678,19 +35572,10 @@ "aggregate-error": "^3.0.0" } }, - "p-timeout": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", - "integrity": "sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=", - "dev": true, - "requires": { - "p-finally": "^1.0.0" - } - }, "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, "parent-module": { @@ -36700,132 +35585,108 @@ "dev": true, "requires": { "callsites": "^3.0.0" - }, - "dependencies": { - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - } - } - }, - "parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "dev": true, - "requires": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" } }, "parse-cache-control": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz", - "integrity": "sha1-juqz5U+laSD+Fro493+iGqzC104=", - "dev": true - }, - "parse-headers": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.3.tgz", - "integrity": "sha512-QhhZ+DCCit2Coi2vmAKbq5RGTRcQUOE2+REgv8vdyu7MnYx2eZztegqtTx99TZ86GTIwqiy3+4nQTWZ2tgmdCA==", + "integrity": "sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==", "dev": true }, "parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", "dev": true, "requires": { "error-ex": "^1.3.1", "json-parse-better-errors": "^1.0.1" } }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true - }, "patch-package": { - "version": "6.4.7", - "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-6.4.7.tgz", - "integrity": "sha512-S0vh/ZEafZ17hbhgqdnpunKDfzHQibQizx9g8yEf5dcVk3KOflOfdufRXQX8CSEkyOQwuM/bNz1GwKvFj54kaQ==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-6.5.0.tgz", + "integrity": "sha512-tC3EqJmo74yKqfsMzELaFwxOAu6FH6t+FzFOsnWAuARm7/n2xB5AOeOueE221eM9gtMuIKMKpF9tBy/X2mNP0Q==", "dev": true, "requires": { "@yarnpkg/lockfile": "^1.1.0", - "chalk": "^2.4.2", + "chalk": "^4.1.2", "cross-spawn": "^6.0.5", "find-yarn-workspace-root": "^2.0.0", "fs-extra": "^7.0.1", "is-ci": "^2.0.0", "klaw-sync": "^6.0.0", - "minimist": "^1.2.0", + "minimist": "^1.2.6", "open": "^7.4.2", "rimraf": "^2.6.3", "semver": "^5.6.0", "slash": "^2.0.0", - "tmp": "^0.0.33" + "tmp": "^0.0.33", + "yaml": "^1.10.2" }, "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "glob": "^7.1.3" } }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", "dev": true, "requires": { - "color-name": "1.1.3" + "shebang-regex": "^1.0.0" } }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", "dev": true }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", "dev": true }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "isexe": "^2.0.0" } } } @@ -36837,49 +35698,40 @@ "dev": true }, "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true }, "path-is-inside": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", "dev": true }, "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true }, "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true }, "pathval": { "version": "1.1.1", @@ -36903,31 +35755,31 @@ "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", "dev": true }, "picomatch": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz", - "integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true }, "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "dev": true }, "pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", "dev": true }, "pinkie-promise": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", "dev": true, "requires": { "pinkie": "^2.0.0" @@ -36978,56 +35830,27 @@ "requires": { "p-limit": "^2.2.0" } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true } } }, - "postinstall-postinstall": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/postinstall-postinstall/-/postinstall-postinstall-2.1.0.tgz", - "integrity": "sha512-7hQX6ZlZXIoRiWNrbMQaLzUUfH+sSx39u8EJ9HYuDc1kLo9IXKWjM5RSquZN1ad5GnH8CGFM78fsAAQi3OKEEQ==", - "dev": true - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", - "dev": true - }, - "prettier": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.1.tgz", - "integrity": "sha512-8UVbTBYGwN37Bs9LERmxCPjdvPxlEowx2urIL6urHzdb3SDq4B/Z6xLFCblrSnE4iKWcS6ziJ3aOYrc1kz/E2A==", + "postinstall-postinstall": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postinstall-postinstall/-/postinstall-postinstall-2.1.0.tgz", + "integrity": "sha512-7hQX6ZlZXIoRiWNrbMQaLzUUfH+sSx39u8EJ9HYuDc1kLo9IXKWjM5RSquZN1ad5GnH8CGFM78fsAAQi3OKEEQ==", "dev": true }, - "printj": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/printj/-/printj-1.3.1.tgz", - "integrity": "sha512-GA3TdL8szPK4AQ2YnOe/b+Y1jUFwmmGMMK/qbY7VcE3Z7FU8JstbKiKRzO6CIiAKPhTO8m01NoQ0V5f3jc4OGg==", + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true + "prettier": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", + "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", + "dev": true, + "optional": true }, "process-nextick-args": { "version": "2.0.1", @@ -37042,9 +35865,9 @@ "dev": true }, "promise": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/promise/-/promise-8.1.0.tgz", - "integrity": "sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", "dev": true, "requires": { "asap": "~2.0.6" @@ -37071,79 +35894,31 @@ "signal-exit": "^3.0.2" } }, - "proxy-addr": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", - "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", - "dev": true, - "requires": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.9.1" - } - }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true - }, "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", "dev": true }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "punycode": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", - "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=", + "integrity": "sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA==", "dev": true }, "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true - }, - "query-string": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", - "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", "dev": true, "requires": { - "decode-uri-component": "^0.2.0", - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" + "side-channel": "^1.0.4" } }, "querystring": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", "dev": true }, "queue-microtask": { @@ -37155,7 +35930,7 @@ "quick-lru": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", - "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", + "integrity": "sha512-tRS7sTgyxMXtLum8L65daJnHUhfDUgboRdcWW2bR9vBfrj2+O5HSMbQOJfJJjIVSPFqbBCF37FpwWXGitDc5tA==", "dev": true }, "randombytes": { @@ -37167,30 +35942,14 @@ "safe-buffer": "^5.1.0" } }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true - }, "raw-body": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.1.tgz", - "integrity": "sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", "dev": true, "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.3", + "bytes": "3.1.2", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", "unpipe": "1.0.0" } @@ -37198,22 +35957,84 @@ "read-pkg": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", "dev": true, "requires": { "load-json-file": "^4.0.0", "normalize-package-data": "^2.3.2", "path-type": "^3.0.0" + }, + "dependencies": { + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + } } }, "read-pkg-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "integrity": "sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==", "dev": true, "requires": { "find-up": "^2.0.0", "read-pkg": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + } } }, "readable-stream": { @@ -37228,9 +36049,9 @@ } }, "readdirp": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", - "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, "requires": { "picomatch": "^2.2.1" @@ -37239,41 +36060,60 @@ "rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", "dev": true, "requires": { "resolve": "^1.1.6" } }, "recursive-readdir": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", - "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", + "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", "dev": true, "requires": { - "minimatch": "3.0.4" + "minimatch": "^3.0.5" } }, "redent": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", - "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", + "integrity": "sha512-XNwrTx77JQCEMXTeb8movBKuK75MgH0RZkujNuDKCezemx/voapl9i2gCSi8WWm8+ox5ycJi1gxF22fR7c0Ciw==", "dev": true, "requires": { "indent-string": "^3.0.0", "strip-indent": "^2.0.0" + }, + "dependencies": { + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==", + "dev": true + } + } + }, + "regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" } }, "regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true }, "req-cwd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/req-cwd/-/req-cwd-2.0.0.tgz", - "integrity": "sha1-1AgrTURZgDZkD7c93qAe1T20nrw=", + "integrity": "sha512-ueoIoLo1OfB6b05COxAA9UpeoscNpYyM+BqYlA7H6LVF4hKGPXQQSSaD2YmvDVJMkk4UDpAHIeU1zG53IqjvlQ==", "dev": true, "requires": { "req-from": "^2.0.0" @@ -37282,10 +36122,18 @@ "req-from": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/req-from/-/req-from-2.0.0.tgz", - "integrity": "sha1-10GI5H+TeW9Kpx327jWuaJ8+DnA=", + "integrity": "sha512-LzTfEVDVQHBRfjOUMgNBA+V6DWsSnoeKzf42J7l0xa/B4jyPOuuF5MlNSmomLNGemWTnV2TIdjSSLnEn95fOQA==", "dev": true, "requires": { "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "dev": true + } } }, "request": { @@ -37314,6 +36162,31 @@ "tough-cookie": "~2.5.0", "tunnel-agent": "^0.6.0", "uuid": "^3.3.2" + }, + "dependencies": { + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "dev": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + } } }, "request-promise-core": { @@ -37339,7 +36212,7 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true }, "require-from-string": { @@ -37351,38 +36224,28 @@ "require-main-filename": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==", "dev": true }, "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", "dev": true, "requires": { - "is-core-module": "^2.2.0", "path-parse": "^1.0.6" } }, "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, - "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "dev": true, - "requires": { - "lowercase-keys": "^1.0.0" - } - }, "restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", "dev": true, "requires": { "onetime": "^2.0.0", @@ -37392,7 +36255,7 @@ "retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", "dev": true }, "reusify": { @@ -37402,9 +36265,9 @@ "dev": true }, "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { "glob": "^7.1.3" @@ -37421,12 +36284,12 @@ } }, "rlp": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.6.tgz", - "integrity": "sha512-HAfAmL6SDYNWPUOJNrM500x4Thn4PZsEy5pijPh40U9WfNk0z15hUYzO9xVIMAdIHdFtD8CBDHd75Td1g36Mjg==", + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", + "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", "dev": true, "requires": { - "bn.js": "^4.11.1" + "bn.js": "^5.2.0" } }, "run-async": { @@ -37444,6 +36307,15 @@ "queue-microtask": "^1.2.2" } }, + "run-parallel-limit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz", + "integrity": "sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, "rustbn.js": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/rustbn.js/-/rustbn.js-0.2.0.tgz", @@ -37465,6 +36337,17 @@ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true }, + "safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + } + }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -37493,22 +36376,25 @@ "wordwrap": "^1.0.0" }, "dependencies": { + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, "async": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - }, - "esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==", "dev": true }, "glob": { "version": "5.0.15", "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "integrity": "sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==", "dev": true, "requires": { "inflight": "^1.0.4", @@ -37521,23 +36407,50 @@ "has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", "dev": true }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "dependencies": { + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + } + } + }, "resolve": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "integrity": "sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==", "dev": true }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", "dev": true, "requires": { "has-flag": "^1.0.0" } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } } } }, @@ -37548,74 +36461,22 @@ "dev": true }, "secp256k1": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.2.tgz", - "integrity": "sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", + "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", "dev": true, "requires": { - "elliptic": "^6.5.2", + "elliptic": "^6.5.4", "node-addon-api": "^2.0.0", "node-gyp-build": "^4.2.0" } }, - "semaphore-async-await": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/semaphore-async-await/-/semaphore-async-await-1.5.1.tgz", - "integrity": "sha1-hXvvXjZEYBykuVcLh+nfXKEpdPo=", - "dev": true - }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true }, - "send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", - "dev": true, - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.7.2", - "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - } - } - }, "serialize-javascript": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", @@ -37625,47 +36486,22 @@ "randombytes": "^2.1.0" } }, - "serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", - "dev": true, - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - } - }, - "servify": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/servify/-/servify-0.1.12.tgz", - "integrity": "sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw==", - "dev": true, - "requires": { - "body-parser": "^1.16.0", - "cors": "^2.8.1", - "express": "^4.14.0", - "request": "^2.79.0", - "xhr": "^2.3.3" - } - }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dev": true }, "setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", "dev": true }, "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "dev": true }, "sha.js": { @@ -37681,7 +36517,7 @@ "sha1": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/sha1/-/sha1-1.1.1.tgz", - "integrity": "sha1-rdqnqTFo85PxnrKxUJFhjicA+Eg=", + "integrity": "sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA==", "dev": true, "requires": { "charenc": ">= 0.0.1", @@ -37689,18 +36525,18 @@ } }, "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "requires": { - "shebang-regex": "^1.0.0" + "shebang-regex": "^3.0.0" } }, "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, "shelljs": { @@ -37726,32 +36562,15 @@ } }, "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", - "dev": true - }, - "simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, - "simple-get": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.8.1.tgz", - "integrity": "sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw==", - "dev": true, - "requires": { - "decompress-response": "^3.3.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, "simple-git": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.10.0.tgz", - "integrity": "sha512-2w35xrS5rVtAW0g67LqtxCZN5cdddz/woQRfS0OJXaljXEoTychZ4jnE+CQgra/wX4ZvHeiChTUMenCwfIYEYw==", + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.14.1.tgz", + "integrity": "sha512-1ThF4PamK9wBORVGMK9HK5si4zoGS2GpRO7tkAFObA4FZv6dKaCVHLQT+8zlgiBm6K2h+wEU9yOaFCu/SR3OyA==", "dev": true, "requires": { "@kwsites/file-exists": "^1.1.1", @@ -37766,44 +36585,26 @@ "dev": true }, "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, "slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" }, "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true } } @@ -37824,10 +36625,16 @@ "tmp": "0.0.33" }, "dependencies": { + "commander": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", + "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", + "dev": true + }, "fs-extra": { "version": "0.30.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", - "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", + "integrity": "sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -37837,21 +36644,24 @@ "rimraf": "^2.2.8" } }, - "js-sha3": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", - "dev": true - }, "jsonfile": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", "dev": true, "requires": { "graceful-fs": "^4.1.6" } }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -37881,6 +36691,18 @@ "semver": "^6.3.0" }, "dependencies": { + "acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true + }, + "ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true + }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -37890,6 +36712,21 @@ "color-convert": "^1.9.0" } }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -37913,7 +36750,7 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, "commander": { @@ -37922,25 +36759,307 @@ "integrity": "sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ==", "dev": true }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "eslint": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz", + "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.9.1", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^4.0.3", + "eslint-utils": "^1.3.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^5.0.1", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.7.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^6.2.2", + "js-yaml": "^3.13.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.11", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^5.5.1", + "strip-ansi": "^4.0.0", + "strip-json-comments": "^2.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + }, + "espree": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", + "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", + "dev": true, + "requires": { + "acorn": "^6.0.7", + "acorn-jsx": "^5.0.0", + "eslint-visitor-keys": "^1.0.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + } + }, + "flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + } + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "dev": true }, - "prettier": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", - "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", - "dev": true, - "optional": true - }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -37949,41 +37068,85 @@ "requires": { "has-flag": "^3.0.0" } + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + } + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } } } }, "solidity-ast": { - "version": "0.4.31", - "resolved": "https://registry.npmjs.org/solidity-ast/-/solidity-ast-0.4.31.tgz", - "integrity": "sha512-kX6o4XE4ihaqENuRRTMJfwQNHoqWusPENZUlX4oVb19gQdfi7IswFWnThONHSW/61umgfWdKtCBgW45iuOTryQ==", + "version": "0.4.35", + "resolved": "https://registry.npmjs.org/solidity-ast/-/solidity-ast-0.4.35.tgz", + "integrity": "sha512-F5bTDLh3rmDxRmLSrs3qt3nvxJprWSEkS7h2KmuXDx7XTfJ6ZKVTV1rtPIYCqJAuPsU/qa8YUeFn7jdOAZcTPA==", "dev": true }, "solidity-coverage": { - "version": "0.7.20", - "resolved": "https://registry.npmjs.org/solidity-coverage/-/solidity-coverage-0.7.20.tgz", - "integrity": "sha512-edOXTugUYdqxrtEnIn4vgrGjLPxdexcL0WD8LzAvVA3d1dwgcfRO3k8xQR02ZQnOnWMBi8Cqs0F+kAQQp3JW8g==", + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/solidity-coverage/-/solidity-coverage-0.8.2.tgz", + "integrity": "sha512-cv2bWb7lOXPE9/SSleDO6czkFiMHgP4NXPj+iW9W7iEKLBk7Cj0AGBiNmGX3V1totl9wjPrT0gHmABZKZt65rQ==", "dev": true, "requires": { - "@solidity-parser/parser": "^0.14.0", - "@truffle/provider": "^0.2.24", + "@ethersproject/abi": "^5.0.9", + "@solidity-parser/parser": "^0.14.1", "chalk": "^2.4.2", "death": "^1.1.0", "detect-port": "^1.3.0", + "difflib": "^0.2.4", "fs-extra": "^8.1.0", "ghost-testrpc": "^0.0.2", "global-modules": "^2.0.0", "globby": "^10.0.1", "jsonschema": "^1.2.4", "lodash": "^4.17.15", + "mocha": "7.1.2", "node-emoji": "^1.10.0", "pify": "^4.0.1", "recursive-readdir": "^2.2.2", "sc-istanbul": "^0.4.5", "semver": "^7.3.4", "shelljs": "^0.8.3", - "web3-utils": "^1.3.0" + "web3-utils": "^1.3.6" }, "dependencies": { + "ansi-colors": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", + "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", + "dev": true + }, + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -37993,6 +37156,21 @@ "color-convert": "^1.9.0" } }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -38004,6 +37182,33 @@ "supports-color": "^5.3.0" } }, + "chokidar": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", + "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.2.0" + } + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -38016,9 +37221,60 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "flat": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.1.tgz", + "integrity": "sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==", + "dev": true, + "requires": { + "is-buffer": "~2.0.3" + } + }, "fs-extra": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", @@ -38030,12 +37286,87 @@ "universalify": "^0.1.0" } }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globby": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", + "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" + } + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "log-symbols": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", + "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2" + } + }, "lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -38045,21 +37376,153 @@ "yallist": "^4.0.0" } }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "mocha": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.1.2.tgz", + "integrity": "sha512-o96kdRKMKI3E8U0bjnfqW4QMk12MwZ4mhdBTf+B5a1q9+aq2HRnj+3ZdJu0B/ZhJeK78MgYuv6L8d/rA5AeBJA==", + "dev": true, + "requires": { + "ansi-colors": "3.2.3", + "browser-stdout": "1.3.1", + "chokidar": "3.3.0", + "debug": "3.2.6", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "find-up": "3.0.0", + "glob": "7.1.3", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "3.13.1", + "log-symbols": "3.0.0", + "minimatch": "3.0.4", + "mkdirp": "0.5.5", + "ms": "2.1.1", + "node-environment-flags": "1.0.6", + "object.assign": "4.1.0", + "strip-json-comments": "2.0.1", + "supports-color": "6.0.0", + "which": "1.3.1", + "wide-align": "1.1.3", + "yargs": "13.3.2", + "yargs-parser": "13.1.2", + "yargs-unparser": "1.6.0" + }, + "dependencies": { + "supports-color": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", + "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + }, "pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true }, + "readdirp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", + "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", + "dev": true, + "requires": { + "picomatch": "^2.0.4" + } + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "requires": { "lru-cache": "^6.0.0" } }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true + }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -38069,28 +37532,111 @@ "has-flag": "^3.0.0" } }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", + "dev": true + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "yargs-unparser": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", + "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", + "dev": true, + "requires": { + "flat": "^4.1.0", + "lodash": "^4.17.15", + "yargs": "^13.3.0" + } } } }, "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", + "integrity": "sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA==", + "dev": true, + "optional": true, + "requires": { + "amdefine": ">=0.0.4" + } }, "source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, "spdx-correct": { @@ -38120,21 +37666,21 @@ } }, "spdx-license-ids": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", - "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==", + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", "dev": true }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", "dev": true, "requires": { "asn1": "~0.2.3", @@ -38146,6 +37692,14 @@ "jsbn": "~0.1.0", "safer-buffer": "^2.0.2", "tweetnacl": "~0.14.0" + }, + "dependencies": { + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true + } } }, "stacktrace-parser": { @@ -38166,21 +37720,21 @@ } }, "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true }, "stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==", "dev": true }, - "strict-uri-encode": { + "streamsearch": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", "dev": true }, "string_decoder": { @@ -38200,47 +37754,66 @@ "requires": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } } }, "string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" } }, "string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" } }, "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^5.0.1" } }, "strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true }, "strip-hex-prefix": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", - "integrity": "sha1-DF8VX+8RUTczd96du1iNoFUA428=", + "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==", "dev": true, "requires": { "is-hex-prefixed": "1.0.0" @@ -38249,145 +37822,41 @@ "strip-indent": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", - "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", - "dev": true - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true - }, - "strip-outer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", - "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.2" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "swarm-js": { - "version": "0.1.40", - "resolved": "https://registry.npmjs.org/swarm-js/-/swarm-js-0.1.40.tgz", - "integrity": "sha512-yqiOCEoA4/IShXkY3WKwP5PvZhmoOOD8clsKA7EEcRILMkTEYHCQ21HDCAcVpmIxZq4LyZvWeRJ6quIyHk1caA==", - "dev": true, - "requires": { - "bluebird": "^3.5.0", - "buffer": "^5.0.5", - "eth-lib": "^0.1.26", - "fs-extra": "^4.0.2", - "got": "^7.1.0", - "mime-types": "^2.1.16", - "mkdirp-promise": "^5.0.1", - "mock-fs": "^4.1.0", - "setimmediate": "^1.0.5", - "tar": "^4.0.2", - "xhr-request": "^1.0.1" - }, - "dependencies": { - "eth-lib": { - "version": "0.1.29", - "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.1.29.tgz", - "integrity": "sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ==", - "dev": true, - "requires": { - "bn.js": "^4.11.6", - "elliptic": "^6.4.0", - "nano-json-stream-parser": "^0.1.2", - "servify": "^0.1.12", - "ws": "^3.0.0", - "xhr-request-promise": "^0.1.2" - } - }, - "fs-extra": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", - "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - }, - "got": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", - "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", - "dev": true, - "requires": { - "decompress-response": "^3.2.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "is-plain-obj": "^1.1.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", - "isurl": "^1.0.0-alpha5", - "lowercase-keys": "^1.0.0", - "p-cancelable": "^0.3.0", - "p-timeout": "^1.1.1", - "safe-buffer": "^5.0.1", - "timed-out": "^4.0.0", - "url-parse-lax": "^1.0.0", - "url-to-options": "^1.0.1" - } - }, - "p-cancelable": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", - "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==", - "dev": true - }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", - "dev": true - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "integrity": "sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "strip-outer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", + "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.2" + }, + "dependencies": { + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true - }, - "url-parse-lax": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", - "dev": true, - "requires": { - "prepend-http": "^1.0.1" - } - }, - "ws": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", - "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0", - "ultron": "~1.1.0" - } } } }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, "sync-request": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/sync-request/-/sync-request-6.1.0.tgz", @@ -38409,64 +37878,59 @@ } }, "table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", + "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", "dev": true, "requires": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" }, "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "dev": true, "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" } }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" } } } }, - "tar": { - "version": "4.4.13", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", - "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", - "dev": true, - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.8.6", - "minizlib": "^1.2.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.3" - } - }, "test-value": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/test-value/-/test-value-2.1.0.tgz", - "integrity": "sha1-Edpv9nDzRxpztiXKTz/c97t0gpE=", + "integrity": "sha512-+1epbAxtKeXttkGFMTX9H42oqzOTufR1ceCF+GYA5aOmvaPq9wd4PUS8329fn2RRLGNeUkgRLnVpycjx8DsO2w==", "dev": true, "requires": { "array-back": "^1.0.3", @@ -38476,7 +37940,7 @@ "array-back": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz", - "integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=", + "integrity": "sha512-1WxbZvrmyhkNoeYcizokbmh5oiOCIfyvGtcqbK3Ls1v1fKcquzxnQSceOx6tzq7jmai2kFLWIpGND2cLhH6TPw==", "dev": true, "requires": { "typical": "^2.6.0" @@ -38493,7 +37957,7 @@ "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, "then-request": { @@ -38520,19 +37984,24 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz", "integrity": "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==", "dev": true + }, + "form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } } } }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "timed-out": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", "dev": true }, "tmp": { @@ -38544,12 +38013,6 @@ "os-tmpdir": "~1.0.2" } }, - "to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", - "dev": true - }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -38560,9 +38023,9 @@ } }, "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true }, "tough-cookie": { @@ -38586,30 +38049,32 @@ "tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", "dev": true }, "trim-newlines": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", - "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=", + "integrity": "sha512-MTBWv3jhVjTU7XR3IQHllbiJs8sc75a80OEhB6or/q7pLTWgQ0bMGQXXYQSrSuXe6WiKWDZ5txXY5P59a/coVA==", "dev": true }, "trim-repeated": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", - "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=", + "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==", "dev": true, "requires": { "escape-string-regexp": "^1.0.2" + }, + "dependencies": { + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + } } }, - "true-case-path": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-2.2.1.tgz", - "integrity": "sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q==", - "dev": true - }, "ts-essentials": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-1.0.4.tgz", @@ -38665,13 +38130,25 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "prettier": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", "dev": true }, "supports-color": { @@ -38686,12 +38163,12 @@ } }, "ts-node": { - "version": "10.7.0", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.7.0.tgz", - "integrity": "sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A==", + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", "dev": true, "requires": { - "@cspotcode/source-map-support": "0.7.0", + "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", "@tsconfig/node12": "^1.0.7", "@tsconfig/node14": "^1.0.0", @@ -38702,16 +38179,10 @@ "create-require": "^1.1.0", "diff": "^4.0.1", "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.0", + "v8-compile-cache-lib": "^3.0.1", "yn": "3.1.1" }, "dependencies": { - "acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", - "dev": true - }, "diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", @@ -38729,22 +38200,31 @@ "tsort": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/tsort/-/tsort-0.0.1.tgz", - "integrity": "sha1-4igPXoF/i/QnVlf9D5rr1E9aJ4Y=", + "integrity": "sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==", "dev": true }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", "dev": true, "requires": { "safe-buffer": "^5.0.1" } }, "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", "dev": true }, "tweetnacl-util": { @@ -38753,19 +38233,13 @@ "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==", "dev": true }, - "type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", - "dev": true - }, "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, "requires": { - "prelude-ls": "~1.1.2" + "prelude-ls": "^1.2.1" } }, "type-detect": { @@ -38775,21 +38249,11 @@ "dev": true }, "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, "typechain": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/typechain/-/typechain-3.0.0.tgz", @@ -38805,12 +38269,6 @@ "ts-generator": "^0.1.1" }, "dependencies": { - "js-sha3": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", - "dev": true - }, "ts-essentials": { "version": "6.0.7", "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-6.0.7.tgz", @@ -38823,66 +38281,48 @@ "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", "dev": true }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "requires": { - "is-typedarray": "^1.0.0" - } - }, "typescript": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.3.tgz", - "integrity": "sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==", + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", + "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", "dev": true }, "typical": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/typical/-/typical-2.6.1.tgz", - "integrity": "sha1-XAgOXWYcu+OCWdLnCjxyU+hziB0=", + "integrity": "sha512-ofhi8kjIje6npGozTip9Fr8iecmYfEbS06i0JnIg+rh51KakryWF4+jX8lLKZVhy6N+ID45WYSFCxPOdTWCzNg==", "dev": true }, "uglify-js": { - "version": "3.13.6", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.13.6.tgz", - "integrity": "sha512-rRprLwl8RVaS+Qvx3Wh5hPfPBn9++G6xkGlUupya0s5aDmNjI7z3lnRLB3u7sN4OmbB0pWgzhM9BEJyiWAwtAA==", + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", "dev": true, "optional": true }, - "ultron": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", - "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", - "dev": true - }, "unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dev": true, "requires": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", "which-boxed-primitive": "^1.0.2" } }, - "underscore": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz", - "integrity": "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==", - "dev": true - }, "undici": { - "version": "4.16.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-4.16.0.tgz", - "integrity": "sha512-tkZSECUYi+/T1i4u+4+lwZmQgLXd4BLGlrc7KZPcLIW7Jpq99+Xpc30ONv7nS6F5UNOxp/HBZSSL9MafUrvJbw==", - "dev": true + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.12.0.tgz", + "integrity": "sha512-zMLamCG62PGjd9HHMpo05bSLvvwWOZgGeiWlN/vlqu3+lRo3elxktVGEyLMX+IO7c2eflLjcW74AlkhEZm15mg==", + "dev": true, + "requires": { + "busboy": "^1.6.0" + } }, "universalify": { "version": "0.1.2", @@ -38893,7 +38333,7 @@ "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "dev": true }, "uri-js": { @@ -38908,7 +38348,7 @@ "url": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", "dev": true, "requires": { "punycode": "1.3.2", @@ -38918,83 +38358,33 @@ "punycode": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", "dev": true } } }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "dev": true, - "requires": { - "prepend-http": "^2.0.0" - } - }, - "url-set-query": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-set-query/-/url-set-query-1.0.0.tgz", - "integrity": "sha1-AW6M/Xwg7gXK/neV6JK9BwL6ozk=", - "dev": true - }, - "url-to-options": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", - "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=", - "dev": true - }, - "utf-8-validate": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.5.tgz", - "integrity": "sha512-+pnxRYsS/axEpkrrEpzYfNZGXp0IjC/9RIxwM5gntY4Koi8SHmUGSfxfWqxZdRxrtaoVstuOzUp/rbs3JSPELQ==", - "dev": true, - "requires": { - "node-gyp-build": "^4.2.0" - } - }, "utf8": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==", "dev": true }, - "util": { - "version": "0.12.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.3.tgz", - "integrity": "sha512-I8XkoQwE+fPQEhy9v012V+TSdH2kp9ts29i20TaaDUXsg7x/onePbhFJUExBfv/2ay1ZOp/Vsm3nDlmnFGSAog==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "safe-buffer": "^5.1.2", - "which-typed-array": "^1.1.2" - } - }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true }, "v8-compile-cache-lib": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.0.tgz", - "integrity": "sha512-mpSYqfsFvASnSn5qMiwrr4VKfumbPyONLCOPmsR3A6pTY/r0+tSaVbgPWSAIuzbk3lCTa+FForeTiO+wBQGkjA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", "dev": true }, "validate-npm-package-license": { @@ -39007,22 +38397,10 @@ "spdx-expression-parse": "^3.0.0" } }, - "varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==", - "dev": true - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "dev": true - }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", "dev": true, "requires": { "assert-plus": "^1.0.0", @@ -39030,400 +38408,31 @@ "extsprintf": "^1.2.0" } }, - "web3": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/web3/-/web3-1.3.5.tgz", - "integrity": "sha512-UyQW/MT5EIGBrXPCh/FDIaD7RtJTn5/rJUNw2FOglp0qoXnCQHNKvntiR1ylztk05fYxIF6UgsC76IrazlKJjw==", - "dev": true, - "requires": { - "web3-bzz": "1.3.5", - "web3-core": "1.3.5", - "web3-eth": "1.3.5", - "web3-eth-personal": "1.3.5", - "web3-net": "1.3.5", - "web3-shh": "1.3.5", - "web3-utils": "1.3.5" - } - }, - "web3-bzz": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.3.5.tgz", - "integrity": "sha512-XiEUAbB1uKm/agqfwBsCW8fbw+sma85TfwuDpdcy591vinVk0S9TfWgLxro6v1KJ6nSELySIbKGbAJbh2GSyxw==", - "dev": true, - "requires": { - "@types/node": "^12.12.6", - "got": "9.6.0", - "swarm-js": "^0.1.40", - "underscore": "1.9.1" - }, - "dependencies": { - "@types/node": { - "version": "12.20.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.13.tgz", - "integrity": "sha512-1x8W5OpxPq+T85OUsHRP6BqXeosKmeXRtjoF39STcdf/UWLqUsoehstZKOi0CunhVqHG17AyZgpj20eRVooK6A==", - "dev": true - } - } - }, - "web3-core": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.3.5.tgz", - "integrity": "sha512-VQjTvnGTqJwDwjKEHSApea3RmgtFGLDSJ6bqrOyHROYNyTyKYjFQ/drG9zs3rjDkND9mgh8foI1ty37Qua3QCQ==", - "dev": true, - "requires": { - "@types/bn.js": "^4.11.5", - "@types/node": "^12.12.6", - "bignumber.js": "^9.0.0", - "web3-core-helpers": "1.3.5", - "web3-core-method": "1.3.5", - "web3-core-requestmanager": "1.3.5", - "web3-utils": "1.3.5" - }, - "dependencies": { - "@types/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/node": { - "version": "12.20.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.13.tgz", - "integrity": "sha512-1x8W5OpxPq+T85OUsHRP6BqXeosKmeXRtjoF39STcdf/UWLqUsoehstZKOi0CunhVqHG17AyZgpj20eRVooK6A==", - "dev": true - } - } - }, - "web3-core-helpers": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.3.5.tgz", - "integrity": "sha512-HYh3ix5FjysgT0jyzD8s/X5ym0b4BGU7I2QtuBiydMnE0mQEWy7GcT9XKpTySA8FTOHHIAQYvQS07DN/ky3UzA==", - "dev": true, - "requires": { - "underscore": "1.9.1", - "web3-eth-iban": "1.3.5", - "web3-utils": "1.3.5" - } - }, - "web3-core-method": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.3.5.tgz", - "integrity": "sha512-hCbmgQ+At6OTuaNGAdjXMsCr4eUCmp9yGKSuaB5HdkNVDpqFso4HHjVxcjNrTyJp3OZnyjKBzQzK1ZWLpLl84Q==", - "dev": true, - "requires": { - "@ethersproject/transactions": "^5.0.0-beta.135", - "underscore": "1.9.1", - "web3-core-helpers": "1.3.5", - "web3-core-promievent": "1.3.5", - "web3-core-subscriptions": "1.3.5", - "web3-utils": "1.3.5" - } - }, - "web3-core-promievent": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.3.5.tgz", - "integrity": "sha512-K0j8x3ZJr0eAyNvyUCxOUsSTd4hco0/9nxxlyOuijcsa6YV8l9NL6eqhniWbSyxCJT8ka5Mb7yAiUZe69EDLBQ==", - "dev": true, - "requires": { - "eventemitter3": "4.0.4" - } - }, - "web3-core-requestmanager": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.3.5.tgz", - "integrity": "sha512-9l294U3Ga8qmvv8E37BqjQREfMs+kFnkU3PY28g9DZGYzKvl3V1dgDYqxyrOBdCFhc7rNSpHdgC4PrVHjouspg==", - "dev": true, - "requires": { - "underscore": "1.9.1", - "util": "^0.12.0", - "web3-core-helpers": "1.3.5", - "web3-providers-http": "1.3.5", - "web3-providers-ipc": "1.3.5", - "web3-providers-ws": "1.3.5" - } - }, - "web3-core-subscriptions": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.3.5.tgz", - "integrity": "sha512-6mtXdaEB1V1zKLqYBq7RF2W75AK5ZJNGpW6QYC7Zvbku7zq1ZlgaUkJo88JKMWJ7etfaHaYqQ/7VveHk5sQynA==", - "dev": true, - "requires": { - "eventemitter3": "4.0.4", - "underscore": "1.9.1", - "web3-core-helpers": "1.3.5" - } - }, - "web3-eth": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.3.5.tgz", - "integrity": "sha512-5qqDPMMD+D0xRqOV2ePU2G7/uQmhn0FgCEhFzKDMHrssDQJyQLW/VgfA0NLn64lWnuUrGnQStGvNxrWf7MgsfA==", - "dev": true, - "requires": { - "underscore": "1.9.1", - "web3-core": "1.3.5", - "web3-core-helpers": "1.3.5", - "web3-core-method": "1.3.5", - "web3-core-subscriptions": "1.3.5", - "web3-eth-abi": "1.3.5", - "web3-eth-accounts": "1.3.5", - "web3-eth-contract": "1.3.5", - "web3-eth-ens": "1.3.5", - "web3-eth-iban": "1.3.5", - "web3-eth-personal": "1.3.5", - "web3-net": "1.3.5", - "web3-utils": "1.3.5" - } - }, - "web3-eth-abi": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.3.5.tgz", - "integrity": "sha512-bkbG2v/mOW5DH6rF/SEgqunusjYoEi2IBw+fkmD3rzWDaEY7+/i1xY94AeO257d06QMgld75GtV/N+aEs7A6vQ==", - "dev": true, - "requires": { - "@ethersproject/abi": "5.0.7", - "underscore": "1.9.1", - "web3-utils": "1.3.5" - }, - "dependencies": { - "@ethersproject/abi": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.0.7.tgz", - "integrity": "sha512-Cqktk+hSIckwP/W8O47Eef60VwmoSC/L3lY0+dIBhQPCNn9E4V7rwmm2aFrNRRDJfFlGuZ1khkQUOc3oBX+niw==", - "dev": true, - "requires": { - "@ethersproject/address": "^5.0.4", - "@ethersproject/bignumber": "^5.0.7", - "@ethersproject/bytes": "^5.0.4", - "@ethersproject/constants": "^5.0.4", - "@ethersproject/hash": "^5.0.4", - "@ethersproject/keccak256": "^5.0.3", - "@ethersproject/logger": "^5.0.5", - "@ethersproject/properties": "^5.0.3", - "@ethersproject/strings": "^5.0.4" - } - } - } - }, - "web3-eth-accounts": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.3.5.tgz", - "integrity": "sha512-r3WOR21rgm6Cd6OFnifr3Tizdm5K+g2TsSOPySwX4FrgLrYDL6ck4zr5VXUPz+llpSExb/JztpE8pqEHr3U2NA==", - "dev": true, - "requires": { - "crypto-browserify": "3.12.0", - "eth-lib": "0.2.8", - "ethereumjs-common": "^1.3.2", - "ethereumjs-tx": "^2.1.1", - "scrypt-js": "^3.0.1", - "underscore": "1.9.1", - "uuid": "3.3.2", - "web3-core": "1.3.5", - "web3-core-helpers": "1.3.5", - "web3-core-method": "1.3.5", - "web3-utils": "1.3.5" - }, - "dependencies": { - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", - "dev": true - } - } - }, - "web3-eth-contract": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.3.5.tgz", - "integrity": "sha512-WfGVeQquN3D7Qm+KEIN9EI7yrm/fL2V9Y4+YhDWiKA/ns1pX1LYcEWojTOnBXCnPF3tcvoKKL+KBxXg1iKm38A==", - "dev": true, - "requires": { - "@types/bn.js": "^4.11.5", - "underscore": "1.9.1", - "web3-core": "1.3.5", - "web3-core-helpers": "1.3.5", - "web3-core-method": "1.3.5", - "web3-core-promievent": "1.3.5", - "web3-core-subscriptions": "1.3.5", - "web3-eth-abi": "1.3.5", - "web3-utils": "1.3.5" - }, - "dependencies": { - "@types/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", - "dev": true, - "requires": { - "@types/node": "*" - } - } - } - }, - "web3-eth-ens": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.3.5.tgz", - "integrity": "sha512-5bkpFTXV18CvaVP8kCbLZZm2r1TWUv9AsXH+80yz8bTZulUGvXsBMRfK6e5nfEr2Yv59xlIXCFoalmmySI9EJw==", - "dev": true, - "requires": { - "content-hash": "^2.5.2", - "eth-ens-namehash": "2.0.8", - "underscore": "1.9.1", - "web3-core": "1.3.5", - "web3-core-helpers": "1.3.5", - "web3-core-promievent": "1.3.5", - "web3-eth-abi": "1.3.5", - "web3-eth-contract": "1.3.5", - "web3-utils": "1.3.5" - } - }, - "web3-eth-iban": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.3.5.tgz", - "integrity": "sha512-x+BI/d2Vt0J1cKK8eFd4W0f1TDjgEOYCwiViTb28lLE+tqrgyPqWDA+l6UlKYLF/yMFX3Dym4ofcCOtgcn4q4g==", - "dev": true, - "requires": { - "bn.js": "^4.11.9", - "web3-utils": "1.3.5" - } - }, - "web3-eth-personal": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.3.5.tgz", - "integrity": "sha512-xELQHNZ8p3VoO1582ghCaq+Bx7pSkOOalc6/ACOCGtHDMelqgVejrmSIZGScYl+k0HzngmQAzURZWQocaoGM1g==", - "dev": true, - "requires": { - "@types/node": "^12.12.6", - "web3-core": "1.3.5", - "web3-core-helpers": "1.3.5", - "web3-core-method": "1.3.5", - "web3-net": "1.3.5", - "web3-utils": "1.3.5" - }, - "dependencies": { - "@types/node": { - "version": "12.20.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.13.tgz", - "integrity": "sha512-1x8W5OpxPq+T85OUsHRP6BqXeosKmeXRtjoF39STcdf/UWLqUsoehstZKOi0CunhVqHG17AyZgpj20eRVooK6A==", - "dev": true - } - } - }, - "web3-net": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.3.5.tgz", - "integrity": "sha512-usbFbuUpKK8s7jPLGoUzi/WpNnefGFPTj948aJv8BZ04UQA4L/XS5NNkkhk358zNMmhGfEFW8wrWy+0Oy0njtA==", - "dev": true, - "requires": { - "web3-core": "1.3.5", - "web3-core-method": "1.3.5", - "web3-utils": "1.3.5" - } - }, - "web3-providers-http": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.3.5.tgz", - "integrity": "sha512-ZQOmceFjcajEZdiuqciXjijwIYWNmEJ1oxMtbrwB2eGxHRCMXEH2xGRUZuhOFNF88yQC/VXVi14yvYg5ZlFJlA==", - "dev": true, - "requires": { - "web3-core-helpers": "1.3.5", - "xhr2-cookies": "1.1.0" - } - }, - "web3-providers-ipc": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.3.5.tgz", - "integrity": "sha512-cbZOeb/sALiHjzMolJjIyHla/J5wdL2JKUtRO66Nh/uLALBCpU8JUgzNvpAdJ1ae3+A33+EdFStdzuDYHKtQew==", - "dev": true, - "requires": { - "oboe": "2.1.5", - "underscore": "1.9.1", - "web3-core-helpers": "1.3.5" - } - }, - "web3-providers-ws": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.3.5.tgz", - "integrity": "sha512-zeZ4LMvKhYaJBDCqA//Bzgp4r/T0tNq5U/xvN0axA4YflzF7yqlsbzGwCkcZYDbrUaK3Ltl2uOmvwjbWALOZ1A==", - "dev": true, - "requires": { - "eventemitter3": "4.0.4", - "underscore": "1.9.1", - "web3-core-helpers": "1.3.5", - "websocket": "^1.0.32" - } - }, - "web3-shh": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.3.5.tgz", - "integrity": "sha512-aRwzCduXvuGVslLL/Y15VcOHa70Qr2kxZI7UwOzQVhaaOdxuRRvo3AK/cmyln1Tsd54/n93Yk8I3qg5I2+6alw==", - "dev": true, - "requires": { - "web3-core": "1.3.5", - "web3-core-method": "1.3.5", - "web3-core-subscriptions": "1.3.5", - "web3-net": "1.3.5" - } - }, "web3-utils": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.3.5.tgz", - "integrity": "sha512-5apMRm8ElYjI/92GHqijmaLC+s+d5lgjpjHft+rJSs/dsnX8I8tQreqev0dmU+wzU+2EEe4Sx9a/OwGWHhQv3A==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.8.0.tgz", + "integrity": "sha512-7nUIl7UWpLVka2f09CMbKOSEvorvHnaugIabU4mj7zfMvm0tSByLcEu3eyV9qgS11qxxLuOkzBIwCstTflhmpQ==", "dev": true, "requires": { - "bn.js": "^4.11.9", - "eth-lib": "0.2.8", + "bn.js": "^5.2.1", "ethereum-bloom-filters": "^1.0.6", + "ethereumjs-util": "^7.1.0", "ethjs-unit": "0.1.6", "number-to-bn": "1.7.0", "randombytes": "^2.1.0", - "underscore": "1.9.1", "utf8": "3.0.0" } }, "webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", "dev": true }, - "websocket": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", - "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", - "dev": true, - "requires": { - "bufferutil": "^4.0.1", - "debug": "^2.2.0", - "es5-ext": "^0.10.50", - "typedarray-to-buffer": "^3.1.5", - "utf-8-validate": "^5.0.2", - "yaeti": "^0.0.6" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, "whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dev": true, "requires": { "tr46": "~0.0.3", @@ -39431,9 +38440,9 @@ } }, "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "requires": { "isexe": "^2.0.0" @@ -39455,24 +38464,9 @@ "which-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==", "dev": true }, - "which-typed-array": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.4.tgz", - "integrity": "sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA==", - "dev": true, - "requires": { - "available-typed-arrays": "^1.0.2", - "call-bind": "^1.0.0", - "es-abstract": "^1.18.0-next.1", - "foreach": "^2.0.5", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.1", - "is-typed-array": "^1.1.3" - } - }, "wide-align": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", @@ -39485,7 +38479,7 @@ "window-size": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", - "integrity": "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU=", + "integrity": "sha512-UD7d8HFA2+PZsbKyaOCEy8gMh1oDtHgJh1LfgjQ4zVXmYjAT/kvz3PueITKuqDiIXQe7yzpPnxX3lNc+AhQMyw==", "dev": true }, "word-wrap": { @@ -39497,13 +38491,13 @@ "wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", "dev": true }, "workerpool": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", - "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", "dev": true }, "wrap-ansi": { @@ -39517,18 +38511,6 @@ "strip-ansi": "^6.0.0" }, "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -39545,22 +38527,13 @@ "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } } } }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, "write": { @@ -39579,61 +38552,10 @@ "dev": true, "requires": {} }, - "xhr": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", - "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", - "dev": true, - "requires": { - "global": "~4.4.0", - "is-function": "^1.0.1", - "parse-headers": "^2.0.0", - "xtend": "^4.0.0" - } - }, - "xhr-request": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/xhr-request/-/xhr-request-1.1.0.tgz", - "integrity": "sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA==", - "dev": true, - "requires": { - "buffer-to-arraybuffer": "^0.0.5", - "object-assign": "^4.1.1", - "query-string": "^5.0.1", - "simple-get": "^2.7.0", - "timed-out": "^4.0.1", - "url-set-query": "^1.0.0", - "xhr": "^2.0.4" - } - }, - "xhr-request-promise": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz", - "integrity": "sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg==", - "dev": true, - "requires": { - "xhr-request": "^1.1.0" - } - }, - "xhr2-cookies": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz", - "integrity": "sha1-fXdEnQmZGX8VXLc7I99yUF7YnUg=", - "dev": true, - "requires": { - "cookiejar": "^2.1.1" - } - }, "xmlhttprequest": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", - "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=", - "dev": true - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "integrity": "sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA==", "dev": true }, "y18n": { @@ -39642,18 +38564,18 @@ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true }, - "yaeti": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", - "integrity": "sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc=", - "dev": true - }, "yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + }, "yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", @@ -39669,18 +38591,6 @@ "yargs-parser": "^20.2.2" }, "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -39698,15 +38608,6 @@ "strip-ansi": "^6.0.1" } }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, "yargs-parser": { "version": "20.2.9", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", diff --git a/package.json b/package.json index 99eb4a3f..4108eddc 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,10 @@ { "name": "ssv-network", + "scripts": { + "lint": "eslint . --ext .ts", + "lint:fix": "eslint --fix . --ext .ts", + "solidity-coverage": "NO_GAS_ENFORCE=1 npx hardhat coverage" + }, "devDependencies": { "@nomiclabs/hardhat-ethers": "^2.0.5", "@nomiclabs/hardhat-etherscan": "^3.0.3", @@ -13,20 +18,23 @@ "@types/cli-table": "^0.3.0", "@types/mocha": "^9.1.0", "@types/node": "^17.0.23", + "@typescript-eslint/eslint-plugin": "^5.36.0", "chai": "^4.3.6", "chai-as-promised": "^7.1.1", "cli-table": "^0.3.11", "dotenv": "^16.0.0", + "eslint": "^8.23.0", "ethereum-public-key-to-address": "0.0.5", "ethereum-waffle": "^3.4.4", "ethers": "^5.6.2", "gh-pages": "^3.2.3", - "hardhat": "^2.9.2", - "hardhat-gas-reporter": "^1.0.8", - "hardhat-tracer": "^1.1.0-rc.3", + "hardhat": "^2.12.2", + "hardhat-contract-sizer": "^2.6.1", + "hardhat-gas-reporter": "^1.0.9", + "hardhat-tracer": "^1.1.1", "prompts": "^2.4.2", "simple-git": "^3.10.0", - "solidity-coverage": "^0.7.20", + "solidity-coverage": "^0.8.2", "ts-node": "^10.7.0", "typechain": "^3.0.0", "typescript": "^4.6.3" diff --git a/scripts/ssv-network-deploy.ts b/scripts/ssv-network-deploy.ts index ef325e3a..b6e0fdc2 100644 --- a/scripts/ssv-network-deploy.ts +++ b/scripts/ssv-network-deploy.ts @@ -1,21 +1,30 @@ import { ethers, upgrades } from 'hardhat'; -import { publishAbi } from './utils'; async function main() { - await publishAbi('SSVNetwork'); + const config = { + operatorMaxFeeIncrease: 1000, + declareOperatorFeePeriod: 3600, // HOUR + executeOperatorFeePeriod: 86400, // DAY + }; + + const [deployer] = await ethers.getSigners(); + console.log( + 'Deploying the contracts with the account:', + await deployer.getAddress() + ); + console.log('Account balance:', (await deployer.getBalance()).toString()); + + // Define accounts + const ssvNetwork = await ethers.getContractFactory('SSVNetwork'); + const deployArguments = [ + process.env.SSV_TOKEN_ADDRESS, + config.operatorMaxFeeIncrease, + config.declareOperatorFeePeriod, + config.executeOperatorFeePeriod + ]; + console.log('Deploy arguments: ', deployArguments); + const contract = await upgrades.deployProxy(ssvNetwork, deployArguments); - const ssvRegistryAddress = process.env.SSVREGISTRY_ADDRESS; - const ssvTokenAddress = process.env.SSVTOKEN_ADDRESS; - const ssvNetworkFactory = await ethers.getContractFactory('SSVNetwork'); - console.log(`Deploying SSVNetwork with ssvRegistry ${ssvRegistryAddress} and ssvToken ${ssvTokenAddress}...`); - const contract = await upgrades.deployProxy(ssvNetworkFactory, [ - ssvRegistryAddress, - ssvTokenAddress, - process.env.MINIMUM_BLOCKS_BEFORE_LIQUIDATION, - process.env.OPERATOR_MAX_FEE_INCREASE, - process.env.DECLARE_OPERATOR_FEE_PERIOD, - process.env.EXECUTE_OPERATOR_FEE_PERIOD, - ]); await contract.deployed(); console.log(`SSVNetwork deployed to: ${contract.address}`); } @@ -25,4 +34,4 @@ main() .catch(error => { console.error(error); process.exit(1); - }); \ No newline at end of file + }); diff --git a/scripts/ssv-network-upgrade.ts b/scripts/ssv-network-upgrade.ts deleted file mode 100644 index a95e48c1..00000000 --- a/scripts/ssv-network-upgrade.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { ethers, upgrades } from 'hardhat'; -import { publishAbi } from './utils'; - -async function main() { - await publishAbi('SSVNetwork'); - - const proxyAddress = process.env.PROXY_ADDRESS || ''; - const ContractUpgraded = await ethers.getContractFactory('SSVNetwork'); - console.log('Running upgrade...'); - const newContract = await upgrades.upgradeProxy(proxyAddress, ContractUpgraded); - console.log(`SSVNetwork upgraded at: ${newContract.address}`); -} - -main() - .then(() => process.exit(0)) - .catch(error => { - console.error(error); - process.exit(1); - }); diff --git a/scripts/ssv-registry-deploy.ts b/scripts/ssv-registry-deploy.ts deleted file mode 100644 index e95361c7..00000000 --- a/scripts/ssv-registry-deploy.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { ethers, upgrades } from 'hardhat'; -import { publishAbi } from './utils'; - -async function main() { - await publishAbi('SSVRegistry'); - - const ssvRegistryFactory = await ethers.getContractFactory('SSVRegistry'); - console.log('Deploying ssvRegistryFactory...'); - const contract = await upgrades.deployProxy(ssvRegistryFactory, { initializer: false }); - await contract.deployed(); - console.log(`SSVRegistry deployed to: ${contract.address}`); -} - -main() - .then(() => process.exit(0)) - .catch(error => { - console.error(error); - process.exit(1); - }); diff --git a/scripts/ssv-registry-upgrade.ts b/scripts/ssv-registry-upgrade.ts deleted file mode 100644 index c8978625..00000000 --- a/scripts/ssv-registry-upgrade.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { ethers, upgrades } from 'hardhat'; -import { publishAbi } from './utils'; - -async function main() { - await publishAbi('SSVNetwork'); - - const proxyAddress = process.env.PROXY_ADDRESS || ''; - const ContractUpgraded = await ethers.getContractFactory('SSVRegistry'); - console.log('Running upgrade...'); - const newContract = await upgrades.upgradeProxy(proxyAddress, ContractUpgraded); - console.log(`SSVRegistry upgraded at: ${newContract.address}`); -} - -main() - .then(() => process.exit(0)) - .catch(error => { - console.error(error); - process.exit(1); - }); diff --git a/scripts/utils.ts b/scripts/utils.ts deleted file mode 100644 index 9bc8767d..00000000 --- a/scripts/utils.ts +++ /dev/null @@ -1,58 +0,0 @@ -const fs = require('fs'); -const simpleGit = require("simple-git"); -const ghpages = require('gh-pages'); -const hre = require('hardhat'); -const prompts = require('prompts'); - -const git = simpleGit.default(); - -export async function publishAbi(name: string) { - const { all } = await git.tags(); - const gitTagChoices = [ - { title: '[create new tag]', description: 'Create new git tag before contract deployment', value: 'create-tag' }, - ...all.map((tag: any) => ({ title: tag, value: tag })) - ]; - const response = await prompts([ - { - type: 'select', - name: 'gitTag', - message: 'Git tag to deploy?', - choices: gitTagChoices - }, - { - type: (prev: any) => prev === 'create-tag' ? 'text' : null, - name: 'newTag', - message: `Tag name?`, - validate: (value: any) => value === '' ? `Sorry, git tag can't be null` : true - }, - { - type: (prev: any, values: any) => values.gitTag === 'create-tag' ? 'toggle' : null, - name: 'createTag', - initial: true, - active: 'yes', - inactive: 'no', - message: 'Create and publish new tag?' - } - ]); - - let tag = null; - if (response.createTag) { - await git.addAnnotatedTag(response.newTag, `new version ${response.newTag}`); - await git.push('origin', response.newTag); - tag = response.newTag; - } else if (response.gitTag !== 'create-tag') { - tag = response.gitTag; - } - - if (!tag) throw 'Please select git tag to deploy the contract.'; - - const fullNames = await hre.artifacts.getAllFullyQualifiedNames(); - const contract = fullNames.find((item: string) => item.includes(`/${name}.sol`)); - - const { abi, contractName } = await hre.artifacts.readArtifact(contract); - const dir = `${hre.config.paths.root}/dist`; - await fs.promises.mkdir(`${dir}/abi/${tag}`, { recursive: true }); - await fs.promises.writeFile(`${dir}/abi/${tag}/${contractName.toLowerCase()}.json`, `${JSON.stringify(abi, null, 2)}\n`, { flag: 'w' }); - await ghpages.publish(dir); - console.log(`> ${name} contract abi published to:`, `https://bloxapp.github.io/ssv-network/abi/${tag}/${contractName.toLowerCase()}.json`); -} \ No newline at end of file diff --git a/test/account/deposit.ts b/test/account/deposit.ts new file mode 100644 index 00000000..215487ae --- /dev/null +++ b/test/account/deposit.ts @@ -0,0 +1,49 @@ +import * as helpers from '../helpers/contract-helpers'; + +import { expect } from 'chai'; +import { trackGas, GasGroup } from '../helpers/gas-usage'; + +let ssvNetworkContract: any, clusterResult1: any, minDepositAmount: any; + +describe('Deposit Tests', () => { + beforeEach(async () => { + // Initialize contract + ssvNetworkContract = (await helpers.initializeContract()).contract; + + // Register operators + await helpers.registerOperators(0, 12, helpers.CONFIG.minimalOperatorFee); + + minDepositAmount = (helpers.CONFIG.minimalBlocksBeforeLiquidation + 10) * helpers.CONFIG.minimalOperatorFee * 4; + + // Register validators + clusterResult1 = await helpers.registerValidators(4, 1, minDepositAmount, helpers.DataGenerator.cluster.new(), [GasGroup.REGISTER_VALIDATOR_NEW_STATE]); + }); + + it('Deposit as owner emits FundsDeposit event', async () => { + await helpers.DB.ssvToken.connect(helpers.DB.owners[1]).approve(ssvNetworkContract.address, minDepositAmount); + await expect(ssvNetworkContract.connect(helpers.DB.owners[1])['deposit(bytes32,uint256)'](clusterResult1.clusterId, minDepositAmount)).to.emit(ssvNetworkContract, 'FundsDeposit'); + }); + + it('Deposit as non-owner emits FundsDeposit event', async () => { + await helpers.DB.ssvToken.connect(helpers.DB.owners[0]).approve(ssvNetworkContract.address, minDepositAmount); + await expect(ssvNetworkContract.connect(helpers.DB.owners[0])['deposit(address,bytes32,uint256)'](helpers.DB.owners[1].address, clusterResult1.clusterId, minDepositAmount)).to.emit(ssvNetworkContract, 'FundsDeposit'); + }); + + it('Deposit as owner returns an error - ClusterNotExists', async () => { + await expect(ssvNetworkContract.connect(helpers.DB.owners[1])['deposit(bytes32,uint256)']('0x392791df626408017a264f53fde61065d5a93a32b60171df9d8a46afdf82992c', minDepositAmount)).to.be.revertedWith('ClusterNotExists'); + }); + + it('Deposit as non-owner returns an error - ClusterNotExists', async () => { + await expect(ssvNetworkContract.connect(helpers.DB.owners[0])['deposit(address,bytes32,uint256)'](helpers.DB.owners[1].address, '0x392791df626408017a264f53fde61065d5a93a32b60171df9d8a46afdf82992c', minDepositAmount)).to.be.revertedWith('ClusterNotExists'); + }); + + it('Deposit as owner gas limits', async () => { + await helpers.DB.ssvToken.connect(helpers.DB.owners[1]).approve(ssvNetworkContract.address, minDepositAmount); + await trackGas(ssvNetworkContract.connect(helpers.DB.owners[1])['deposit(bytes32,uint256)'](clusterResult1.clusterId, minDepositAmount), [GasGroup.DEPOSIT]); + }); + + it('Deposit as non-owner gas limits', async () => { + await helpers.DB.ssvToken.connect(helpers.DB.owners[0]).approve(ssvNetworkContract.address, minDepositAmount); + await trackGas(ssvNetworkContract.connect(helpers.DB.owners[0])['deposit(address,bytes32,uint256)'](helpers.DB.owners[1].address, clusterResult1.clusterId, minDepositAmount), [GasGroup.DEPOSIT]); + }); +}); diff --git a/test/account/withdraw.ts b/test/account/withdraw.ts new file mode 100644 index 00000000..04895502 --- /dev/null +++ b/test/account/withdraw.ts @@ -0,0 +1,75 @@ +import * as helpers from '../helpers/contract-helpers'; +import * as utils from '../helpers/utils'; + +import { expect } from 'chai'; +import { trackGas, GasGroup } from '../helpers/gas-usage'; + +let ssvNetworkContract: any, clusterResult1: any, minDepositAmount: any; + +describe('Withdraw Tests', () => { + beforeEach(async () => { + // Initialize contract + ssvNetworkContract = (await helpers.initializeContract()).contract; + + // Register operators + await helpers.registerOperators(0, 12, helpers.CONFIG.minimalOperatorFee); + + minDepositAmount = (helpers.CONFIG.minimalBlocksBeforeLiquidation + 10) * helpers.CONFIG.minimalOperatorFee * 4; + + // Register validators + clusterResult1 = await helpers.registerValidators(4, 1, minDepositAmount, helpers.DataGenerator.cluster.new(), [GasGroup.REGISTER_VALIDATOR_NEW_STATE]); + }); + + it('Withdraw pod balance emits PodFundsWithdrawal event', async () => { + await expect(ssvNetworkContract.connect(helpers.DB.owners[4]).withdrawPodBalance(clusterResult1.clusterId, helpers.CONFIG.minimalOperatorFee)).to.emit(ssvNetworkContract, 'PodFundsWithdrawal'); + }); + + it('Withdraw pod balance returns an error - NotEnoughBalance', async () => { + await expect(ssvNetworkContract.connect(helpers.DB.owners[4]).withdrawPodBalance(clusterResult1.clusterId, minDepositAmount)).to.be.revertedWith('NotEnoughBalance'); + }); + + it('Withdraw balance of liquidatable pod returns an error - NotEnoughBalance', async () => { + await utils.progressBlocks(helpers.CONFIG.minimalBlocksBeforeLiquidation); + await expect(ssvNetworkContract.connect(helpers.DB.owners[4]).withdrawPodBalance(clusterResult1.clusterId, helpers.CONFIG.minimalOperatorFee)).to.be.revertedWith('NotEnoughBalance'); + }); + + it('Withdraw pod balance gas limits', async () => { + await trackGas(ssvNetworkContract.connect(helpers.DB.owners[4]).withdrawPodBalance(clusterResult1.clusterId, helpers.CONFIG.minimalOperatorFee), [GasGroup.WITHDRAW]); + }); + + it('Withdraw total operator balance emits OperatorFundsWithdrawal event', async () => { + await expect(ssvNetworkContract.connect(helpers.DB.owners[0])['withdrawOperatorBalance(uint64)'](1)).to.emit(ssvNetworkContract, 'OperatorFundsWithdrawal'); + }); + + it('Withdraw total operator balance gas limits', async () => { + await trackGas(ssvNetworkContract.connect(helpers.DB.owners[0])['withdrawOperatorBalance(uint64)'](1), [GasGroup.WITHDRAW]); + }); + + it('Withdraw operator balance emits OperatorFundsWithdrawal event', async () => { + await expect(ssvNetworkContract.connect(helpers.DB.owners[0])['withdrawOperatorBalance(uint64,uint256)'](1, helpers.CONFIG.minimalOperatorFee)).to.emit(ssvNetworkContract, 'OperatorFundsWithdrawal'); + }); + + it('Withdraw operator balance returns an error - CallerNotOwner', async () => { + await expect(ssvNetworkContract.connect(helpers.DB.owners[2])['withdrawOperatorBalance(uint64,uint256)'](1, minDepositAmount)).to.be.revertedWith('CallerNotOwner'); + }); + + it('Withdraw operator balance returns an error - NotEnoughBalance', async () => { + await expect(ssvNetworkContract.connect(helpers.DB.owners[0])['withdrawOperatorBalance(uint64,uint256)'](1, minDepositAmount)).to.be.revertedWith('NotEnoughBalance'); + }); + + it('Withdraw total operator balance returns an error - CallerNotOwner', async () => { + await expect(ssvNetworkContract.connect(helpers.DB.owners[2])['withdrawOperatorBalance(uint64)'](12)).to.be.revertedWith('CallerNotOwner'); + }); + + it('Withdraw total operator balance returns an error - NotEnoughBalance', async () => { + await expect(ssvNetworkContract.connect(helpers.DB.owners[0])['withdrawOperatorBalance(uint64)'](12)).to.be.revertedWith('NotEnoughBalance'); + }); + + it('Withdraw operator balance gas limits', async () => { + await trackGas(ssvNetworkContract.connect(helpers.DB.owners[0])['withdrawOperatorBalance(uint64,uint256)'](1, helpers.CONFIG.minimalOperatorFee), [GasGroup.WITHDRAW]); + }); + + it('Withdraw total operator balance gas limits', async () => { + await trackGas(ssvNetworkContract.connect(helpers.DB.owners[0])['withdrawOperatorBalance(uint64)'](1), [GasGroup.WITHDRAW]); + }); +}); diff --git a/test/dao/network-fee-change.ts b/test/dao/network-fee-change.ts new file mode 100644 index 00000000..2adaca8e --- /dev/null +++ b/test/dao/network-fee-change.ts @@ -0,0 +1,32 @@ +import * as helpers from '../helpers/contract-helpers'; + +import { expect } from 'chai'; + +let ssvNetworkContract: any, networkFee: any; + +describe('Network Fee Tests', () => { + beforeEach(async () => { + // Initialize contract + ssvNetworkContract = (await helpers.initializeContract()).contract; + + // Define minumum allowed network fee to pass shrinkable validation + networkFee = helpers.CONFIG.minimalOperatorFee / 10; + }); + + it('Get network fee', async () => { + expect(await ssvNetworkContract.getNetworkFee()).to.equal(0); + }); + + it('Change network fee emits NetworkFeeUpdate event', async () => { + await expect(ssvNetworkContract.updateNetworkFee(networkFee)) + .to.emit(ssvNetworkContract, 'NetworkFeeUpdate').withArgs(0, networkFee); + }); + + it('Change network fee fails small number error', async () => { + await expect(ssvNetworkContract.updateNetworkFee(networkFee - 1)).to.be.revertedWith('Precision is over the maximum defined'); + }); + + it('Change network fee fails no owner', async () => { + await expect(ssvNetworkContract.connect(helpers.DB.owners[3]).updateNetworkFee(networkFee)).to.be.revertedWith('caller is not the owner'); + }); +}); diff --git a/test/dao/network-fee-withdraw.ts.off b/test/dao/network-fee-withdraw.ts.off new file mode 100644 index 00000000..17d440bf --- /dev/null +++ b/test/dao/network-fee-withdraw.ts.off @@ -0,0 +1,61 @@ +import * as helpers from '../helpers/contract-helpers'; +import * as utils from '../helpers/utils'; + +import { expect } from 'chai'; +import { GasGroup } from '../helpers/gas-usage'; + +let ssvNetworkContract: any, minDepositAmount: any, burnPerBlock: any, networkFee: any; + +describe('DAO Network Fee Withdraw Tests', () => { + beforeEach(async () => { + // Initialize contract + ssvNetworkContract = (await helpers.initializeContract()).contract; + + // Define minumum allowed network fee to pass shrinkable validation + networkFee = helpers.CONFIG.minimalOperatorFee; + + // Register operators + await helpers.registerOperators(0, 12, helpers.CONFIG.minimalOperatorFee); + + burnPerBlock = helpers.CONFIG.minimalOperatorFee * 4 + networkFee; + minDepositAmount = helpers.CONFIG.minimalBlocksBeforeLiquidation * burnPerBlock; + + // Deposit into accounts + // await helpers.deposit([4], [minDepositAmount]); + + // Set network fee + await ssvNetworkContract.updateNetworkFee(networkFee); + + // Register validators + await helpers.registerValidators(4, 1, minDepositAmount, helpers.DataGenerator.cluster.new(), [GasGroup.REGISTER_VALIDATOR_NEW_STATE]); + await utils.progressBlocks(10); + + // Temporary till deposit logic not available + // Mint tokens + await helpers.DB.ssvToken.mint(ssvNetworkContract.address, minDepositAmount); + }); + + it('Get withdrawable network earnings', async () => { + expect(await ssvNetworkContract.getNetworkBalance()).to.above(0); + }); + + it('Get withdrawable network earnings fails no owner', async () => { + await expect(ssvNetworkContract.connect(helpers.DB.owners[3]).getNetworkBalance()).to.be.revertedWith('caller is not the owner'); + }); + + it('Withdraw network earnings emits NetworkFeesWithdrawal event', async () => { + const amount = await ssvNetworkContract.getNetworkBalance(); + await expect(ssvNetworkContract.withdrawDAOEarnings(amount)) + .to.emit(ssvNetworkContract, 'NetworkFeesWithdrawal').withArgs(amount, helpers.DB.owners[0].address); + }); + + it('Withdraw network earnings fails balance is lower', async () => { + const amount = await ssvNetworkContract.getNetworkBalance() * 2; + await expect(ssvNetworkContract.withdrawDAOEarnings(amount)).to.be.revertedWith('NotEnoughBalance'); + }); + + it('Withdraw network earnings fails no owner', async () => { + const amount = await ssvNetworkContract.getNetworkBalance(); + await expect(ssvNetworkContract.connect(helpers.DB.owners[3]).withdrawDAOEarnings(amount)).to.be.revertedWith('caller is not the owner'); + }); +}); diff --git a/test/e2e/balances.ts b/test/e2e/balances.ts deleted file mode 100644 index 19a61c91..00000000 --- a/test/e2e/balances.ts +++ /dev/null @@ -1,94 +0,0 @@ -// Balances E2E Test - -// Declare all imports -import { - initContracts, - registerOperator, - registerValidator, - updateOperatorFee, - processTestCase, - updateNetworkFee, - account1, - account2 -} from '../helpers/setup' - -import { - checkOperatorBalances, - checkTotalBalance, - checkTotalEarnings, - checkNetworkTreasury -} from '../helpers/asserts' - -describe('SSV Network', function () { - beforeEach(async function () { - await initContracts() - }) - - it('Operator and validator balances', async function () { - const testFlow = { - 10: { - funcs: [ - () => updateNetworkFee(20000000), - () => registerOperator([ - { account: account2, idx: 0, fee: 20000000 }, - { account: account2, idx: 1, fee: 40000000 }, - { account: account1, idx: 2, fee: 50000000 }, - { account: account2, idx: 3, fee: 30000000 } - ]) - ], - asserts: [ - () => checkNetworkTreasury() - ] - }, - 20: { - funcs: [ - () => registerValidator([{ account: account1, validatorIdx: 0, operatorIdxs: [0, 1, 2, 3], depositAmount: 1000000000 },]) - ], - asserts: [ - () => checkOperatorBalances([0, 1, 2, 3]), - () => checkNetworkTreasury() - ] - }, - 30: { - funcs: [ - () => updateOperatorFee(account2, 0, 11000), - () => registerValidator([{ account: account1, validatorIdx: 1, operatorIdxs: [0, 1, 2, 3], depositAmount: 1000000000 },]) - ], - asserts: [ - () => checkOperatorBalances([0, 1, 2, 3]), - () => checkNetworkTreasury() - ] - }, - 40: { - funcs: [ - () => registerValidator([{ account: account1, validatorIdx: 2, operatorIdxs: [0, 1, 2, 3], depositAmount: 1000000000 },]) - ], - asserts: [ - () => checkOperatorBalances([0, 1, 2, 3]), - () => checkNetworkTreasury() - ] - }, - 50: { - funcs: [ - () => registerValidator([{ account: account1, validatorIdx: 3, operatorIdxs: [0, 1, 2, 3], depositAmount: 1000000000 },]) - ], - asserts: [ - () => checkOperatorBalances([0, 1, 2, 3]), - () => checkTotalBalance([account1.address, account2.address]), - () => checkTotalEarnings([account1.address, account2.address]), - () => checkNetworkTreasury() - ] - }, - 100: { - asserts: [ - () => checkOperatorBalances([0, 1, 2, 3]), - () => checkTotalBalance([account1.address, account2.address]), - () => checkTotalEarnings([account1.address, account2.address]), - () => checkNetworkTreasury() - ] - } - } - - // await processTestCase(testFlow) - }) -}) \ No newline at end of file diff --git a/test/e2e/deposit.ts b/test/e2e/deposit.ts deleted file mode 100644 index 78e231f5..00000000 --- a/test/e2e/deposit.ts +++ /dev/null @@ -1,65 +0,0 @@ -// Deposit E2E Test - -// Declare all imports -import { - initContracts, - registerOperator, - registerValidator, - deposit, - processTestCase, - account1, - account2 -} from '../helpers/setup' - -import { - checkTotalBalance, - checkTotalEarnings -} from '../helpers/asserts' - -describe('SSV Network', function () { - beforeEach(async function () { - await initContracts() - }) - - it('Deposit', async function () { - const testFlow = { - 10: { - funcs: [ - () => registerOperator([ - { account: account2, idx: 0, fee: 20000 }, - { account: account2, idx: 1, fee: 10000 }, - { account: account1, idx: 2, fee: 10000 }, - { account: account2, idx: 3, fee: 30000 } - ]) - ], - asserts: [] - }, - 20: { - funcs: [ - () => registerValidator([{ account: account1, validatorIdx: 0, operatorIdxs: [0, 1, 2, 3], depositAmount: 1000000000 },]) - ], - asserts: [ - () => checkTotalBalance([account1.address, account2.address]), - () => checkTotalEarnings([account1.address, account2.address]) - ] - }, - 30: { - funcs: [ - () => deposit(account1, 5000) - ], - asserts: [ - () => checkTotalBalance([account1.address, account2.address]), - () => checkTotalEarnings([account1.address, account2.address]) - ] - }, - 40: { - asserts: [ - () => checkTotalBalance([account1.address, account2.address]), - () => checkTotalEarnings([account1.address, account2.address]) - ] - } - } - - // await processTestCase(testFlow) - }) -}) \ No newline at end of file diff --git a/test/e2e/validator.ts b/test/e2e/validator.ts deleted file mode 100644 index dbed00e6..00000000 --- a/test/e2e/validator.ts +++ /dev/null @@ -1,80 +0,0 @@ -// Validator E2E Test - -// Declare all imports -import { - initContracts, - registerOperator, - registerValidator, - updateValidator, - removeValidator, - processTestCase, - updateNetworkFee, - account1, - account2 -} from '../helpers/setup' - -import { - checkOperatorBalances, - checkTotalBalance, - checkTotalEarnings, - checkNetworkTreasury -} from '../helpers/asserts' - -describe('SSV Network', function () { - beforeEach(async function () { - await initContracts() - }) - - it('Operator and validator balances', async function () { - const testFlow = { - 10: { - funcs: [ - () => updateNetworkFee(10000), - () => registerOperator([ - { account: account2, idx: 0, fee: 20000 }, - { account: account2, idx: 1, fee: 10000 }, - { account: account1, idx: 2, fee: 10000 }, - { account: account2, idx: 3, fee: 30000 } - ]) - ], - asserts: [ - () => checkNetworkTreasury() - ] - }, - 20: { - funcs: [ - () => registerValidator([{ account: account1, validatorIdx: 0, operatorIdxs: [0, 1, 2, 3], depositAmount: 2000000000 },]) - ], - asserts: [ - () => checkOperatorBalances([0, 1, 2, 3]), - () => checkNetworkTreasury() - ] - }, - 100: { - funcs: [ - () => updateValidator(account1, 0, [0, 1, 2, 3], 2500000000) - ] - }, - 140: { - asserts: [ - () => checkTotalBalance([account1.address, account2.address]), - () => checkNetworkTreasury() - ] - }, - 150: { - funcs: [ - () => removeValidator(account1, 0) - ] - }, - 180: { - asserts: [ - () => checkTotalBalance([account1.address, account2.address]), - () => checkTotalEarnings([account1.address, account2.address]), - () => checkNetworkTreasury() - ] - } - } - - // await processTestCase(testFlow) - }) -}) \ No newline at end of file diff --git a/test/e2e/withdraw.ts b/test/e2e/withdraw.ts deleted file mode 100644 index 563b380f..00000000 --- a/test/e2e/withdraw.ts +++ /dev/null @@ -1,69 +0,0 @@ -// Withdraw E2E Test - -// Declare all imports -import { - initContracts, - registerOperator, - registerValidator, - withdraw, - processTestCase, - account1, - account2 -} from '../helpers/setup' - -import { - checkWithdrawFail, - checkTotalBalance, - checkTotalEarnings -} from '../helpers/asserts' - -describe('SSV Network', function () { - beforeEach(async function () { - await initContracts() - }) - - it('Withdraw', async function () { - const testFlow = { - 10: { - funcs: [ - () => registerOperator([ - { account: account2, idx: 0, fee: 20000 }, - { account: account2, idx: 1, fee: 10000 }, - { account: account1, idx: 2, fee: 10000 }, - { account: account2, idx: 3, fee: 30000 } - ]) - ] - }, - 20: { - funcs: [ - () => registerValidator([{ account: account1, validatorIdx: 0, operatorIdxs: [0, 1, 2, 3], depositAmount: 1000000000 },]) - ], - asserts: [ - () => checkTotalBalance([account1.address, account2.address]), - () => checkTotalEarnings([account1.address, account2.address]) - ] - }, - 100: { - funcs: [ - () => withdraw(account2, 500000000) - ], - asserts: [ - () => checkTotalBalance([account1.address, account2.address]), - () => checkTotalEarnings([account1.address, account2.address]) - ] - }, - 110: { - asserts: [() => checkWithdrawFail(account2, 10000000000000)] - }, - 120: { - asserts: [ - // () => checkTotalBalance([account1.address, account2.address]), - () => checkTotalEarnings([account1.address, account2.address]), - () => checkWithdrawFail(account2, 1000000000) - ] - } - } - - // await processTestCase(testFlow) - }) -}) \ No newline at end of file diff --git a/test/helpers/asserts.ts b/test/helpers/asserts.ts deleted file mode 100644 index e6a9cab4..00000000 --- a/test/helpers/asserts.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { ethers, upgrades } from 'hardhat'; -import * as chai from 'chai'; -import * as chaiAsPromised from 'chai-as-promised'; -const { expect } = chai; - -import { - operatorsIds, - operatorEarningsOf, - addressBalanceOf, - totalEarningsOf, - getNetworkTreasury, - ssvNetwork, -} from './setup'; - -//@ts-ignore -export const checkOperatorBalances = async (operatorIdxs) => { - for (const oidx of operatorIdxs) { - console.log(` | Operator Balance > [OPERATOR] ${oidx} | [VALUE] ${+await operatorEarningsOf(oidx)}`); - // expect(+await ssvNetwork.getOperatorEarnings(operatorsIds[oidx])).to.equal(+await operatorEarningsOf(oidx)); - } -} - -//@ts-ignore -export const checkTotalBalance = async (addresses) => { - for (const address of addresses) { - console.log(` | Total balance > [ADDRESS] ${address} | [VALUE] ${+await addressBalanceOf(address)} | [BLOCKCHAIN] ${await ssvNetwork.getAddressBalance(address)}`); - expect(+await ssvNetwork.getAddressBalance(address)).to.equal(+await addressBalanceOf(address)); - } -} - -//@ts-ignore -export const checkTotalEarnings = async (addresses) => { - for (const address of addresses) { - console.log(` | Total Earnings > [ADDRESS] ${address} | [VALUE] ${+await totalEarningsOf(address)}`); // | [BLOCKCHAIN] ${await ssvNetwork.getAddressEarnings(address)} - // expect(+await ssvNetwork.getAddressEarnings(address)).to.equal(+await totalEarningsOf(address)); - } -} - -//@ts-ignore -export const checkLiquidationStatus = async (address, result) => { - console.log(` | Liquidation Status > [ADDRESS] ${address} | [STATUS] ${await ssvNetwork.isLiquidatable(address)}`); // | [BLOCKCHAIN] ${await ssvNetwork.getAddressEarnings(address)} - expect(await ssvNetwork.isLiquidatable(address)).to.equal(result) -} - -//@ts-ignore -export const checkWithdrawFail = async (account, amount) => await expect(ssvNetwork.connect(account).withdraw(`${amount}`)).to.be.revertedWith('NotEnoughBalance'); - -export const checkNetworkTreasury = async () => { - console.log("====>", await ssvNetwork.getNetworkEarnings(), await getNetworkTreasury()) - expect(await ssvNetwork.getNetworkEarnings()).to.equal(await getNetworkTreasury()) -}; \ No newline at end of file diff --git a/test/helpers/contract-helpers.ts b/test/helpers/contract-helpers.ts new file mode 100644 index 00000000..76c100b4 --- /dev/null +++ b/test/helpers/contract-helpers.ts @@ -0,0 +1,198 @@ +// Imports +declare const ethers: any; +declare const upgrades: any; + +import { trackGas, GasGroup } from './gas-usage'; + +export let DB: any; +export let CONFIG: any; + +export const DataGenerator = { + publicKey: (index: number) => `0x${index.toString(16).padStart(96, '1')}`, + shares: (index: number) => `0x${index.toString(16).padStart(360, '1')}`, + cluster: { + new: (size = 4) => { + const usedOperatorIds: any = {}; + for (const clusterId in DB.clusters) { + for (const operatorId of DB.clusters[clusterId].operatorIds) { + usedOperatorIds[operatorId] = true; + } + } + + const result = []; + for (const operator of DB.operators) { + if (operator && !usedOperatorIds[operator.id]) { + result.push(operator.id); + usedOperatorIds[operator.id] = true; + + if (result.length == size) { + break; + } + } + } + if (result.length < size) { + throw new Error('No new clusters. Try to register more operators.'); + } + return result; + }, + byId: (id: any) => DB.clusters[id].operatorIds + } +}; + +export const initializeContract = async () => { + CONFIG = { + operatorMaxFeeIncrease: 1000, + declareOperatorFeePeriod: 3600, // HOUR + executeOperatorFeePeriod: 86400, // DAY + minimalOperatorFee: 100000000, + minimalBlocksBeforeLiquidation: 50, + }; + + DB = { + owners: [], + validators: [], + operators: [], + clusters: [], + ssvNetwork: {}, + ssvToken: {}, + }; + + // Define accounts + DB.owners = await ethers.getSigners(); + + // Initialize contract + const ssvNetwork = await ethers.getContractFactory('SSVNetwork'); + const ssvToken = await ethers.getContractFactory('SSVTokenMock'); + + DB.ssvToken = await ssvToken.deploy(); + await DB.ssvToken.deployed(); + + DB.ssvNetwork.contract = await upgrades.deployProxy(ssvNetwork, [ + DB.ssvToken.address, + CONFIG.operatorMaxFeeIncrease, + CONFIG.declareOperatorFeePeriod, + CONFIG.executeOperatorFeePeriod + ]); + + await DB.ssvNetwork.contract.deployed(); + + DB.ssvNetwork.owner = DB.owners[0]; + + await DB.ssvToken.mint(DB.owners[1].address, '1000000000000000'); + await DB.ssvToken.mint(DB.owners[2].address, '1000000000000000'); + await DB.ssvToken.mint(DB.owners[3].address, '1000000000000000'); + await DB.ssvToken.mint(DB.owners[4].address, '1000000000000000'); + await DB.ssvToken.mint(DB.owners[5].address, '1000000000000000'); + + return { contract: DB.ssvNetwork.contract, owner: DB.ssvNetwork.owner, ssvToken: DB.ssvToken }; +}; + +export const registerOperators = async (ownerId: number, numberOfOperators: number, fee: string, gasGroups: GasGroup[] = [GasGroup.REGISTER_OPERATOR]) => { + for (let i = 0; i < numberOfOperators; ++i) { + const { eventsByName } = await trackGas( + DB.ssvNetwork.contract.connect(DB.owners[ownerId]).registerOperator(DataGenerator.publicKey(i), fee), + gasGroups + ); + const event = eventsByName.OperatorAdded[0]; + DB.operators[event.args.id] = { + id: event.args.id, ownerId: ownerId, publicKey: DataGenerator.publicKey(i) + }; + } +}; + +export const deposit = async (ownerId: number, clusterId: string, amount: string) => { + await DB.ssvToken.connect(DB.owners[ownerId]).approve(DB.ssvNetwork.contract.address, amount); + await DB.ssvNetwork.contract.connect(DB.owners[ownerId])['deposit(bytes32,uint256)'](clusterId, amount); +}; + +export const registerPodAndDeposit = async(ownerId: number, operatorIds: number[], amount: string): Promise => { + let clusterId; + try { + await DB.ssvToken.connect(DB.owners[ownerId]).approve(DB.ssvNetwork.contract.address, amount); + const clusterTx = await (await DB.ssvNetwork.contract.connect(DB.owners[ownerId]).registerPod(operatorIds, amount)).wait(); + clusterId = clusterTx.events[0].args.clusterId; + } catch (e) { + clusterId = await DB.ssvNetwork.contract.getClusterId(operatorIds); + if (+amount > 0) { + await deposit(ownerId, clusterId, amount); + } + } + return { clusterId }; +}; + +export const registerValidators = async (ownerId: number, numberOfValidators: number, amount: string, operatorIds: number[], gasGroups?: GasGroup[]) => { + const validators: any = []; + let clusterId: any; + + // Register validators to contract + for (let i = 0; i < numberOfValidators; i++) { + const publicKey = DataGenerator.publicKey(DB.validators.length); + const shares = DataGenerator.shares(DB.validators.length); + + const { eventsByName } = await trackGas(DB.ssvNetwork.contract.connect(DB.owners[ownerId]).registerValidator( + publicKey, + (await registerPodAndDeposit(ownerId, operatorIds, amount)).clusterId, + shares, + ), gasGroups); + clusterId = eventsByName.ValidatorAdded[0].args.clusterId; + DB.clusters[clusterId] = ({ id: clusterId, operatorIds }); + DB.validators.push({ publicKey, clusterId, shares }); + validators.push({ publicKey, shares }); + } + + return { validators, clusterId }; +}; + +export const transferValidator = async (ownerId: number, publicKey: string, operatorIds: number[], amount: string, gasGroups?: GasGroup[]) => { + // let podId: any; + const shares = DataGenerator.shares(DB.validators.length); + + // Transfer validator + await trackGas(DB.ssvNetwork.contract.connect(DB.owners[ownerId]).transferValidator( + publicKey, + (await registerPodAndDeposit(ownerId, operatorIds, amount)).clusterId, + shares, + ), gasGroups); + + // FOR ADAM TO UPDATE + // podId = eventsByName.ValidatorTransferred[0].args.podId; + // DB.clusters[podId] = ({ id: podId, operatorIds }); + // DB.validators[publicKey].podId = podId; + // DB.validators[publicKey].shares = shares; + + // return { podId }; +}; + + +export const bulkTransferValidator = async (ownerId: number, publicKey: string[], fromCluster: string, toCluster: string, amount: string, gasGroups?: GasGroup[]) => { + const shares = Array(publicKey.length).fill(DataGenerator.shares(0)); + + await registerPodAndDeposit(ownerId, DataGenerator.cluster.byId(toCluster), amount); + + // Bulk transfer validators + await trackGas(DB.ssvNetwork.contract.connect(DB.owners[ownerId]).bulkTransferValidators( + publicKey, + fromCluster, + toCluster, + shares, + ), gasGroups); + + // FOR ADAM TO UPDATE + // podId = eventsByName.ValidatorTransferred[0].args.podId; + // DB.clusters[podId] = ({ id: podId, operatorIds }); + // DB.validators[publicKey].podId = podId; + // DB.validators[publicKey].shares = shares; + + // return { podId }; +}; + +export const liquidate = async (executorOwnerId: number, liquidatedOwnerId: number, operatorIds: number[], gasGroups?: GasGroup[]) => { + const { eventsByName } = await trackGas(DB.ssvNetwork.contract.connect(DB.owners[executorOwnerId]).liquidate( + DB.owners[liquidatedOwnerId].address, + await DB.ssvNetwork.contract.getPod(operatorIds), + ), gasGroups); + + const clusterId = eventsByName.AccountLiquidated[0].args.clusterId; + return { clusterId }; +}; + diff --git a/test/helpers/gas-usage.ts b/test/helpers/gas-usage.ts new file mode 100644 index 00000000..a1cdbc3c --- /dev/null +++ b/test/helpers/gas-usage.ts @@ -0,0 +1,95 @@ +import { expect } from 'chai'; + +export enum GasGroup { + REGISTER_OPERATOR, + REMOVE_OPERATOR, + REMOVE_OPERATOR_WITH_WITHDRAW, + REGISTER_VALIDATOR_EXISTING_POD, + REGISTER_VALIDATOR_EXISTING_CLUSTER, + REGISTER_VALIDATOR_NEW_STATE, + REMOVE_VALIDATOR, + TRANSFER_VALIDATOR_NEW_CLUSTER, + TRANSFER_VALIDATOR, + TRANSFER_VALIDATOR_NON_EXISTING_POD, + BULK_TRANSFER_VALIDATOR, + BULK_TRANSFER_VALIDATOR_NON_EXISTING_POD, + DEPOSIT, + WITHDRAW, + REGISTER_POD, + LIQUIDATE_POD, + REACTIVATE_POD, +} + +const MAX_GAS_PER_GROUP: any = { + /* REAL GAS LIMITS */ + [GasGroup.REGISTER_OPERATOR]: 105000, + [GasGroup.REMOVE_OPERATOR]: 45000, + [GasGroup.REMOVE_OPERATOR_WITH_WITHDRAW]: 52000, + [GasGroup.REGISTER_VALIDATOR_EXISTING_POD]: 203000, + [GasGroup.REGISTER_VALIDATOR_EXISTING_CLUSTER]: 216000, + [GasGroup.REGISTER_VALIDATOR_NEW_STATE]: 313000, + [GasGroup.REMOVE_VALIDATOR]: 120000, + [GasGroup.TRANSFER_VALIDATOR_NEW_CLUSTER]: 400000, + [GasGroup.TRANSFER_VALIDATOR]: 260000, + [GasGroup.TRANSFER_VALIDATOR_NON_EXISTING_POD]: 290000, + [GasGroup.BULK_TRANSFER_VALIDATOR]: 366000, + [GasGroup.BULK_TRANSFER_VALIDATOR_NON_EXISTING_POD]: 383000, + [GasGroup.DEPOSIT]: 77600, + [GasGroup.WITHDRAW]: 102000, + [GasGroup.REGISTER_POD]: 138000, + [GasGroup.LIQUIDATE_POD]: 159000, + [GasGroup.REACTIVATE_POD]: 166000, +}; + +class GasStats { + max: number | null = null; + min: number | null = null; + totalGas = 0; + txCount = 0; + + + addStat(gas: number) { + this.totalGas += gas; + ++this.txCount; + this.max = Math.max(gas, (this.max === null) ? -Infinity : this.max); + this.min = Math.min(gas, (this.min === null) ? Infinity : this.min); + } + + get average(): number { + return this.totalGas / this.txCount; + } +} + +const gasUsageStats = new Map(); + +for (const group in MAX_GAS_PER_GROUP) { + gasUsageStats.set(group, new GasStats()); +} + +export const trackGas = async (tx: Promise, groups?: Array): Promise => { + const receipt = await (await tx).wait(); + + groups && [...new Set(groups)].forEach(group => { + const gasUsed = parseInt(receipt.gasUsed); + + if (!process.env.NO_GAS_ENFORCE) { + const maxGas = MAX_GAS_PER_GROUP[group]; + expect(gasUsed).to.be.lessThanOrEqual(maxGas, 'gasUsed higher than max allowed gas'); + } + + gasUsageStats.get(group.toString()).addStat(gasUsed); + }); + return { + ...receipt, + gasUsed: +receipt.gasUsed, + eventsByName: receipt.events.reduce((aggr: any, item: any) => { + aggr[item.event] = aggr[item.event] || []; + aggr[item.event].push(item); + return aggr; + }, {}) }; +}; + +export const getGasStats = (group: string) => { + return gasUsageStats.get(group) || new GasStats(); +}; + diff --git a/test/helpers/setup.ts b/test/helpers/setup.ts deleted file mode 100644 index 6a22167e..00000000 --- a/test/helpers/setup.ts +++ /dev/null @@ -1,351 +0,0 @@ -import { ethers, upgrades } from 'hardhat'; -import { progressTime, progressBlocks, snapshot, mine } from './utils'; - -declare var network: any; - -const operatorPublicKeyPrefix = '12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345'; -const validatorPublicKeyPrefix = '98765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765'; -const minimumBlocksBeforeLiquidation = 7000; -const operatorMaxFeeIncrease = 10; - -//@ts-ignore -export let ssvToken: any, ssvRegistry: any, ssvNetwork: any, utils: any; -//@ts-ignore -export let owner: any, account1: any, account2: any, account3: any, account4: any; - -export const operatorsPub = Array.from(Array(10).keys()).map(k => `0x${operatorPublicKeyPrefix}${k}`); -export const validatorsPub = Array.from(Array(10).keys()).map(k => `0x${validatorPublicKeyPrefix}${k}`); -export const operatorsIds = Array.from(Array(10).keys()).map(k => k + 1); - -const DAY = 86400; -const YEAR = 365 * DAY; - -const setOperatorFeePeriod = 0; -const approveOperatorFeePeriod = DAY; - -const operatorData: any = []; -const addressData: any = {}; -const globalData: any = {}; - -export const initContracts = async () => { - [owner, account1, account2, account3] = await ethers.getSigners(); - - // for tests - initGlobalData(); - initAddressData(account1.address); - initAddressData(account2.address); - initAddressData(account3.address); - // - const utilsFactory = await ethers.getContractFactory('Utils'); - const ssvTokenFactory = await ethers.getContractFactory('SSVTokenMock'); - const ssvRegistryFactory = await ethers.getContractFactory('SSVRegistry'); - const ssvNetworkFactory = await ethers.getContractFactory('SSVNetwork'); - utils = await utilsFactory.deploy(); - ssvToken = await ssvTokenFactory.deploy(); - ssvRegistry = await upgrades.deployProxy(ssvRegistryFactory, { initializer: false }); - await utils.deployed(); - await ssvToken.deployed(); - await ssvRegistry.deployed(); - ssvNetwork = await upgrades.deployProxy(ssvNetworkFactory, [ssvRegistry.address, ssvToken.address, minimumBlocksBeforeLiquidation, operatorMaxFeeIncrease, setOperatorFeePeriod, approveOperatorFeePeriod]); - await ssvNetwork.deployed(); - await ssvToken.mint(account1.address, '100000000000'); - await ssvToken.mint(account2.address, '100000000000'); -} - -const initGlobalData = () => { - globalData.networkFeeIndexBlockNumber = 0; - globalData.networkFeeIndex = 0; - globalData.networkFee = 0; - globalData.validatorCount = 0; - globalData.networkEarnings = 0; - globalData.networkEarningsBlockNumber = 0; - globalData.withdrawnFromTreasury = 0; -} -//@ts-ignore -const initAddressData = (address) => { - addressData[address] = { - operatorIdxs: [], - operatorsInUse: {}, - validatorOperators: {}, - used: 0, - withdrawn: 0, - deposited: 0, - earned: 0, - networkFee: 0, - networkFeeIndex: 0, - activeValidators: 0, - } -}; - -const globalNetworkFeeIndex = async () => { - return globalData.networkFeeIndex + - (+await utils.blockNumber() - globalData.networkFeeIndexBlockNumber) * - globalData.networkFee; -} -//@ts-ignore -export const operatorIndexOf = async (idx) => { - const currentBlockNumber = await utils.blockNumber(); - const value = operatorData[idx].index + - (currentBlockNumber - operatorData[idx].indexBlockNumber) * - operatorData[idx].fee; - return value; -} -//@ts-ignore -const operatorExpenseOf = async (address, oidx) => { - return addressData[address].operatorsInUse[oidx].used + - (await operatorIndexOf(oidx) - addressData[address].operatorsInUse[oidx].index) * - addressData[address].operatorsInUse[oidx].validatorsCount; -} -//@ts-ignore -export const operatorEarningsOf = async (idx) => { - const currentBlockNumber = await utils.blockNumber(); - const value = operatorData[idx].balance + - (currentBlockNumber - operatorData[idx].blockNumber) * - operatorData[idx].fee * operatorData[idx].validatorsCount; - return value; -} -//@ts-ignore -export const addressNetworkFee = async (address) => { - let { - activeValidators, - networkFee, - networkFeeIndex, - } = addressData[address]; - return networkFee + - (+await globalNetworkFeeIndex() - networkFeeIndex) * activeValidators; -} -//@ts-ignore -export const addressBalanceOf = async (address) => { - let { - deposited, - withdrawn, - networkFee, - used, - operatorsInUse, - } = addressData[address]; - let total = deposited; - - total += await totalEarningsOf(address); - - for (const oidx of Object.keys(operatorsInUse)) { - used += await operatorExpenseOf(address, oidx); - } - - total -= withdrawn + used + await addressNetworkFee(address); - - return total; -} -//@ts-ignore -export const totalEarningsOf = async (address) => { - let { - earned, - operatorIdxs, - } = addressData[address]; - - let total = earned; - - for (const oidx of operatorIdxs) { - total += await operatorEarningsOf(oidx); - } - - return total; -} -//@ts-ignore -export const registerOperator = async (operators) => { - for (const operatorObject of operators) { - await ssvNetwork.connect(operatorObject.account).registerOperator(`testOperator ${operatorObject.idx}`, operatorsPub[operatorObject.idx], operatorObject.fee); - await progressBlocks(1); - const fee = operatorObject.fee - operatorData[operatorObject.idx] = { - fee, - blockNumber: await utils.blockNumber(), - indexBlockNumber: await utils.blockNumber(), - index: 0, - validatorsCount: 0, - balance: 0, - }; - - addressData[operatorObject.account.address].operatorIdxs.push(operatorObject.idx); - console.log(` | Register operator ${operatorObject.idx} > [ADDRESS] ${operatorObject.account.address} | [ACTUAL_BLOCK] ${await utils.blockNumber()}`); - } -} -//@ts-ignore -export const registerValidator = async (validators) => { - for (const validatorObject of validators) { - await ssvToken.connect(validatorObject.account).approve(ssvNetwork.address, validatorObject.depositAmount); - await ssvNetwork.connect(validatorObject.account).registerValidator( - validatorsPub[validatorObject.validatorIdx], - validatorObject.operatorIdxs.map((oidx: number) => operatorsIds[oidx]), - validatorObject.operatorIdxs.map((oidx: number) => operatorsPub[oidx]), - validatorObject.operatorIdxs.map((oidx: number) => operatorsPub[oidx]), - `${validatorObject.depositAmount}`, - ); - console.log(`[ACTUAL_BLOCK] ${await utils.blockNumber()}`) - await progressBlocks(1); - await updateAddressNetworkFee(validatorObject.account.address); - await updateNetworkEarnings(); - addressData[validatorObject.account.address].validatorOperators[validatorObject.validatorIdx] = []; - for (const oidx of validatorObject.operatorIdxs) { - await updateOperatorBalance(oidx); - operatorData[oidx].validatorsCount += 1; - addressData[validatorObject.account.address].operatorsInUse[oidx] = addressData[validatorObject.account.address].operatorsInUse[oidx] || { validatorsCount: 0, index: 0, used: 0 }; - addressData[validatorObject.account.address].operatorsInUse[oidx].used = await operatorExpenseOf(validatorObject.account.address, oidx); - addressData[validatorObject.account.address].operatorsInUse[oidx].validatorsCount += 1; - addressData[validatorObject.account.address].operatorsInUse[oidx].index = await operatorIndexOf(oidx); - // - addressData[validatorObject.account.address].validatorOperators[validatorObject.validatorIdx].push(oidx); - }; - addressData[validatorObject.account.address].activeValidators++; - addressData[validatorObject.account.address].deposited += validatorObject.depositAmount; - globalData.validatorCount++; - - console.log(` | Register validator ${validatorObject.validatorIdx} > [ADDRESS] ${validatorObject.account.address} [ACTUAL_BLOCK] ${await utils.blockNumber()}`); - } -} -//@ts-ignore -export const updateValidator = async (account, validatorIdx, operatorIdxs, depositAmount) => { - await ssvToken.connect(account).approve(ssvNetwork.address, depositAmount); - await ssvNetwork.connect(account).updateValidator( - validatorsPub[validatorIdx], - operatorIdxs.map((oidx: number) => operatorsIds[oidx]), - operatorIdxs.map((oidx: number) => operatorsPub[oidx]), - operatorIdxs.map((oidx: number) => operatorsPub[oidx]), - `${depositAmount}`, - ); - await progressBlocks(1); - for (const oidx of addressData[account.address].validatorOperators[validatorIdx]) { - await updateOperatorBalance(oidx); - operatorData[oidx].validatorsCount -= 1; - addressData[account.address].operatorsInUse[oidx].used = await operatorExpenseOf(account.address, oidx); - addressData[account.address].operatorsInUse[oidx].validatorsCount -= 1; - addressData[account.address].operatorsInUse[oidx].index = await operatorIndexOf(oidx); - } - addressData[account.address].validatorOperators[validatorIdx] = []; - - for (const oidx of operatorIdxs) { - await updateOperatorBalance(oidx); - operatorData[oidx].validatorsCount += 1 - addressData[account.address].operatorsInUse[oidx] = addressData[account.address].operatorsInUse[oidx] || { validatorsCount: 0, index: 0, used: 0 }; - addressData[account.address].operatorsInUse[oidx].used = await operatorExpenseOf(account.address, oidx); - addressData[account.address].operatorsInUse[oidx].validatorsCount += 1; - addressData[account.address].operatorsInUse[oidx].index = await operatorIndexOf(oidx); - - addressData[account.address].validatorOperators[validatorIdx].push(oidx); - }; - addressData[account.address].deposited += depositAmount; - console.log(` | Update validator ${validatorIdx} > [ACTUAL_BLOCK] ${await utils.blockNumber()}`); -} -//@ts-ignore -export const removeValidator = async (account, validatorIdx) => { - await ssvNetwork.connect(account).removeValidator(validatorsPub[validatorIdx]); - await progressBlocks(1); - await updateNetworkEarnings(); - await updateAddressNetworkFee(account.address); - for (const oidx of addressData[account.address].validatorOperators[validatorIdx]) { - await updateOperatorBalance(oidx); - operatorData[oidx].validatorsCount -= 1; - addressData[account.address].operatorsInUse[oidx].used = await operatorExpenseOf(account.address, oidx); - addressData[account.address].operatorsInUse[oidx].validatorsCount -= 1; - addressData[account.address].operatorsInUse[oidx].index = await operatorIndexOf(oidx); - } - addressData[account.address].validatorOperators[validatorIdx] = []; - addressData[account.address].activeValidators--; - globalData.validatorCount--; - console.log(` | Remove validator ${validatorIdx} > [ACTUAL_BLOCK] ${await utils.blockNumber()}`); -} -//@ts-ignore -export const deposit = async (account, amount) => { - await ssvToken.connect(account).approve(ssvNetwork.address, `${amount}`); - await ssvNetwork.connect(account).deposit(account.address, `${amount}`); - addressData[account.address].deposited += amount; - console.log(` | Deposited [ADDRESS] ${account.address} | [VALUE]: ${amount}`); -} -//@ts-ignore -export const withdraw = async (account, amount) => { - await ssvNetwork.connect(account).withdraw(`${amount}`); - addressData[account.address].withdrawn += amount; -} -//@ts-ignore -export const liquidate = async (account) => { - await ssvToken.connect(account).liquidate(account.address); - console.log(` | Liquidated [ADDRESS] ${account.address}`); -} -//@ts-ignore -export const updateOperatorFee = async (account, idx, fee) => { - await ssvNetwork.connect(account).declareOperatorFee(operatorsIds[idx], fee); - await ssvNetwork.connect(account).executeOperatorFee(operatorsIds[idx]); - await progressBlocks(1); - // update balance - await updateOperatorBalance(idx); - // update index - operatorData[idx].index = +await operatorIndexOf(idx); - operatorData[idx].indexBlockNumber = await utils.blockNumber(); - operatorData[idx].fee = fee; - console.log(` | Update operator fee ${idx} > [VALUE] ${fee} [ACTUAL_BLOCK] ${await utils.blockNumber()}`); -} - -const getNetworkEarnings = async () => { - console.log("-> det", globalData.networkEarnings, (await utils.blockNumber()), globalData.networkEarningsBlockNumber, globalData.networkFee, globalData.validatorCount) - return globalData.networkEarnings + ((await utils.blockNumber()) - globalData.networkEarningsBlockNumber) * globalData.networkFee * globalData.validatorCount; -} - -export const getNetworkTreasury = async () => { - return (await getNetworkEarnings()) - globalData.withdrawnFromTreasury; -} -//@ts-ignore -const updateAddressNetworkFee = async (address) => { - addressData[address].networkFee = await addressNetworkFee(address); - addressData[address].networkFeeIndex = await globalNetworkFeeIndex(); -} - -const updateNetworkEarnings = async () => { - globalData.networkEarnings = await getNetworkEarnings(); - globalData.networkEarningsBlockNumber = await utils.blockNumber(); -} -//@ts-ignore -export const updateNetworkFee = async (fee) => { - await ssvNetwork.updateNetworkFee(fee); - await progressBlocks(1); - globalData.networkFeeIndex = await globalNetworkFeeIndex(); - globalData.networkFee = fee; - globalData.networkFeeIndexBlockNumber = await utils.blockNumber(); - console.log(` | Update network fee > [VALUE] ${fee} [ACTUAL_BLOCK] ${await utils.blockNumber()}`); -} -//@ts-ignore -export const updateOperatorBalance = async (idx) => { - operatorData[idx].balance = +await operatorEarningsOf(idx); - operatorData[idx].blockNumber = await utils.blockNumber(); -} -//@ts-ignore -// export const currentBurnRate = async (address) => { -// let operatorFees = 0 -// for (const operators of addressData[address].operatorsInUse) { -// operatorFees += operators.fees -// } - -// operatorData[idx].balance = +await operatorEarningsOf(idx); -// operatorData[idx].blockNumber = await utils.blockNumber(); -// } -//@ts-ignore -export const processTestCase = async (testFlow) => { - const baseBlockNumber = await utils.blockNumber(); - // await network.provider.send('evm_setAutomine', [false]); - for (const blockNumber of Object.keys(testFlow)) { - const targetBlock = +blockNumber - -baseBlockNumber; - const diffBlocks = targetBlock - (await utils.blockNumber()); - const { funcs, asserts } = testFlow[blockNumber]; - await progressBlocks(diffBlocks); - console.log(`[BLOCK] ${+await utils.blockNumber()} (${blockNumber})`); - // await network.provider.send('evm_setAutomine', [true]); - if (Array.isArray(asserts)) for (const assert of asserts) await assert(); - // await network.provider.send('evm_setAutomine', [false]); - if (Array.isArray(funcs)) { - for (const func of funcs) { - await func(); - await progressBlocks(1); - } - } - } - - await network.provider.send('evm_setAutomine', [true]); -} \ No newline at end of file diff --git a/test/helpers/utils.ts b/test/helpers/utils.ts index 66a90b98..f1bf131d 100644 --- a/test/helpers/utils.ts +++ b/test/helpers/utils.ts @@ -1,54 +1,58 @@ -declare var network: any; -//@ts-ignore -export const strToHex = str => `0x${Buffer.from(str, 'utf8').toString('hex')}`; -//@ts-ignore -export const asciiToHex = str => { - var arr1 = []; - for (var n = 0, l = str.length; n < l; n ++) { - var hex = Number(str.charCodeAt(n)).toString(16); +declare let network: any; +declare let ethers: any; + +export const strToHex = (str: any) => `0x${Buffer.from(str, 'utf8').toString('hex')}`; + +export const asciiToHex = (str: any) => { + const arr1 = []; + for (let n = 0, l = str.length; n < l; n ++) { + const hex = Number(str.charCodeAt(n)).toString(16); arr1.push(hex); } return arr1.join(''); -} -//@ts-ignore -export const progress = async function(time, blocks, func = null) { +}; + +export const blockNumber = async function() { + return await ethers.provider.getBlockNumber(); +}; + +export const progress = async function(time: any, blocks: any, func: any = null) { let snapshot; if (func) { - snapshot = await network.provider.send("evm_snapshot"); + snapshot = await network.provider.send('evm_snapshot'); } if (time) { - await network.provider.send("evm_increaseTime", [time]); + await network.provider.send('evm_increaseTime', [time]); if (!blocks) { - await network.provider.send("evm_mine", []); + await network.provider.send('evm_mine', []); } } for (let index = 0; index < blocks; ++index) { - await network.provider.send("evm_mine", []); + await network.provider.send('evm_mine', []); } if (func) { - //@ts-ignore await func(); - await network.provider.send("evm_revert", [snapshot]); + await network.provider.send('evm_revert', [snapshot]); } -} -//@ts-ignore -export const progressTime = async function(time, func = null) { +}; + +export const progressTime = async function(time: any, func: any = null) { return progress(time, 1, func); -} -//@ts-ignore -export const progressBlocks = async function(blocks, func = null) { +}; + +export const progressBlocks = async function(blocks: any, func = null) { return progress(0, blocks, func); -} -//@ts-ignore -export const snapshot = async function(func) { +}; + +export const snapshot = async function(func: any) { return progress(0, 0, func); -} +}; -export const mineOneBlock = async () => network.provider.send("evm_mine", []); +export const mineOneBlock = async () => network.provider.send('evm_mine', []); export const mineChunk = async (amount: number) => Promise.all( @@ -63,4 +67,4 @@ export const mine = async (amount: number) => { await mineChunk(MAX_PARALLEL_CALLS); } return mineChunk(amount % MAX_PARALLEL_CALLS); -}; \ No newline at end of file +}; diff --git a/test/liquidate/liquidate.ts b/test/liquidate/liquidate.ts new file mode 100644 index 00000000..30bd720a --- /dev/null +++ b/test/liquidate/liquidate.ts @@ -0,0 +1,72 @@ +import * as helpers from '../helpers/contract-helpers'; +import * as utils from '../helpers/utils'; + +import { expect } from 'chai'; +import { trackGas, GasGroup } from '../helpers/gas-usage'; + +let ssvNetworkContract: any, clusterResult1: any, minDepositAmount: any; + +describe('Liquidate Validator Tests', () => { + beforeEach(async () => { + // Initialize contract + ssvNetworkContract = (await helpers.initializeContract()).contract; + + // Register operators + await helpers.registerOperators(0, 12, helpers.CONFIG.minimalOperatorFee); + + minDepositAmount = (helpers.CONFIG.minimalBlocksBeforeLiquidation + 10) * helpers.CONFIG.minimalOperatorFee * 4; + + // Register validators + clusterResult1 = await helpers.registerValidators(4, 1, minDepositAmount, helpers.DataGenerator.cluster.new(), [GasGroup.REGISTER_VALIDATOR_NEW_STATE]); + }); + + it('Liquidatable', async () => { + await utils.progressBlocks(helpers.CONFIG.minimalBlocksBeforeLiquidation); + expect(await ssvNetworkContract.isLiquidatable(helpers.DB.owners[4].address, clusterResult1.clusterId)).to.equal(true); + }); + + it('Liquidate emits PodLiquidated event', async () => { + await utils.progressBlocks(helpers.CONFIG.minimalBlocksBeforeLiquidation); + await expect(ssvNetworkContract.liquidate(helpers.DB.owners[4].address, clusterResult1.clusterId)).to.emit(ssvNetworkContract, 'PodLiquidated'); + }); + + it('Liquidate validator with removed operator in a cluster', async () => { + await ssvNetworkContract.removeOperator(1); + await utils.progressBlocks(helpers.CONFIG.minimalBlocksBeforeLiquidation); // TMP IT FAILS WITH PROGRESS BLOCK, CRITICAL ERROR IN INDEX MATH LOGIC + await trackGas(ssvNetworkContract.liquidate(helpers.DB.owners[4].address, clusterResult1.clusterId), [GasGroup.LIQUIDATE_POD]); + }); + + it('Liquidate and register in disabled pod', async () => { + await utils.progressBlocks(helpers.CONFIG.minimalBlocksBeforeLiquidation); + await trackGas(ssvNetworkContract.liquidate(helpers.DB.owners[4].address, clusterResult1.clusterId), [GasGroup.LIQUIDATE_POD]); + await utils.progressBlocks(helpers.CONFIG.minimalBlocksBeforeLiquidation); + await helpers.DB.ssvToken.connect(helpers.DB.owners[4]).approve(ssvNetworkContract.address, minDepositAmount); + await trackGas(ssvNetworkContract.connect(helpers.DB.owners[4])['deposit(bytes32,uint256)'](clusterResult1.clusterId, minDepositAmount), [GasGroup.DEPOSIT]); + await trackGas(ssvNetworkContract.connect(helpers.DB.owners[4]).registerValidator(helpers.DataGenerator.publicKey(9), clusterResult1.clusterId, helpers.DataGenerator.shares(0)), [GasGroup.REGISTER_VALIDATOR_EXISTING_POD]); + }); + + it('Liquidate and register validator in disabled pod', async () => { + await utils.progressBlocks(helpers.CONFIG.minimalBlocksBeforeLiquidation); + await trackGas(ssvNetworkContract.liquidate(helpers.DB.owners[4].address, clusterResult1.clusterId), [GasGroup.LIQUIDATE_POD]); + await utils.progressBlocks(helpers.CONFIG.minimalBlocksBeforeLiquidation); + await helpers.DB.ssvToken.connect(helpers.DB.owners[4]).approve(ssvNetworkContract.address, minDepositAmount); + await trackGas(ssvNetworkContract.connect(helpers.DB.owners[4])['deposit(bytes32,uint256)'](clusterResult1.clusterId, minDepositAmount), [GasGroup.DEPOSIT]); + await trackGas(ssvNetworkContract.connect(helpers.DB.owners[4]).registerValidator(helpers.DataGenerator.publicKey(9), clusterResult1.clusterId, helpers.DataGenerator.shares(0)), [GasGroup.REGISTER_VALIDATOR_EXISTING_POD]); + }); + + it('Liquidate errors', async () => { + await expect(ssvNetworkContract.liquidate(helpers.DB.owners[4].address, clusterResult1.clusterId)).to.be.revertedWith('PodNotLiquidatable'); + }); + + it('Is liquidated', async () => { + await utils.progressBlocks(helpers.CONFIG.minimalBlocksBeforeLiquidation); + await ssvNetworkContract.liquidate(helpers.DB.owners[4].address, clusterResult1.clusterId); + expect(await ssvNetworkContract.isLiquidated(helpers.DB.owners[4].address, clusterResult1.clusterId)).to.equal(true); + }); + + it('Liquidate gas limits', async () => { + await utils.progressBlocks(helpers.CONFIG.minimalBlocksBeforeLiquidation); + + await trackGas(ssvNetworkContract.connect(helpers.DB.owners[1]).liquidate(helpers.DB.owners[4].address, clusterResult1.clusterId), [GasGroup.LIQUIDATE_POD]); + }); +}); diff --git a/test/liquidate/liquidation-threshold.ts b/test/liquidate/liquidation-threshold.ts new file mode 100644 index 00000000..18bcbd05 --- /dev/null +++ b/test/liquidate/liquidation-threshold.ts @@ -0,0 +1,28 @@ +import * as helpers from '../helpers/contract-helpers'; + +let ssvNetworkContract: any; + + +describe('Liquidation Threshold Tests', () => { + beforeEach(async () => { + const contractData = await helpers.initializeContract(); + ssvNetworkContract = contractData.contract; + }); + + it('Get liquidation threshold', async () => { + + }); + + it('Change liquidation threshold', async () => { + + }); + + it('Change liquidation threshold errors', async () => { + + }); + + it('Liquidation threshold gas limits', async () => { + + }); + +}); diff --git a/test/liquidate/reactivate.ts b/test/liquidate/reactivate.ts new file mode 100644 index 00000000..94beb4aa --- /dev/null +++ b/test/liquidate/reactivate.ts @@ -0,0 +1,58 @@ +import * as helpers from '../helpers/contract-helpers'; +import * as utils from '../helpers/utils'; + +import { expect } from 'chai'; +import { trackGas, GasGroup } from '../helpers/gas-usage'; + +let ssvNetworkContract: any, clusterResult1: any, minDepositAmount: any; + +describe('Reactivate Validator Tests', () => { + beforeEach(async () => { + // Initialize contract + ssvNetworkContract = (await helpers.initializeContract()).contract; + + // Register operators + await helpers.registerOperators(0, 12, helpers.CONFIG.minimalOperatorFee); + + minDepositAmount = (helpers.CONFIG.minimalBlocksBeforeLiquidation + 10) * helpers.CONFIG.minimalOperatorFee * 4; + + // Register validators + clusterResult1 = await helpers.registerValidators(4, 1, minDepositAmount, helpers.DataGenerator.cluster.new(), [GasGroup.REGISTER_VALIDATOR_NEW_STATE]); + }); + + it('Reactivate emits PodEnabled', async () => { + await utils.progressBlocks(helpers.CONFIG.minimalBlocksBeforeLiquidation); + await ssvNetworkContract.liquidate(helpers.DB.owners[4].address, clusterResult1.clusterId); + await helpers.DB.ssvToken.connect(helpers.DB.owners[4]).approve(ssvNetworkContract.address, minDepositAmount); + + await expect(ssvNetworkContract.connect(helpers.DB.owners[4]).reactivatePod(clusterResult1.clusterId, minDepositAmount)).to.emit(ssvNetworkContract, 'PodEnabled'); + }); + + it('Reactivate returns an error - PodAlreadyEnabled', async () => { + await expect(ssvNetworkContract.connect(helpers.DB.owners[4]).reactivatePod(clusterResult1.clusterId, minDepositAmount)).to.be.revertedWith('PodAlreadyEnabled'); + }); + + it('Reactivate returns an error - NegativeBalance', async () => { + await utils.progressBlocks(helpers.CONFIG.minimalBlocksBeforeLiquidation); + await ssvNetworkContract.liquidate(helpers.DB.owners[4].address, clusterResult1.clusterId); + await helpers.DB.ssvToken.connect(helpers.DB.owners[4]).approve(ssvNetworkContract.address, helpers.CONFIG.minimalOperatorFee * 4); + + await expect(ssvNetworkContract.connect(helpers.DB.owners[4]).reactivatePod(clusterResult1.clusterId, helpers.CONFIG.minimalOperatorFee * 4)).to.be.revertedWith('NegativeBalance'); + }); + + it('Reactivate with removed operator in a cluster', async () => { + await utils.progressBlocks(helpers.CONFIG.minimalBlocksBeforeLiquidation); + await ssvNetworkContract.liquidate(helpers.DB.owners[4].address, clusterResult1.clusterId); + await ssvNetworkContract.removeOperator(1); + await helpers.DB.ssvToken.connect(helpers.DB.owners[4]).approve(ssvNetworkContract.address, minDepositAmount); + await trackGas(ssvNetworkContract.connect(helpers.DB.owners[4]).reactivatePod(clusterResult1.clusterId, minDepositAmount), [GasGroup.REACTIVATE_POD]); + }); + + it('Reactivate gas limits', async () => { + await utils.progressBlocks(helpers.CONFIG.minimalBlocksBeforeLiquidation); + await ssvNetworkContract.liquidate(helpers.DB.owners[4].address, clusterResult1.clusterId); + await helpers.DB.ssvToken.connect(helpers.DB.owners[4]).approve(ssvNetworkContract.address, minDepositAmount); + + await trackGas(ssvNetworkContract.connect(helpers.DB.owners[4]).reactivatePod(clusterResult1.clusterId, minDepositAmount), [GasGroup.REACTIVATE_POD]); + }); +}); diff --git a/test/operators/fee.ts b/test/operators/fee.ts new file mode 100644 index 00000000..031e8de3 --- /dev/null +++ b/test/operators/fee.ts @@ -0,0 +1,180 @@ +import * as helpers from '../helpers/contract-helpers'; + +import { expect } from 'chai'; +import { progressTime } from '../helpers/utils'; +import { trackGas, GasGroup } from '../helpers/gas-usage'; + +let ssvNetworkContract: any, initialFee: any; + +describe('Operator Fee Tests', () => { + beforeEach(async () => { + ssvNetworkContract = (await helpers.initializeContract()).contract; + initialFee = helpers.CONFIG.minimalOperatorFee * 10; + await helpers.registerOperators(2, 1, initialFee); + }); + + it('Declare fee success emits OperatorFeeDeclaration event', async () => { + await expect(ssvNetworkContract.connect(helpers.DB.owners[2]).declareOperatorFee(1, initialFee + initialFee / 10)) + .to.emit(ssvNetworkContract, 'OperatorFeeDeclaration'); + }); + + it('Declare fee success as contract owner', async () => { + await trackGas(ssvNetworkContract.declareOperatorFee(1, initialFee + initialFee / 10), [GasGroup.REGISTER_OPERATOR]); + }); + + it('Declare fee < than initial more than 10% success', async () => { + await trackGas(ssvNetworkContract.declareOperatorFee(1, initialFee - initialFee / 20), [GasGroup.REGISTER_OPERATOR]); + }); + + it('Declare fee fails no owner', async () => { + await expect(ssvNetworkContract.connect(helpers.DB.owners[1]).declareOperatorFee(1, initialFee + initialFee / 10 )) + .to.be.revertedWith('CallerNotOwner'); + }); + + it('Declare fee fails no owner', async () => { + await expect(ssvNetworkContract.connect(helpers.DB.owners[1]).declareOperatorFee(1, initialFee + initialFee / 10 )) + .to.be.revertedWith('CallerNotOwner'); + }); + + it('Declare fee fails no operator with public key', async () => { + await expect(ssvNetworkContract.connect(helpers.DB.owners[1]).declareOperatorFee(12, initialFee + initialFee / 10 )) + .to.be.revertedWith('OperatorWithPublicKeyNotExist'); + }); + + it('Declare fee fails fee too low', async () => { + await expect(ssvNetworkContract.connect(helpers.DB.owners[2]).declareOperatorFee(1, helpers.CONFIG.minimalOperatorFee - 1)) + .to.be.revertedWith('FeeTooLow'); + }); + + it('Declare fee fails fee exceeds increase limit', async () => { + await expect(ssvNetworkContract.connect(helpers.DB.owners[2]).declareOperatorFee(1, initialFee + initialFee / 5)) + .to.be.revertedWith('FeeExceedsIncreaseLimit'); + }); + + it('Cancel declared fee success emits DeclaredOperatorFeeCancelation event', async () => { + await ssvNetworkContract.declareOperatorFee(1, initialFee + initialFee / 10); + + await expect(ssvNetworkContract.connect(helpers.DB.owners[2]).cancelDeclaredOperatorFee(1)) + .to.emit(ssvNetworkContract, 'DeclaredOperatorFeeCancelation'); + }); + + it('Cancel declared fee success as contract owner', async () => { + await trackGas(ssvNetworkContract.declareOperatorFee(1, initialFee + initialFee / 10), [GasGroup.REGISTER_OPERATOR]); + await trackGas(ssvNetworkContract.cancelDeclaredOperatorFee(1), [GasGroup.REGISTER_OPERATOR]); + }); + + it('Cancel declared fee fails no pending request', async () => { + await expect(ssvNetworkContract.cancelDeclaredOperatorFee(1)) + .to.be.revertedWith('NoPendingFeeChangeRequest'); + }); + + it('Cancel declared fee fails no owner', async () => { + await trackGas(ssvNetworkContract.declareOperatorFee(1, initialFee + initialFee / 10), [GasGroup.REGISTER_OPERATOR]); + + await expect(ssvNetworkContract.connect(helpers.DB.owners[1]).cancelDeclaredOperatorFee(1)) + .to.be.revertedWith('CallerNotOwner'); + }); + + it('Execute declared fee success emits OperatorFeeExecution event', async () => { + await ssvNetworkContract.declareOperatorFee(1, initialFee + initialFee / 10); + await progressTime(helpers.CONFIG.declareOperatorFeePeriod); + await expect(ssvNetworkContract.connect(helpers.DB.owners[2]).executeOperatorFee(1)) + .to.emit(ssvNetworkContract, 'OperatorFeeExecution'); + }); + + it('Execute declared fee success as contract owner', async () => { + await trackGas(ssvNetworkContract.declareOperatorFee(1, initialFee + initialFee / 10), [GasGroup.REGISTER_OPERATOR]); + await progressTime(helpers.CONFIG.declareOperatorFeePeriod); + await trackGas(ssvNetworkContract.executeOperatorFee(1), [GasGroup.REGISTER_OPERATOR]); + }); + + it('Execute declared fee fee fails no owner', async () => { + await trackGas(ssvNetworkContract.declareOperatorFee(1, initialFee + initialFee / 10), [GasGroup.REGISTER_OPERATOR]); + + await expect(ssvNetworkContract.connect(helpers.DB.owners[1]).executeOperatorFee(1)) + .to.be.revertedWith('CallerNotOwner'); + }); + + it('Execute declared fee fails no pending request', async () => { + await expect(ssvNetworkContract.executeOperatorFee(1)) + .to.be.revertedWith('NoPendingFeeChangeRequest'); + }); + + it('Execute declared fee fails too earlier', async () => { + await trackGas(ssvNetworkContract.declareOperatorFee(1, initialFee + initialFee / 10), [GasGroup.REGISTER_OPERATOR]); + await progressTime(helpers.CONFIG.declareOperatorFeePeriod - 10); + await expect(ssvNetworkContract.executeOperatorFee(1)) + .to.be.revertedWith('ApprovalNotWithinTimeframe'); + }); + + it('Execute declared fee fails too late', async () => { + await trackGas(ssvNetworkContract.declareOperatorFee(1, initialFee + initialFee / 10), [GasGroup.REGISTER_OPERATOR]); + await progressTime(helpers.CONFIG.declareOperatorFeePeriod + helpers.CONFIG.executeOperatorFeePeriod + 1); + await expect(ssvNetworkContract.executeOperatorFee(1)) + .to.be.revertedWith('ApprovalNotWithinTimeframe'); + }); + + it('DAO: update fee increase limit success emits OperatorFeeIncreaseLimitUpdate event', async () => { + await expect(ssvNetworkContract.updateOperatorFeeIncreaseLimit(1000)) + .to.emit(ssvNetworkContract, 'OperatorFeeIncreaseLimitUpdate'); + }); + + it('DAO: update fee increase limit fails no owner', async () => { + await expect(ssvNetworkContract.connect(helpers.DB.owners[1]).updateOperatorFeeIncreaseLimit(1000)) + .to.be.revertedWith('caller is not the owner'); + }); + + it('DAO: update declare fee period success emits DeclareOperatorFeePeriodUpdate event', async () => { + await expect(ssvNetworkContract.updateDeclareOperatorFeePeriod(1200)) + .to.emit(ssvNetworkContract, 'DeclareOperatorFeePeriodUpdate'); + }); + + it('DAO: update declare fee period fails no owner', async () => { + await expect(ssvNetworkContract.connect(helpers.DB.owners[1]).updateDeclareOperatorFeePeriod(1200)) + .to.be.revertedWith('caller is not the owner'); + }); + + it('DAO: update execute fee period success emits ExecuteOperatorFeePeriodUpdate event', async () => { + await expect(ssvNetworkContract.updateExecuteOperatorFeePeriod(1200)) + .to.emit(ssvNetworkContract, 'ExecuteOperatorFeePeriodUpdate'); + }); + + it('DAO: update execute fee period fails no owner', async () => { + await expect(ssvNetworkContract.connect(helpers.DB.owners[1]).updateExecuteOperatorFeePeriod(1200)) + .to.be.revertedWith('caller is not the owner'); + }); + + it('DAO: get fee increase limit equal init value', async () => { + expect(await ssvNetworkContract.getOperatorFeeIncreaseLimit()).to.equal(helpers.CONFIG.operatorMaxFeeIncrease); + }); + + it('DAO: get declared fee', async () => { + const newFee = initialFee + initialFee / 10; + await trackGas(ssvNetworkContract.declareOperatorFee(1, newFee), [GasGroup.REGISTER_OPERATOR]); + const [ feeDeclaredInContract ] = await ssvNetworkContract.getOperatorDeclaredFee(1); + expect(feeDeclaredInContract).to.equal(newFee); + }); + + it('DAO: get declared fee fails no pending request', async () => { + await trackGas(ssvNetworkContract.declareOperatorFee(1, initialFee + initialFee / 10), [GasGroup.REGISTER_OPERATOR]); + await expect(ssvNetworkContract.getOperatorDeclaredFee(2)) + .to.be.revertedWith('NoPendingFeeChangeRequest'); + }); + + it('DAO: get execute fee period equal init value', async () => { + expect(await ssvNetworkContract.getExecuteOperatorFeePeriod()).to.equal(helpers.CONFIG.executeOperatorFeePeriod); + }); + + it('DAO: get declared fee period equal init value', async () => { + expect(await ssvNetworkContract.getDeclaredOperatorFeePeriod()).to.equal(helpers.CONFIG.declareOperatorFeePeriod); + }); + + it('Get fee', async () => { + expect(await ssvNetworkContract.getOperatorFee(1)).to.equal(initialFee); + }); + + it('Get fee returns an error - OperatorNotFound', async () => { + await expect(ssvNetworkContract.getOperatorFee(12)).to.be.revertedWith('OperatorNotFound'); + }); + +}); diff --git a/test/operators/register.ts b/test/operators/register.ts new file mode 100644 index 00000000..99885059 --- /dev/null +++ b/test/operators/register.ts @@ -0,0 +1,35 @@ +import * as helpers from '../helpers/contract-helpers'; + +import { expect } from 'chai'; +import { trackGas, GasGroup } from '../helpers/gas-usage'; + +let ssvNetworkContract: any; + +describe('Register Operator Tests', () => { + beforeEach(async () => { + ssvNetworkContract = (await helpers.initializeContract()).contract; + }); + + it('Register operator', async () => { + const publicKey = helpers.DataGenerator.publicKey(0); + await expect(ssvNetworkContract.connect(helpers.DB.owners[1]).registerOperator( + publicKey, + helpers.CONFIG.minimalOperatorFee, + )).to.emit(ssvNetworkContract, 'OperatorAdded').withArgs(1, helpers.DB.owners[1].address, publicKey, helpers.CONFIG.minimalOperatorFee); + }); + + it('Fails to register with low fee', async () => { + await expect(ssvNetworkContract.registerOperator( + helpers.DataGenerator.publicKey(0), + '10' + )).to.be.revertedWith('FeeTooLow'); + }); + + it('Register operator gas limits', async () => { + await trackGas(ssvNetworkContract.connect(helpers.DB.owners[1]).registerOperator( + helpers.DataGenerator.publicKey(0), + helpers.CONFIG.minimalOperatorFee, + ), [GasGroup.REGISTER_OPERATOR]); + }); + +}); diff --git a/test/operators/remove.ts b/test/operators/remove.ts new file mode 100644 index 00000000..3e63e44d --- /dev/null +++ b/test/operators/remove.ts @@ -0,0 +1,42 @@ +import * as helpers from '../helpers/contract-helpers'; +import * as utils from '../helpers/utils'; + +import { expect } from 'chai'; +import { trackGas, GasGroup } from '../helpers/gas-usage'; + +let ssvNetworkContract: any; + +describe('Remove Operator Tests', () => { + beforeEach(async () => { + ssvNetworkContract = (await helpers.initializeContract()).contract; + }); + + it('Remove operator emits OperatorRemoved event', async () => { + await helpers.registerOperators(0, 1, helpers.CONFIG.minimalOperatorFee); + await expect(ssvNetworkContract.connect(helpers.DB.owners[0]).removeOperator(1)) + .to.emit(ssvNetworkContract, 'OperatorRemoved').withArgs(1); + }); + + it('Fails to remove operator with no owner', async () => { + await helpers.registerOperators(0, 1, helpers.CONFIG.minimalOperatorFee); + await expect(ssvNetworkContract.connect(helpers.DB.owners[1]).removeOperator(1)) + .to.be.revertedWith('CallerNotOwner'); + }); + + it('Remove operator gas limits', async () => { + await helpers.registerOperators(0, 1, helpers.CONFIG.minimalOperatorFee); + await trackGas(ssvNetworkContract.removeOperator(1), [GasGroup.REMOVE_OPERATOR]); + }); + + it('Remove operator with withdraw emits OperatorFundsWithdrawal event', async () => { + await helpers.registerOperators(0, 4, helpers.CONFIG.minimalOperatorFee); + await helpers.registerValidators(4, 1, `${helpers.CONFIG.minimalBlocksBeforeLiquidation * helpers.CONFIG.minimalOperatorFee * 4}`, [1,2,3,4], [GasGroup.REGISTER_VALIDATOR_NEW_STATE]); + await expect(ssvNetworkContract.removeOperator(1)).to.emit(ssvNetworkContract, 'OperatorFundsWithdrawal'); + }); + + it('Remove operator with withdraw gas limits', async () => { + await helpers.registerOperators(0, 4, helpers.CONFIG.minimalOperatorFee); + await helpers.registerValidators(4, 1, `${helpers.CONFIG.minimalBlocksBeforeLiquidation * helpers.CONFIG.minimalOperatorFee * 4}`, [1,2,3,4], [GasGroup.REGISTER_VALIDATOR_NEW_STATE]); + await trackGas(ssvNetworkContract.removeOperator(1), [GasGroup.REMOVE_OPERATOR_WITH_WITHDRAW]); + }); +}); diff --git a/test/operators/update.ts b/test/operators/update.ts new file mode 100644 index 00000000..f71667dd --- /dev/null +++ b/test/operators/update.ts @@ -0,0 +1,23 @@ +import * as helpers from '../helpers/contract-helpers'; + +let ssvNetworkContract: any; + +describe('Update Operator Tests', () => { + beforeEach(async () => { + const contractData = await helpers.initializeContract(); + ssvNetworkContract = contractData.contract; + }); + + it('Update operator', async () => { + + }); + + it('Update operator errors', async () => { + + }); + + it('Update operator gas limits', async () => { + + }); + +}); diff --git a/test/sanity/balances.ts b/test/sanity/balances.ts new file mode 100644 index 00000000..14ce6b7d --- /dev/null +++ b/test/sanity/balances.ts @@ -0,0 +1,92 @@ +import * as helpers from '../helpers/contract-helpers'; +import * as utils from '../helpers/utils'; + +import { expect } from 'chai'; +import { GasGroup } from '../helpers/gas-usage'; + +let ssvNetworkContract: any, clusterResult1: any, minDepositAmount: any, burnPerBlock: any, networkFee: any; + +describe('Balance Tests', () => { + beforeEach(async () => { + // Initialize contract + ssvNetworkContract = (await helpers.initializeContract()).contract; + + // Register operators + await helpers.registerOperators(0, 12, helpers.CONFIG.minimalOperatorFee); + + networkFee = helpers.CONFIG.minimalOperatorFee; + burnPerBlock = helpers.CONFIG.minimalOperatorFee * 4 + networkFee; + minDepositAmount = helpers.CONFIG.minimalBlocksBeforeLiquidation * burnPerBlock; + + // Deposit into accounts + // await helpers.deposit([4], [minDepositAmount]); + + // Set network fee + await ssvNetworkContract.updateNetworkFee(networkFee); + + // Register validators + clusterResult1 = await helpers.registerValidators(4, 1, minDepositAmount, helpers.DataGenerator.cluster.new(), [GasGroup.REGISTER_VALIDATOR_NEW_STATE]); + }); + + it('Check pod balance in three blocks, one after the other', async () => { + await utils.progressBlocks(1); + expect(await ssvNetworkContract.podBalanceOf(helpers.DB.owners[4].address, clusterResult1.clusterId)).to.equal(minDepositAmount - burnPerBlock); + await utils.progressBlocks(1); + expect(await ssvNetworkContract.podBalanceOf(helpers.DB.owners[4].address, clusterResult1.clusterId)).to.equal(minDepositAmount - burnPerBlock * 2); + await utils.progressBlocks(1); + expect(await ssvNetworkContract.podBalanceOf(helpers.DB.owners[4].address, clusterResult1.clusterId)).to.equal(minDepositAmount - burnPerBlock * 3); + }); + + it('Check pod balance in two and twelve blocks, after network fee updates', async () => { + await utils.progressBlocks(1); + expect(await ssvNetworkContract.podBalanceOf(helpers.DB.owners[4].address, clusterResult1.clusterId)).to.equal(minDepositAmount - burnPerBlock); + const newBurnPerBlock = burnPerBlock + networkFee; + await ssvNetworkContract.updateNetworkFee(networkFee * 2); + await utils.progressBlocks(1); + expect(await ssvNetworkContract.podBalanceOf(helpers.DB.owners[4].address, clusterResult1.clusterId)).to.equal(minDepositAmount - burnPerBlock * 2 - newBurnPerBlock); + await utils.progressBlocks(1); + expect(await ssvNetworkContract.podBalanceOf(helpers.DB.owners[4].address, clusterResult1.clusterId)).to.equal(minDepositAmount - burnPerBlock * 2 - newBurnPerBlock * 2); + await utils.progressBlocks(10); + expect(await ssvNetworkContract.podBalanceOf(helpers.DB.owners[4].address, clusterResult1.clusterId)).to.equal(minDepositAmount - burnPerBlock * 2 - newBurnPerBlock * 12); + }); + + it('Check DAO earnings in three blocks, one after the other', async () => { + await utils.progressBlocks(1); + expect(await ssvNetworkContract.getNetworkBalance()).to.equal(networkFee); + await utils.progressBlocks(1); + expect(await ssvNetworkContract.getNetworkBalance()).to.equal(networkFee * 2); + await utils.progressBlocks(1); + expect(await ssvNetworkContract.getNetworkBalance()).to.equal(networkFee * 3); + }); + + it('Check DAO earnings in two and twelve blocks, after network fee updates', async () => { + await utils.progressBlocks(1); + expect(await ssvNetworkContract.getNetworkBalance()).to.equal(networkFee); + const newNetworkFee = networkFee * 2; + await ssvNetworkContract.updateNetworkFee(newNetworkFee); + await utils.progressBlocks(1); + expect(await ssvNetworkContract.getNetworkBalance()).to.equal(networkFee * 2 + newNetworkFee); + await utils.progressBlocks(1); + expect(await ssvNetworkContract.getNetworkBalance()).to.equal(networkFee * 2 + newNetworkFee * 2); + await utils.progressBlocks(10); + expect(await ssvNetworkContract.getNetworkBalance()).to.equal(networkFee * 2 + newNetworkFee * 12); + }); + + it('Check operators earnings in three blocks, one after the other', async () => { + await utils.progressBlocks(1); + expect((await ssvNetworkContract.operatorSnapshot(1)).balance).to.equal(helpers.CONFIG.minimalOperatorFee); + expect((await ssvNetworkContract.operatorSnapshot(2)).balance).to.equal(helpers.CONFIG.minimalOperatorFee); + expect((await ssvNetworkContract.operatorSnapshot(3)).balance).to.equal(helpers.CONFIG.minimalOperatorFee); + expect((await ssvNetworkContract.operatorSnapshot(4)).balance).to.equal(helpers.CONFIG.minimalOperatorFee); + await utils.progressBlocks(1); + expect((await ssvNetworkContract.operatorSnapshot(1)).balance).to.equal(helpers.CONFIG.minimalOperatorFee * 2); + expect((await ssvNetworkContract.operatorSnapshot(2)).balance).to.equal(helpers.CONFIG.minimalOperatorFee * 2); + expect((await ssvNetworkContract.operatorSnapshot(3)).balance).to.equal(helpers.CONFIG.minimalOperatorFee * 2); + expect((await ssvNetworkContract.operatorSnapshot(4)).balance).to.equal(helpers.CONFIG.minimalOperatorFee * 2); + await utils.progressBlocks(1); + expect((await ssvNetworkContract.operatorSnapshot(1)).balance).to.equal(helpers.CONFIG.minimalOperatorFee * 3); + expect((await ssvNetworkContract.operatorSnapshot(2)).balance).to.equal(helpers.CONFIG.minimalOperatorFee * 3); + expect((await ssvNetworkContract.operatorSnapshot(3)).balance).to.equal(helpers.CONFIG.minimalOperatorFee * 3); + expect((await ssvNetworkContract.operatorSnapshot(4)).balance).to.equal(helpers.CONFIG.minimalOperatorFee * 3); + }); +}); diff --git a/test/sanity/stress.ts b/test/sanity/stress.ts new file mode 100644 index 00000000..b76e3999 --- /dev/null +++ b/test/sanity/stress.ts @@ -0,0 +1,55 @@ +/*declare const ethers: any; + +import * as helpers from '../helpers/contract-helpers'; + +import { expect } from 'chai'; + +const numberOfOperators = 1000; +const operatorFee = 1; + +let registryContract: any, operatorIDs: any, shares: any; +const validatorData: any = []; +*/ + +describe('Stress Tests', () => { + // beforeEach(async () => { + // const contractData = await helpers.initializeContract(numberOfOperators, operatorFee); + // registryContract = contractData.contract; + // operatorIDs = contractData.operatorIDs; + // shares = contractData.shares; + + // // Register 1000 validators + // validatorData = await helpers.registerValidators(1000, '10000', numberOfOperators, registryContract); + // }); + + // it('Update 1000 operators', async () => { + // for (let i = 0; i < operatorIDs.length; i++) { + // await registryContract.updateOperatorFee(operatorIDs[i], 10); + // } + // }); + + // it('Transfer 1000 validators', async () => { + // for (let i = 1000; i < (validatorData.length + 1000); i++) { + // const randomOperator = Math.floor(Math.random() * (numberOfOperators - 4)); + // await registryContract.transferValidator( + // validatorData[i-1000].publicKey, + // [randomOperator, randomOperator + 1, randomOperator + 2, randomOperator + 3], + // shares[1], + // '10001' + // ); + // } + // }); + + // it('Remove 1000 operators', async () => { + // for (let i = 0; i < operatorIDs.length; i++) { + // await registryContract.removeOperator(operatorIDs[i]); + // } + // }); + + // it('Remove 1000 validators', async () => { + // for (let i = 0; i < validatorData.length; i++) { + // await registryContract.removeValidator(validatorData[i].publicKey); + // } + // }); + +}); diff --git a/test/unit/burn-rate.ts b/test/unit/burn-rate.ts deleted file mode 100644 index 38f3d0ab..00000000 --- a/test/unit/burn-rate.ts +++ /dev/null @@ -1,138 +0,0 @@ -// Burn Rate Unit Tests - -// Declare all imports -import { ethers, upgrades } from 'hardhat' -import * as chai from 'chai' -import chaiAsPromised from 'chai-as-promised' -beforeEach(() => { - chai.should() - chai.use(chaiAsPromised) -}) -const { expect } = chai - -// Define global variables -const minimumBlocksBeforeLiquidation = 7000 -const operatorMaxFeeIncrease = 99999999999999 -const operatorPublicKeyPrefix = '12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345' -const validatorPublicKeyPrefix = '98765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765' -let ssvToken: any, ssvRegistry: any, ssvNetwork: any -let owner: any, account1: any, account2: any, account3: any, account4: any, account5: any -const operatorsPub = Array.from(Array(10).keys()).map(k => `0x${operatorPublicKeyPrefix}${k}`) -const validatorsPub = Array.from(Array(10).keys()).map(k => `0x${validatorPublicKeyPrefix}${k}`) -const operatorsIds = Array.from(Array(10).keys()).map(k => k + 1) -const tokens = '90000000000000000' -const allowance = '99999999999999999999' -const operatorFee = 10010000000 -const DAY = 86400 -const setOperatorFeePeriod = 0 -const approveOperatorFeePeriod = DAY - -describe('Burn Rate', function () { - beforeEach(async function () { - // Create accounts - [owner, account1, account2, account3, account4, account5] = await ethers.getSigners() - - // Deploy Contracts - const ssvTokenFactory = await ethers.getContractFactory('SSVTokenMock') - const ssvRegistryFactory = await ethers.getContractFactory('SSVRegistry') - const ssvNetworkFactory = await ethers.getContractFactory('SSVNetwork') - ssvToken = await ssvTokenFactory.deploy() - ssvRegistry = await upgrades.deployProxy(ssvRegistryFactory, { initializer: false }) - await ssvToken.deployed() - await ssvRegistry.deployed() - ssvNetwork = await upgrades.deployProxy(ssvNetworkFactory, [ssvRegistry.address, ssvToken.address, minimumBlocksBeforeLiquidation, operatorMaxFeeIncrease, setOperatorFeePeriod, approveOperatorFeePeriod]) - await ssvNetwork.deployed() - - // Mint tokens - await ssvToken.mint(account1.address, '10000000000000000000') - await ssvToken.mint(account2.address, '10000000000000000000') - - // Register operators - await ssvNetwork.connect(account2).registerOperator('testOperator 0', operatorsPub[0], operatorFee) - await ssvNetwork.connect(account2).registerOperator('testOperator 1', operatorsPub[1], operatorFee) - await ssvNetwork.connect(account3).registerOperator('testOperator 2', operatorsPub[2], operatorFee) - await ssvNetwork.connect(account3).registerOperator('testOperator 3', operatorsPub[3], operatorFee) - }) - - it('Check burn rate', async function () { - await ssvNetwork.connect(owner).updateNetworkFee(10020000000) - // Register validator to non owned operators - await ssvToken.connect(account1).approve(ssvNetwork.address, allowance) - await ssvToken.connect(account2).approve(ssvNetwork.address, allowance) - await ssvNetwork.connect(account1).registerValidator(validatorsPub[0], operatorsIds.slice(0, 4), operatorsPub.slice(0, 4), operatorsPub.slice(0, 4), tokens) - let currentNetworkFee = await ssvNetwork.getNetworkFee() - expect(await ssvNetwork.getAddressBurnRate(account1.address)).to.equal(+currentNetworkFee + (operatorFee * 4)) - - // Register another validator to same non owned operators - await ssvNetwork.connect(account1).registerValidator(validatorsPub[1], operatorsIds.slice(0, 4), operatorsPub.slice(0, 4), operatorsPub.slice(0, 4), tokens) - expect(await ssvNetwork.getAddressBurnRate(account1.address)).to.equal((+currentNetworkFee * 2) + ((operatorFee * 4) * 2)) - - // Register an operator - await ssvNetwork.connect(account1).registerOperator('testOperator 4', operatorsPub[4], operatorFee * 4) - expect(await ssvNetwork.getAddressBurnRate(account1.address)).to.equal((+currentNetworkFee * 2) + ((operatorFee * 4) * 2)) - - // Register a validator from another account to my operator - await ssvNetwork.connect(account2).registerValidator(validatorsPub[2], operatorsIds.slice(1, 5), operatorsPub.slice(1, 5), operatorsPub.slice(1, 5), tokens) - expect(await ssvNetwork.getAddressBurnRate(account1.address)).to.equal((+currentNetworkFee * 2) + (operatorFee * 4)) - - // Register a validator 3 operators i dont own and 1 i do own - await ssvNetwork.connect(account1).registerValidator(validatorsPub[3], operatorsIds.slice(1, 5), operatorsPub.slice(1, 5), operatorsPub.slice(1, 5), tokens) - expect(await ssvNetwork.getAddressBurnRate(account1.address)).to.equal((+currentNetworkFee * 3) + (operatorFee * 7)) - - // Register another operator - await ssvNetwork.connect(account1).registerOperator('testOperator 5', operatorsPub[5], operatorFee) - expect(await ssvNetwork.getAddressBurnRate(account1.address)).to.equal((+currentNetworkFee * 3) + (operatorFee * 7)) - - // Register a validator from another account to both of my operators - await ssvNetwork.connect(account2).registerValidator(validatorsPub[4], operatorsIds.slice(2, 6), operatorsPub.slice(2, 6), operatorsPub.slice(2, 6), tokens) - expect(await ssvNetwork.getAddressBurnRate(account1.address)).to.equal((+currentNetworkFee * 3) + (operatorFee * 2)) - - // Remove an operator i own - await ssvNetwork.connect(account1).removeOperator(operatorsIds[4]) - expect(await ssvNetwork.getAddressBurnRate(account1.address)).to.equal((+currentNetworkFee * 3) + (operatorFee * 10)) - - // Update the network fee - await ssvNetwork.connect(owner).updateNetworkFee(9000000000) - currentNetworkFee = await ssvNetwork.getNetworkFee() - expect(await ssvNetwork.getAddressBurnRate(account1.address)).to.equal((+currentNetworkFee * 3) + (operatorFee * 10)) - - // Remove operator i down own - await ssvNetwork.connect(account2).removeOperator(operatorsIds[1]) - expect(await ssvNetwork.getAddressBurnRate(account1.address)).to.equal((+currentNetworkFee * 3) + (operatorFee * 7)) - - // Remove a validator i own - await ssvNetwork.connect(account1).removeValidator(validatorsPub[1]) - expect(await ssvNetwork.getAddressBurnRate(account1.address)).to.equal((+currentNetworkFee * 2) + (operatorFee * 4)) - - // Remove a validator i dont own - await ssvNetwork.connect(account2).removeValidator(validatorsPub[4]) - expect(await ssvNetwork.getAddressBurnRate(account1.address)).to.equal((+currentNetworkFee * 2) + (operatorFee * 5)) - - // Operator i dont own change fee - await ssvNetwork.connect(account2).declareOperatorFee(operatorsIds[0], operatorFee * 2) - expect(await ssvNetwork.connect(account2).executeOperatorFee(operatorsIds[0])) - expect(await ssvNetwork.getAddressBurnRate(account1.address)).to.equal((+currentNetworkFee * 2) + (operatorFee * 6)) - - // Operator i do own change fee - await ssvNetwork.connect(account1).declareOperatorFee(operatorsIds[5], operatorFee * 2) - expect(await ssvNetwork.connect(account1).executeOperatorFee(operatorsIds[5])) - expect(await ssvNetwork.getAddressBurnRate(account1.address)).to.equal((+currentNetworkFee * 2) + (operatorFee * 6)) - - // Register another 3 operators - await ssvNetwork.connect(account1).registerOperator('testOperator 6', operatorsPub[6], operatorFee) - await ssvNetwork.connect(account1).registerOperator('testOperator 7', operatorsPub[7], operatorFee) - await ssvNetwork.connect(account1).registerOperator('testOperator 8', operatorsPub[8], operatorFee) - expect(await ssvNetwork.getAddressBurnRate(account1.address)).to.equal((+currentNetworkFee * 2) + (operatorFee * 6)) - - // Update validator i dont own - await ssvNetwork.connect(account2).updateValidator(validatorsPub[2], operatorsIds.slice(5, 9), operatorsPub.slice(5, 9), operatorsPub.slice(5, 9), tokens) - expect(await ssvNetwork.getAddressBurnRate(account1.address)).to.equal((+currentNetworkFee * 2) + (operatorFee * 1)) - - // Update validator i do own - await ssvNetwork.connect(account1).updateValidator(validatorsPub[3], operatorsIds.slice(5, 9), operatorsPub.slice(5, 9), operatorsPub.slice(5, 9), tokens) - expect(await ssvNetwork.getAddressBurnRate(account1.address)).to.equal((+currentNetworkFee * 2) - (operatorFee * 1)) - - // other account gets liquidated that has validators to my own operators - - }) -}) diff --git a/test/unit/liquidation.ts b/test/unit/liquidation.ts deleted file mode 100644 index 6dc9d851..00000000 --- a/test/unit/liquidation.ts +++ /dev/null @@ -1,207 +0,0 @@ -// Liquidation Unit Tests - -// Declare all imports -import { ethers, upgrades } from 'hardhat' -import * as chai from 'chai' -import chaiAsPromised from 'chai-as-promised' -import { progressBlocks } from '../helpers/utils' -beforeEach(() => { - chai.should() - chai.use(chaiAsPromised) -}) -const { expect } = chai -const { BigNumber } = ethers; - -// Define global variables -const minimumBlocksBeforeLiquidation = 7000 -const operatorMaxFeeIncrease = 10 -const operatorPublicKeyPrefix = '12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345' -const validatorPublicKeyPrefix = '98765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765' -let ssvToken: any, ssvRegistry: any, ssvNetwork: any -let owner: any, account1: any, account2: any, account3: any, account4: any, account5: any -const operatorsPub = Array.from(Array(10).keys()).map(k => `0x${operatorPublicKeyPrefix}${k}`) -const validatorsPub = Array.from(Array(10).keys()).map(k => `0x${validatorPublicKeyPrefix}${k}`) -const operatorsIds = Array.from(Array(10).keys()).map(k => k + 1) -const tokens = '10000000000000000' -const DAY = 86400 -const setOperatorFeePeriod = 0 -const approveOperatorFeePeriod = DAY - -describe('Liquidation', function () { - beforeEach(async function () { - // Create accounts - [owner, account1, account2, account3, account4, account5] = await ethers.getSigners() - - // Deploy Contracts - const ssvTokenFactory = await ethers.getContractFactory('SSVTokenMock') - const ssvRegistryFactory = await ethers.getContractFactory('SSVRegistry') - const ssvNetworkFactory = await ethers.getContractFactory('SSVNetwork') - ssvToken = await ssvTokenFactory.deploy() - ssvRegistry = await upgrades.deployProxy(ssvRegistryFactory, { initializer: false }) - await ssvToken.deployed() - await ssvRegistry.deployed() - ssvNetwork = await upgrades.deployProxy(ssvNetworkFactory, [ssvRegistry.address, ssvToken.address, minimumBlocksBeforeLiquidation, operatorMaxFeeIncrease, setOperatorFeePeriod, approveOperatorFeePeriod]) - await ssvNetwork.deployed() - - // Mint tokens - await ssvToken.mint(account1.address, '2000000000000000000') - - // Register operators - await ssvNetwork.connect(account2).registerOperator('testOperator 0', operatorsPub[0], 100000000000) - await ssvNetwork.connect(account2).registerOperator('testOperator 1', operatorsPub[1], 200000000000) - await ssvNetwork.connect(account3).registerOperator('testOperator 2', operatorsPub[2], 300000000000) - await ssvNetwork.connect(account3).registerOperator('testOperator 3', operatorsPub[3], 400000000000) - await ssvNetwork.connect(account3).registerOperator('testOperator 4', operatorsPub[4], 500000000000) - - // Register validators - await ssvToken.connect(account1).approve(ssvNetwork.address, tokens) - await ssvNetwork.connect(account1).registerValidator(validatorsPub[0], operatorsIds.slice(0, 4), operatorsPub.slice(0, 4), operatorsPub.slice(0, 4), tokens) - }) - - it('Register validator with 0 balance', async function () { - await expect(ssvNetwork.connect(account2).registerValidator(validatorsPub[1], operatorsIds.slice(0, 4), operatorsPub.slice(0, 4), operatorsPub.slice(0, 4), 0)).to.be.revertedWith("NotEnoughBalance") - }) - - it('Check balance after 100 blocks', async function () { - await progressBlocks(100) - expect(await ssvNetwork.getAddressBalance(account1.address)).to.equal(BigNumber.from('9900000000000000')) - expect(await ssvNetwork.getAddressBalance(account2.address)).to.equal(30000000000000) - expect(await ssvNetwork.getAddressBalance(account3.address)).to.equal(70000000000000) - }) - - it('Try to liquidate a valid account', async function () { - await ssvNetwork.connect(account4).liquidate([account1.address]) - expect(await ssvNetwork.isLiquidated(account1.address)).to.equal(false) - }) - - it('Check burn rates', async function (): Promise { - expect(await ssvNetwork.getAddressBurnRate(owner.address)).to.equal(0) - expect(await ssvNetwork.getAddressBurnRate(account1.address)).to.equal(1000000000000) - expect(await ssvNetwork.getAddressBurnRate(account2.address)).to.equal(0) - expect(await ssvNetwork.getAddressBurnRate(account3.address)).to.equal(0) - }) - - it('Try to withdraw to a liquidatable state', async function () { - await progressBlocks(948) - expect(await ssvNetwork.getAddressBalance(account1.address)).to.equal(BigNumber.from('9052000000000000')) - await expect(ssvNetwork.connect(account1).withdraw(BigNumber.from('200000000000000000'))).to.be.revertedWith('NotEnoughBalance') - expect(await ssvNetwork.getAddressBalance(account1.address)).to.equal(BigNumber.from('9051000000000000')) - }) - - it('Update to a valid state using tokens', async function () { - // Get to a liquidatable state - await ssvNetwork.connect(account1).withdraw('2999000000000000'); - await progressBlocks(100); - - expect(await ssvNetwork.isLiquidatable(account1.address)).to.equal(true) - - // Change operator triggering to put in more SSV - await ssvToken.connect(account1).approve(ssvNetwork.address, tokens) - const tx = ssvNetwork.connect(account1).updateValidator(validatorsPub[0], operatorsIds.slice(1, 5), operatorsPub.slice(1, 5), operatorsPub.slice(1, 5), tokens) - await expect(tx).to.emit(ssvNetwork, 'ValidatorRemoval') - await expect(tx).to.emit(ssvNetwork, 'ValidatorRegistration') - - // No longer liquidatable - expect(await ssvNetwork.isLiquidatable(account1.address)).to.equal(false) - await ssvNetwork.connect(account4).liquidate([account1.address]) - expect(await ssvNetwork.isLiquidated(account1.address)).to.equal(false) - - // Get to a liquidatable state - await ssvNetwork.connect(account1).withdraw('6749400000000000'); - await progressBlocks(250) - expect(await ssvNetwork.isLiquidatable(account1.address)).to.equal(true) - - // Try to withdraw with in liquidatable state - await expect(ssvNetwork.connect(account1).withdraw(10000000)).to.be.revertedWith("NotEnoughBalance") - - // Deposit more SSV - await ssvToken.connect(account1).approve(ssvNetwork.address, tokens) - await ssvNetwork.connect(account1).deposit(account1.address, tokens) - - // No longer liquidatable - expect(await ssvNetwork.isLiquidatable(account1.address)).to.equal(false) - }) - - it('Liquidate', async function () { - // Try to liquidate non liquidatable accounts - await ssvNetwork.connect(account1).withdraw('90900000000000'); - await progressBlocks(100); - expect(await ssvNetwork.getAddressBalance(account1.address)).to.equal(BigNumber.from('9808100000000000')) - expect(await ssvNetwork.isLiquidatable(account1.address)).to.equal(false) - await ssvNetwork.connect(account4).liquidate([account1.address]) - expect(await ssvNetwork.isLiquidated(account1.address)).to.equal(false) - - // Liquidate account1 - await progressBlocks(8350) - expect(await ssvNetwork.isLiquidatable(account1.address)).to.equal(true) - expect(await ssvToken.balanceOf(account4.address)).to.equal(0) - await ssvNetwork.connect(account4).liquidate([account1.address]) - expect(await ssvNetwork.isLiquidatable(account1.address)).to.equal(false) - await ssvNetwork.connect(account4).liquidate([account1.address]) - expect(await ssvNetwork.isLiquidated(account1.address)).to.equal(true) - expect(await ssvNetwork.getAddressBurnRate(account1.address)).to.equal(0) - expect(await ssvNetwork.getAddressBalance(account1.address)).to.equal(0) - expect(await ssvNetwork.getAddressBalance(account4.address)).to.equal(0) - expect(await ssvToken.balanceOf(account4.address)).to.equal('1456100000000000') - }) - - it('Liquidate multiple accounts', async function () { - // Register validator with account5 - await ssvToken.connect(account1).transfer(account5.address, tokens) - await ssvToken.connect(account5).approve(ssvNetwork.address, tokens) - await ssvNetwork.connect(account5).registerValidator(validatorsPub[1], operatorsIds.slice(0, 4), operatorsPub.slice(0, 4), operatorsPub.slice(0, 4), tokens) - await progressBlocks(900) - expect(await ssvNetwork.getAddressBalance(account1.address)).to.equal('9097000000000000') - expect(await ssvNetwork.getAddressBalance(account5.address)).to.equal('9100000000000000') - expect(await ssvNetwork.getAddressBalance(account4.address)).to.equal(0) - expect(await ssvToken.balanceOf(account4.address)).to.equal(0) - - // Try to liquidate non liquidatable accounts - await ssvNetwork.connect(account4).liquidate([account1.address, account2.address, account5.address]) - expect(await ssvNetwork.getAddressBalance(account1.address)).to.equal('9096000000000000') - expect(await ssvNetwork.getAddressBalance(account2.address)).to.equal('541500000000000') - expect(await ssvNetwork.getAddressBalance(account5.address)).to.equal('9099000000000000') - expect(await ssvNetwork.getAddressBalance(account4.address)).to.equal(0) - await ssvNetwork.connect(account1).withdraw('1995000000000000') - await ssvNetwork.connect(account5).withdraw('1998000000000000') - await progressBlocks(100) - - // Liquidate account1 (actually liquidatable), account2 (not liquidatable) and account5 (actually liquidatable) - await ssvNetwork.connect(account4).liquidate([account1.address, account2.address, account5.address]) - expect(await ssvNetwork.getAddressBalance(account1.address)).to.equal(0) - expect(await ssvNetwork.getAddressBalance(account2.address)).to.equal(603300000000000) - expect(await ssvNetwork.getAddressBalance(account5.address)).to.equal(0) - expect(await ssvNetwork.getAddressBalance(account4.address)).to.equal(0) - - // Account4 only got liquidation reward from account1 and account2 only - expect(await ssvToken.balanceOf(account4.address)).to.equal('13996000000000000') - expect(await ssvNetwork.isLiquidated(account1.address)).to.equal(true) - }) - - it('Try to enable account to liquitable status', async function () { - // Expect to not be liquidatable - expect(await ssvNetwork.getAddressBalance(account1.address)).to.equal(BigNumber.from('10000000000000000')) - expect(await ssvNetwork.isLiquidatable(account1.address)).to.equal(false) - await ssvNetwork.connect(account1).withdraw(BigNumber.from('2899000000000000')); - await progressBlocks(100); - // Liquidate account1 - await ssvNetwork.connect(account2).liquidate([account1.address]) - expect(await ssvNetwork.getAddressBalance(account1.address)).to.equal(0) - expect(await ssvNetwork.isLiquidated(account1.address)).to.equal(true) - expect(await ssvNetwork.isLiquidatable(account1.address)).to.equal(false) - - // Enable account not enough SSV - await ssvToken.connect(account1).approve(ssvNetwork.address, 7000000000000000) - await expect(ssvNetwork.connect(account1).reactivateAccount(4900000000)).to.be.revertedWith("NotEnoughBalance") - - // Enable account - await ssvNetwork.connect(account1).reactivateAccount(7000000000000000) - expect(await ssvNetwork.isLiquidated(account1.address)).to.equal(false) - expect(await ssvNetwork.getAddressBalance(account1.address)).to.equal(7000000000000000) - - // Liquidate again immediately - await ssvNetwork.connect(account2).liquidate([account1.address]) - expect(await ssvNetwork.getAddressBalance(account1.address)).to.equal(0) - expect(await ssvNetwork.isLiquidated(account1.address)).to.equal(true) - }) -}) diff --git a/test/unit/operator-register.ts b/test/unit/operator-register.ts deleted file mode 100644 index 69392b06..00000000 --- a/test/unit/operator-register.ts +++ /dev/null @@ -1,88 +0,0 @@ -// Operator Registration Unit Tests - -// Declare all imports -import * as chai from 'chai' -import chaiAsPromised from 'chai-as-promised' -beforeEach(() => { - chai.should() - chai.use(chaiAsPromised) -}) - -// Define global variables -declare const ethers: any -declare const upgrades: any -const { expect } = chai -const DAY = 86400 -const minimumBlocksBeforeLiquidation = 7000 -const operatorMaxFeeIncrease = 1000 -const setOperatorFeePeriod = 0 -const approveOperatorFeePeriod = DAY -const operatorPublicKeyPrefix = '12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345' -let ssvToken: any, ssvRegistry: any, ssvNetwork: any -let owner: any, account1: any, account2: any, account3: any -const operatorsPub = Array.from(Array(10).keys()).map(k => `0x${operatorPublicKeyPrefix}${k}`) -const operatorsIds = Array.from(Array(10).keys()).map(k => k + 1) - -describe('Register Operators', function () { - beforeEach(async function () { - // Create accounts - [owner, account1, account2, account3] = await ethers.getSigners() - - // Deploy Contracts - const ssvTokenFactory = await ethers.getContractFactory('SSVTokenMock') - const ssvRegistryFactory = await ethers.getContractFactory('SSVRegistry') - const ssvNetworkFactory = await ethers.getContractFactory('SSVNetwork') - ssvToken = await ssvTokenFactory.deploy() - ssvRegistry = await upgrades.deployProxy(ssvRegistryFactory, { initializer: false }) - await ssvToken.deployed() - await ssvRegistry.deployed() - ssvNetwork = await upgrades.deployProxy(ssvNetworkFactory, [ssvRegistry.address, ssvToken.address, minimumBlocksBeforeLiquidation, operatorMaxFeeIncrease, setOperatorFeePeriod, approveOperatorFeePeriod]) - await ssvNetwork.deployed() - - // Mint tokens - await ssvToken.mint(account1.address, '1000000000000000000') - - // Register operators - await expect(ssvNetwork.connect(account2).registerOperator('testOperator 0', operatorsPub[0], 100000000000)) - .to.emit(ssvNetwork, 'OperatorRegistration').withArgs(operatorsIds[0], 'testOperator 0', account2.address, operatorsPub[0], 100000000000) - await ssvNetwork.connect(account2).registerOperator('testOperator 1', operatorsPub[1], 200000000000) - await ssvNetwork.connect(account3).registerOperator('testOperator 2', operatorsPub[2], 300000000000) - await ssvNetwork.connect(account3).registerOperator('testOperator 3', operatorsPub[3], 400000000000) - }) - - - it('Get operators by ID', async function () { - expect((await ssvNetwork.getOperatorById(operatorsIds[1]))[0]).to.equal('testOperator 1') - expect((await ssvNetwork.getOperatorById(operatorsIds[1]))[1]).to.equal(account2.address) - expect((await ssvNetwork.getOperatorById(operatorsIds[1]))[2]).to.equal(operatorsPub[1]) - expect((await ssvNetwork.getOperatorById(operatorsIds[1]))[3]).to.equal('0') - expect((await ssvNetwork.getOperatorById(operatorsIds[1]))[4]).to.equal(200000000000) - expect((await ssvNetwork.getOperatorById(operatorsIds[1]))[5]).to.equal('0') - expect((await ssvNetwork.getOperatorById(operatorsIds[1]))[6]).to.equal(true) - - // Non-existing operator - expect((await ssvNetwork.getOperatorById(operatorsIds[5]))[1]).to.equal('0x0000000000000000000000000000000000000000') - }) - - it('Register validator with same public key', async function () { - await expect(ssvNetwork.connect(account2).registerOperator('testOperator 0', operatorsPub[0], 100000000000)) - .to.emit(ssvNetwork, 'OperatorRegistration').withArgs(operatorsIds[4], 'testOperator 0', account2.address, operatorsPub[0], 100000000000) - }) - - it('Try to register operator with errors', async function () { - // Try to register operator with public key too many characters - await ssvNetwork - .connect(account3).registerOperator('invalid pubkey', `${operatorsPub[1]}7`, 100000000000) - .should.eventually.be.rejectedWith('hex data is odd-length') - - // Try to register operator with invalid public key - await ssvNetwork - .connect(account3).registerOperator('invalid pubkey', '1234567890123456789-123456789012345678901234567890123456789012345678901234567890123456789012345', 100000000000) - .should.eventually.be.rejectedWith('invalid arrayify value') - - // Try to register operator SSV amount too small - await ssvNetwork - .connect(account3).registerOperator('invalid pubkey', operatorsPub[1], 9999999) - .should.eventually.be.rejectedWith('Precision is over the maximum defined') - }) -}) \ No newline at end of file diff --git a/test/unit/operator-remove.ts b/test/unit/operator-remove.ts deleted file mode 100644 index c4a6c96a..00000000 --- a/test/unit/operator-remove.ts +++ /dev/null @@ -1,132 +0,0 @@ -// Operator Remove Unit Tests - -// Declare all imports -import * as chai from 'chai' -import chaiAsPromised from 'chai-as-promised' -import { progressBlocks, progressTime } from '../helpers/utils' -beforeEach(() => { - chai.should() - chai.use(chaiAsPromised) -}) - -// Define global variables -declare const ethers: any -declare const upgrades: any -const { expect } = chai -const DAY = 86400 -const minimumBlocksBeforeLiquidation = 50 -const operatorMaxFeeIncrease = 10 -const setOperatorFeePeriod = 0 -const approveOperatorFeePeriod = DAY -const operatorPublicKeyPrefix = '12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345' -const validatorPublicKeyPrefix = '98765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765' -let ssvToken: any, ssvRegistry: any, ssvNetwork: any -let owner: any, account1: any, account2: any, account3: any -const operatorsPub = Array.from(Array(10).keys()).map(k => `0x${operatorPublicKeyPrefix}${k}`) -const validatorsPub = Array.from(Array(10).keys()).map(k => `0x${validatorPublicKeyPrefix}${k}`) -const operatorsIds = Array.from(Array(10).keys()).map(k => k + 1) - -describe('Operator Remove', function () { - beforeEach(async function () { - // Create accounts - [owner, account1, account2, account3] = await ethers.getSigners() - - // Deploy Contracts - const ssvTokenFactory = await ethers.getContractFactory('SSVTokenMock') - const ssvRegistryFactory = await ethers.getContractFactory('SSVRegistry') - const ssvNetworkFactory = await ethers.getContractFactory('SSVNetwork') - ssvToken = await ssvTokenFactory.deploy() - ssvRegistry = await upgrades.deployProxy(ssvRegistryFactory, { initializer: false }) - await ssvToken.deployed() - await ssvRegistry.deployed() - ssvNetwork = await upgrades.deployProxy(ssvNetworkFactory, [ssvRegistry.address, ssvToken.address, minimumBlocksBeforeLiquidation, operatorMaxFeeIncrease, setOperatorFeePeriod, approveOperatorFeePeriod]) - await ssvNetwork.deployed() - - // Mint tokens - await ssvToken.mint(account1.address, '60000000000000') - - // Register operators - await ssvNetwork.connect(account2).registerOperator('testOperator 0', operatorsPub[0], 100000000000) - await ssvNetwork.connect(account3).registerOperator('testOperator 1', operatorsPub[1], 200000000000) - await ssvNetwork.connect(account3).registerOperator('testOperator 2', operatorsPub[2], 300000000000) - await ssvNetwork.connect(account3).registerOperator('testOperator 3', operatorsPub[3], 400000000000) - }) - - it('Remove operator no validators', async function () { - // Remove an operator with no validators - await progressTime(DAY) - await expect(ssvNetwork.connect(account2).removeOperator(operatorsIds[0])) - .to.emit(ssvNetwork, 'OperatorRemoval').withArgs(operatorsIds[0], account2.address) - - // Check that the operator statuses - expect((await ssvNetwork.getOperatorById(operatorsIds[0]))[0]).to.equal('testOperator 0') - expect((await ssvNetwork.getOperatorById(operatorsIds[0]))[1]).to.equal(account2.address) - expect((await ssvNetwork.getOperatorById(operatorsIds[0]))[2]).to.equal(operatorsPub[0]) - expect((await ssvNetwork.getOperatorById(operatorsIds[0]))[3]).to.equal('0') - expect((await ssvNetwork.getOperatorById(operatorsIds[0]))[4]).to.equal(0) - expect((await ssvNetwork.getOperatorById(operatorsIds[0]))[5]).to.equal('0') - expect((await ssvNetwork.getOperatorById(operatorsIds[0]))[6]).to.equal(false) - }) - - it('Remove operator with validators', async function () { - // Register a validator - await ssvToken.connect(account1).approve(ssvNetwork.address, 60000000000000) - await ssvNetwork.connect(account1).registerValidator(validatorsPub[0], operatorsIds.slice(0, 4), operatorsPub.slice(0, 4), operatorsPub.slice(0, 4), 60000000000000) - - // Delete an operator that the validator is using - await expect(ssvNetwork.connect(account2).removeOperator(operatorsIds[0])) - .to.emit(ssvNetwork, 'OperatorRemoval').withArgs(operatorsIds[0], account2.address) - - // Check that the operator statuses - expect((await ssvNetwork.getOperatorById(operatorsIds[0]))[0]).to.equal('testOperator 0') - expect((await ssvNetwork.getOperatorById(operatorsIds[0]))[1]).to.equal(account2.address) - expect((await ssvNetwork.getOperatorById(operatorsIds[0]))[2]).to.equal(operatorsPub[0]) - expect((await ssvNetwork.getOperatorById(operatorsIds[0]))[3]).to.equal('1') - expect((await ssvNetwork.getOperatorById(operatorsIds[0]))[4]).to.equal(0) - expect((await ssvNetwork.getOperatorById(operatorsIds[0]))[5]).to.equal('0') - expect((await ssvNetwork.getOperatorById(operatorsIds[0]))[6]).to.equal(false) - - // Check that operator did not earn anything since deleted - const account2Balance = await ssvNetwork.getAddressBalance(account2.address) - await progressBlocks(100) - expect(await ssvNetwork.getAddressBalance(account2.address)).to.equal(account2Balance) - }) - - it('Remove operator errors', async function () { - // Try to remove non-existent operator - await ssvNetwork.connect(account3).removeOperator(operatorsIds[6]) - .should.eventually.be.rejectedWith('OperatorWithPublicKeyNotExist') - - // Remove operator: tx was sent as non-owner - await ssvNetwork.connect(account3).removeOperator(operatorsIds[0]) - .should.eventually.be.rejectedWith('CallerNotOperatorOwner') - - // Remove already removed operator - await ssvNetwork.connect(account2).removeOperator(operatorsIds[0]) - await ssvNetwork.connect(account2).removeOperator(operatorsIds[0]) - .should.eventually.be.rejectedWith('OperatorDeleted') - }) - - // **** NEED TO UPDATE FOR DAO WHEN FUNCTIONALITY IS ADDED **** - // it('Remove operator from DAO', async function () { - // // Register a validator - // await ssvToken.connect(account1).approve(ssvNetwork.address, 1000000000) - // await ssvNetwork.connect(account1).registerValidator(validatorsPub[0], operatorsIds.slice(0, 4), operatorsPub.slice(0, 4), operatorsPub.slice(0, 4), 100000000) - - // // Delete an operator that the validator is using - // await expect(ssvNetwork.connect(account2).removeOperator(operatorsIds[0])) - // .to.emit(ssvRegistry, 'OperatorRemoved') - // .withArgs(operatorsIds[0], account2.address, operatorsPub[0]) - - // // Check that the operator fee is 0 - // expect((await ssvRegistry.getOperatorCurrentFee(operatorsIds[0])).toString()).to.equal('0') - - // // Check that the operator status is false - // expect((await ssvNetwork.getOperatorByPublicKey(operatorsPub[1]))[5]).to.equal(false) - - // // Chat that operator did not earn anything since deleted - // const operatorEarnings = (await ssvNetwork.operatorEarningsOf(operatorsIds[0])).toString() - // await progressBlocks(100) - // expect((await ssvNetwork.operatorEarningsOf(operatorsIds[0])).toString()).to.equal(operatorEarnings) - // }) -}) \ No newline at end of file diff --git a/test/unit/operator-update.ts b/test/unit/operator-update.ts deleted file mode 100644 index 8052188a..00000000 --- a/test/unit/operator-update.ts +++ /dev/null @@ -1,172 +0,0 @@ -// Operator Update Unit Tests - -// Declare all imports -import * as chai from 'chai' -import chaiAsPromised from 'chai-as-promised' -import { progressBlocks, progressTime } from '../helpers/utils' -beforeEach(() => { - chai.should() - chai.use(chaiAsPromised) -}) - -// Define global variables -declare const ethers: any -declare const upgrades: any -const { expect } = chai -const DAY = 86400 -const minimumBlocksBeforeLiquidation = 7000 -const operatorMaxFeeIncrease = 1000 -const setOperatorFeePeriod = 0 -const approveOperatorFeePeriod = DAY -const operatorPublicKeyPrefix = '12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345' -let ssvToken: any, ssvRegistry: any, ssvNetwork: any, utils: any -let owner: any, account1: any, account2: any, account3: any -const operatorsPub = Array.from(Array(10).keys()).map(k => `0x${operatorPublicKeyPrefix}${k}`) -const operatorsIds = Array.from(Array(10).keys()).map(k => k + 1) - -describe('Operator Update', function () { - beforeEach(async function () { - // Create accounts - [owner, account1, account2, account3] = await ethers.getSigners() - - // Deploy Contracts - const ssvTokenFactory = await ethers.getContractFactory('SSVTokenMock') - const ssvRegistryFactory = await ethers.getContractFactory('SSVRegistry') - const ssvNetworkFactory = await ethers.getContractFactory('SSVNetwork') - const utilsFactory = await ethers.getContractFactory('Utils'); - ssvToken = await ssvTokenFactory.deploy() - ssvRegistry = await upgrades.deployProxy(ssvRegistryFactory, { initializer: false }) - await ssvToken.deployed() - await ssvRegistry.deployed() - ssvNetwork = await upgrades.deployProxy(ssvNetworkFactory, [ssvRegistry.address, ssvToken.address, minimumBlocksBeforeLiquidation, operatorMaxFeeIncrease, setOperatorFeePeriod, approveOperatorFeePeriod]) - await ssvNetwork.deployed() - utils = await utilsFactory.deploy(); - - // Mint tokens - await ssvToken.mint(account1.address, '10000000000') - - // Register operators - await ssvNetwork.connect(account2).registerOperator('testOperator 0', operatorsPub[0], 100000000000) - await ssvNetwork.connect(account2).registerOperator('testOperator 1', operatorsPub[1], 200000000000) - await ssvNetwork.connect(account3).registerOperator('testOperator 2', operatorsPub[2], 300000000000) - await ssvNetwork.connect(account3).registerOperator('testOperator 3', operatorsPub[3], 400000000000) - await ssvNetwork.connect(account3).registerOperator('testOperator 4', operatorsPub[4], 100000000000) - }) - - it('Update operators score', async function () { - await ssvNetwork.connect(owner).updateOperatorScore(operatorsIds[0], 105) - - // Update as non-owner to get error - await ssvNetwork - .connect(account2) - .updateOperatorScore(operatorsIds[0], 110) - .should.eventually.be.rejectedWith('caller is not the owner') - }) - - it('Update operators fee', async function () { - // Set new operator fee - await progressTime(DAY) - await ssvNetwork.connect(account2).declareOperatorFee(operatorsIds[0], 105000000000) - expect(await ssvNetwork.connect(account2).executeOperatorFee(operatorsIds[0])) - .to.emit(ssvNetwork, 'OperatorFeeUpdated').withArgs(account2.address, operatorsIds[0], +await utils.blockNumber(), '105000000000') - expect((await ssvNetwork.getOperatorFee(operatorsIds[0])).toString()).to.equal('105000000000') - - // Set new operator fee too high - await expect(ssvNetwork.connect(account2).declareOperatorFee(operatorsIds[0], 11560000000000)).to.be.revertedWith('FeeExceedsIncreaseLimit') - - // declareOperatorFee incorrect user - await expect(ssvNetwork.connect(account1).declareOperatorFee(operatorsIds[0], 105000100000)).to.be.revertedWith('CallerNotOperatorOwner') - }) - - it('Update operators fee incorrect precision', async function () { - await ssvNetwork.connect(account2).declareOperatorFee(operatorsIds[0], 101000000000) - await expect(ssvNetwork.connect(account2).declareOperatorFee(operatorsIds[0], 101220000)).to.be.revertedWith('Precision is over the maximum defined') - await expect(ssvNetwork.connect(account2).declareOperatorFee(operatorsIds[0], 100000000 * 1.0122)).to.be.revertedWith('Precision is over the maximum defined') - }) - - it('Update operators max fee increase percentage', async function () { - // Change the max fee increase percentage - expect(await ssvNetwork.getOperatorFeeIncreaseLimit()).to.equal('1000') - await ssvNetwork.connect(owner).updateOperatorFeeIncreaseLimit(2000) - expect(await ssvNetwork.getOperatorFeeIncreaseLimit()).to.equal('2000') - - // Change the max fee increase percentage not owner - await expect(ssvNetwork.connect(account2).updateOperatorFeeIncreaseLimit(20)).to.be.revertedWith('Ownable: caller is not the owner') - - // Set operator fee too high - await expect(ssvNetwork.connect(account2).declareOperatorFee(operatorsIds[0], 1200000000000)).to.be.revertedWith('FeeExceedsIncreaseLimit') - - // Set operator fee at 20% higher - await ssvNetwork.connect(account2).declareOperatorFee(operatorsIds[0], 120000000000) - await ssvNetwork.connect(account2).executeOperatorFee(operatorsIds[0]) - expect((await ssvNetwork.getOperatorFee(operatorsIds[0])).toString()).to.equal('120000000000') - - // Try to lower fee too low - await expect(ssvNetwork.connect(account2).declareOperatorFee(operatorsIds[1], 105)).to.be.revertedWith('Precision is over the maximum defined') - }) - - it('Update operators fee less than approval time', async function () { - await ssvNetwork.connect(account2).declareOperatorFee(operatorsIds[0], 105000000000) - await ssvNetwork.connect(account2).declareOperatorFee(operatorsIds[0], 106000000000) - await ssvNetwork.connect(account2).executeOperatorFee(operatorsIds[0]) - expect((await ssvNetwork.getOperatorFee(operatorsIds[0])).toString()).to.equal('106000000000') - }) - - it('Update operator fee expired', async function () { - await ssvNetwork.connect(account2).declareOperatorFee(operatorsIds[0], 110000000000) - await progressTime(DAY * 7) - await expect(ssvNetwork.connect(account2).executeOperatorFee(operatorsIds[0])).to.be.revertedWith('ApprovalNotWithinTimeframe') - }) - - it('Cant update operator fee (fee too small)', async function () { - await expect(ssvNetwork.connect(account3).declareOperatorFee(operatorsIds[4], 11000000)).to.be.revertedWith('Precision is over the maximum defined') - await expect(ssvNetwork.connect(account3).declareOperatorFee(operatorsIds[4], 10100000)).to.be.revertedWith('Precision is over the maximum defined') - }) - - it('Cancel update operator fee', async function () { - // Cancel update operator fee before approval time - await ssvNetwork.connect(account2).declareOperatorFee(operatorsIds[0], 105000000000) - await ssvNetwork.connect(account2).cancelDeclaredOperatorFee(operatorsIds[0]) - await progressTime(DAY * 7) - expect((await ssvNetwork.getOperatorFee(operatorsIds[0])).toString()).to.equal('100000000000') - - // Cancel update operator fee incorrect account - await ssvNetwork.connect(account2).declareOperatorFee(operatorsIds[0], 105000000000) - await expect(ssvNetwork.connect(account1).cancelDeclaredOperatorFee(operatorsIds[0])).to.be.revertedWith('CallerNotOperatorOwner') - expect((await ssvNetwork.getOperatorFee(operatorsIds[0])).toString()).to.equal('100000000000') - }) - - it('Change expiry time / Cancel update operator fee before expiry time', async function () { - // Get fee periods - expect((await ssvNetwork.getDeclaredOperatorFeePeriod()).toString()).to.equal('0') - expect((await ssvNetwork.getExecuteOperatorFeePeriod()).toString()).to.equal('86400') - - // Change fee periods - await ssvNetwork.connect(owner).updateDeclareOperatorFeePeriod(5) - await ssvNetwork.connect(owner).updateExecuteOperatorFeePeriod(10) - - // Get fee periods - expect((await ssvNetwork.getDeclaredOperatorFeePeriod()).toString()).to.equal('5') - expect((await ssvNetwork.getExecuteOperatorFeePeriod()).toString()).to.equal('10') - - // Cancel update operator fee before expiry time - await ssvNetwork.connect(account2).declareOperatorFee(operatorsIds[0], 105000000000) - await progressBlocks(6) - await ssvNetwork.connect(account2).cancelDeclaredOperatorFee(operatorsIds[0]) - await expect(ssvNetwork.connect(account2).executeOperatorFee(operatorsIds[0])).to.be.revertedWith('NoPendingFeeChangeRequest') - expect((await ssvNetwork.getOperatorFee(operatorsIds[0])).toString()).to.equal('100000000000') - }) - - it('Update set operator fee period', async function () { - // Change set operator fee period not owner - await expect(ssvNetwork.connect(account2).updateDeclareOperatorFeePeriod(5)).to.be.revertedWith('Ownable: caller is not the owner') - - // Change set operator fee - await ssvNetwork.connect(owner).updateDeclareOperatorFeePeriod(5) - await ssvNetwork.connect(account2).declareOperatorFee(operatorsIds[0], 105000000000) - await progressBlocks(3) - await expect(ssvNetwork.connect(account2).executeOperatorFee(operatorsIds[0])).to.be.revertedWith('ApprovalNotWithinTimeframe') - await ssvNetwork.connect(account2).executeOperatorFee(operatorsIds[0]) - expect((await ssvNetwork.getOperatorFee(operatorsIds[0])).toString()).to.equal('105000000000') - }) -}) diff --git a/test/unit/ssv-network-balances.ts b/test/unit/ssv-network-balances.ts deleted file mode 100644 index 84561893..00000000 --- a/test/unit/ssv-network-balances.ts +++ /dev/null @@ -1,162 +0,0 @@ -// Network Balances Unit Tests - -// Declare all imports -import { ethers, upgrades } from 'hardhat'; -import * as chai from 'chai'; -import chaiAsPromised from 'chai-as-promised'; -import { progress, progressBlocks, snapshot } from '../helpers/utils'; -import Table from 'cli-table'; -declare var network: any; -beforeEach(() => { - chai.should(); - chai.use(chaiAsPromised); -}); - -// Define global variables -const { expect } = chai; -const minimumBlocksBeforeLiquidation = 7000; -const operatorMaxFeeIncrease = 1000; -const operatorPublicKeyPrefix = '12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345'; -const validatorPublicKeyPrefix = '98765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765'; -let ssvToken: any, ssvRegistry: any, ssvNetwork: any; -let owner: any, account1: any, account2: any, account3: any, account4: any; -const operatorsPub = Array.from(Array(10).keys()).map(k => `0x${operatorPublicKeyPrefix}${k}`); -const validatorsPub = Array.from(Array(10).keys()).map(k => `0x${validatorPublicKeyPrefix}${k}`); -const operatorsIds = Array.from(Array(10).keys()).map(k => k + 1); -const DAY = 86400; -const operatorIndexes: any = []; -const setOperatorFeePeriod = 0; -const approveOperatorFeePeriod = DAY; - -const registerOperator = async (account: string, idx: number, fee: number) => { - await ssvNetwork.connect(account).registerOperator(`testOperator ${idx}`, operatorsPub[idx], fee); - operatorIndexes.push({ - fee, - blockNumber: await ethers.provider.getBlockNumber(), - index: 0, - validatorsCount: 0, - used: 0 - }); -} - -describe('SSV Network Balances', function () { - beforeEach(async function () { - [owner, account1, account2, account3] = await ethers.getSigners(); - const ssvTokenFactory = await ethers.getContractFactory('SSVTokenMock'); - const ssvRegistryFactory = await ethers.getContractFactory('SSVRegistry'); - const ssvNetworkFactory = await ethers.getContractFactory('SSVNetwork'); - ssvToken = await ssvTokenFactory.deploy(); - ssvRegistry = await upgrades.deployProxy(ssvRegistryFactory, { initializer: false }); - await ssvToken.deployed(); - await ssvRegistry.deployed(); - ssvNetwork = await upgrades.deployProxy(ssvNetworkFactory, [ssvRegistry.address, ssvToken.address, minimumBlocksBeforeLiquidation, operatorMaxFeeIncrease, setOperatorFeePeriod, approveOperatorFeePeriod]); - await ssvNetwork.deployed(); - await ssvToken.mint(account1.address, '80000000000000000'); - }); - - it('Address Balance', async function () { - const table = new Table({ head: ["", "Block #", "10", "20", "30", "40", "50", "60", "100"] }); - const balancesByBlocks = [""]; - const networkAddFeeByBlocks = [""]; - await snapshot(async () => { - const chargedAmount = 10000000000000000; - await ssvToken.connect(account1).approve(ssvNetwork.address, '80000000000000000'); - (await ssvNetwork.updateNetworkFee(100000000000)).wait(); - // Register operators - await network.provider.send("evm_setAutomine", [false]); - await registerOperator(account2, 0, 200000000000); - await registerOperator(account2, 1, 100000000000); - await registerOperator(account2, 2, 100000000000); - await registerOperator(account2, 3, 300000000000); - - await progressBlocks(1); - - /* - block #10 - */ - networkAddFeeByBlocks.push(`${+await ssvNetwork.addressNetworkFee(account1.address)}`); - balancesByBlocks.push(`${+await ssvNetwork.getAddressBalance(account1.address)}`); - await progressBlocks(10); - - /* - block #20 - */ - await network.provider.send("evm_setAutomine", [true]); - - balancesByBlocks.push(`${+await ssvNetwork.getAddressBalance(account1.address)}`); - networkAddFeeByBlocks.push(`${+await ssvNetwork.addressNetworkFee(account1.address)}`); - - // Register validator - (await ssvNetwork.connect(account1).registerValidator(validatorsPub[0], operatorsIds.slice(0, 4), operatorsPub.slice(0, 4), operatorsPub.slice(0, 4), `${chargedAmount}`)).wait(); - - // await progress(4 * DAY, 9); - await progressBlocks(10); - - /* - block #30 - */ - balancesByBlocks.push(`${chargedAmount - +await ssvNetwork.getAddressBalance(account1.address)}`); - networkAddFeeByBlocks.push(`${+await ssvNetwork.addressNetworkFee(account1.address)}`); - - await network.provider.send("evm_setAutomine", [false]); - (await ssvNetwork.connect(account2).declareOperatorFee(operatorsIds[0], 220000000000)).wait(); - (await ssvNetwork.connect(account2).executeOperatorFee(operatorsIds[0])).wait(); - - // Register validator - (await ssvNetwork.connect(account1).registerValidator(validatorsPub[1], operatorsIds.slice(0, 4), operatorsPub.slice(0, 4), operatorsPub.slice(0, 4), `${chargedAmount}`)).wait(); - await network.provider.send("evm_setAutomine", [true]); - - await progressBlocks(10); - - /* - block #40 - */ - balancesByBlocks.push(`${2 * chargedAmount - +await ssvNetwork.getAddressBalance(account1.address)}`); - networkAddFeeByBlocks.push(`${+await ssvNetwork.addressNetworkFee(account1.address)}`); - - // Register validator - (await ssvNetwork.connect(account1).registerValidator(validatorsPub[2], operatorsIds.slice(0, 4), operatorsPub.slice(0, 4), operatorsPub.slice(0, 4), `${chargedAmount}`)).wait(); - - // await progress(4 * DAY, 9); - await progressBlocks(9); - - /* - block #50 - */ - balancesByBlocks.push(`${3 * chargedAmount - +await ssvNetwork.getAddressBalance(account1.address)} (${await ssvNetwork.getAddressBalance(account1.address)})`); - networkAddFeeByBlocks.push(`${+await ssvNetwork.addressNetworkFee(account1.address)}`); - await network.provider.send("evm_setAutomine", [false]); - (await ssvNetwork.connect(account2).declareOperatorFee(operatorsIds[0], 180000000000)).wait(); - (await ssvNetwork.connect(account2).executeOperatorFee(operatorsIds[0])).wait(); - (await ssvNetwork.updateNetworkFee(200000000000)).wait(); - // register validator - (await ssvNetwork.connect(account1).registerValidator(validatorsPub[3], operatorsIds.slice(0, 4), operatorsPub.slice(0, 4), operatorsPub.slice(0, 4), `${chargedAmount}`)).wait(); - await network.provider.send("evm_setAutomine", [true]); - - await progressBlocks(10); - - /* - block #60 - */ - balancesByBlocks.push(`${4 * chargedAmount - +await ssvNetwork.getAddressBalance(account1.address)} (${await ssvNetwork.getAddressBalance(account1.address)})`); - networkAddFeeByBlocks.push(`${+await ssvNetwork.addressNetworkFee(account1.address)}`); - - await progressBlocks(40); - - /* - block #100 - */ - balancesByBlocks.push(`${4 * chargedAmount - +await ssvNetwork.getAddressBalance(account1.address)} (${await ssvNetwork.getAddressBalance(account1.address)})`); - networkAddFeeByBlocks.push(`${+await ssvNetwork.addressNetworkFee(account1.address)}`); - - table.push( - { 'Acc. Payments': balancesByBlocks }, - { 'Network Fee': networkAddFeeByBlocks } - ); - - console.log(table.toString()); - expect(4 * chargedAmount - +await ssvNetwork.getAddressBalance(account1.address)).to.equal(222280000000000); - - }); - }); -}); \ No newline at end of file diff --git a/test/unit/ssv-network.ts b/test/unit/ssv-network.ts deleted file mode 100644 index 263ed0a6..00000000 --- a/test/unit/ssv-network.ts +++ /dev/null @@ -1,412 +0,0 @@ -// Network Contract Unit Tests - -// Declare all imports -import { ethers, upgrades } from 'hardhat'; -import * as chai from 'chai'; -import chaiAsPromised from 'chai-as-promised'; -import { progressBlocks, progressTime } from '../helpers/utils'; -before(() => { - chai.should(); - chai.use(chaiAsPromised); -}); -const { expect } = chai; - -// Define global variables -const minimumBlocksBeforeLiquidation = 7000; -const operatorMaxFeeIncrease = 1000; -const operatorPublicKeyPrefix = '12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345'; -const operatorPublicKeyPrefix2 = '12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012346'; -const validatorPublicKeyPrefix = '98765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765'; -let ssvToken: any, ssvRegistry: any, ssvNetwork: any, utils: any; -let owner: any, account1: any, account2: any, account3: any, account4: any; -const operatorsPub = Array.from(Array(10).keys()).map(k => `0x${operatorPublicKeyPrefix}${k}`); -const operatorsPub2 = Array.from(Array(10).keys()).map(k => `0x${operatorPublicKeyPrefix2}${k}`); -const validatorsPub = Array.from(Array(10).keys()).map(k => `0x${validatorPublicKeyPrefix}${k}`); -const operatorsIds = Array.from(Array(10).keys()).map(k => k + 1); -const tokens = '100000000000000000'; -const DAY = 86400; -const setOperatorFeePeriod = 0; -const approveOperatorFeePeriod = DAY; - -describe('SSV Network Contract', function () { - beforeEach(async function () { - [owner, account1, account2, account3, account4] = await ethers.getSigners(); - const utilsFactory = await ethers.getContractFactory('Utils'); - const ssvTokenFactory = await ethers.getContractFactory('SSVTokenMock'); - const ssvRegistryFactory = await ethers.getContractFactory('SSVRegistry'); - const ssvNetworkFactory = await ethers.getContractFactory('SSVNetwork'); - - utils = await utilsFactory.deploy(); - ssvToken = await ssvTokenFactory.deploy(); - ssvRegistry = await upgrades.deployProxy(ssvRegistryFactory, { initializer: false }); - await ssvToken.deployed(); - await ssvRegistry.deployed(); - ssvNetwork = await upgrades.deployProxy(ssvNetworkFactory, [ssvRegistry.address, ssvToken.address, minimumBlocksBeforeLiquidation, operatorMaxFeeIncrease, setOperatorFeePeriod, approveOperatorFeePeriod]); - await ssvNetwork.deployed(); - await ssvToken.mint(account1.address, tokens); - await ssvToken.mint(account2.address, tokens); - - // Register operators - await ssvNetwork.connect(account2).registerOperator('testOperator 0', operatorsPub[0], 100000000000); - await ssvNetwork.connect(account2).registerOperator('testOperator 1', operatorsPub[1], 200000000000); - await ssvNetwork.connect(account3).registerOperator('testOperator 2', operatorsPub[2], 300000000000); - await ssvNetwork.connect(account3).registerOperator('testOperator 3', operatorsPub[3], 400000000000); - await ssvNetwork.connect(account3).registerOperator('testOperator 4', operatorsPub[4], 500000000000); - - // Register validators - await ssvToken.connect(account1).approve(ssvNetwork.address, tokens); - await ssvNetwork.connect(account1).registerValidator(validatorsPub[0], operatorsIds.slice(0, 4), operatorsPub.slice(0, 4), operatorsPub.slice(0, 4), tokens); - }); - - - it('Check contract version', async function () { - expect(await ssvNetwork.version()).to.equal(20000) - }); - - it('Operator limit', async function () { - await ssvNetwork.connect(account3).registerOperator('testOperator 5', operatorsPub[5], 50000000000); - await ssvNetwork.connect(account3).registerOperator('testOperator 6', operatorsPub[6], 50000000000); - await ssvNetwork.connect(account3).registerOperator('testOperator 7', operatorsPub[7], 50000000000); - await ssvNetwork.connect(account3).registerOperator('testOperator 8', operatorsPub[8], 50000000000); - await ssvNetwork.connect(account3).registerOperator('testOperator 9', operatorsPub[9], 50000000000); - await ssvNetwork.connect(account3).registerOperator('testOperator 10', operatorsPub2[0], 50000000000); - await ssvNetwork.connect(account3).registerOperator('testOperator 11', operatorsPub2[1], 50000000000); - await expect(ssvNetwork.connect(account3).registerOperator('testOperator 12', operatorsPub2[2], 50000000000)).to.be.revertedWith("ExceedRegisteredOperatorsByAccountLimit") - }); - - it('Operators getter', async function () { - expect((await ssvNetwork.getOperatorById(operatorsIds[0])).map((v: any) => v.toString())).to.eql(['testOperator 0', account2.address, operatorsPub[0], '1', '100000000000', '0', 'true']); - expect((await ssvNetwork.getOperatorById(operatorsIds[1])).map((v: any) => v.toString())).to.eql(['testOperator 1', account2.address, operatorsPub[1], '1', '200000000000', '0', 'true']); - expect((await ssvNetwork.getOperatorById(operatorsIds[2])).map((v: any) => v.toString())).to.eql(['testOperator 2', account3.address, operatorsPub[2], '1', '300000000000', '0', 'true']); - }); - - it('Get operator current fee', async function () { - expect(await ssvNetwork.getOperatorFee(operatorsIds[0])).to.equal(100000000000); - expect(await ssvNetwork.getOperatorFee(operatorsIds[1])).to.equal(200000000000); - expect(await ssvNetwork.getOperatorFee(operatorsIds[2])).to.equal(300000000000); - }); - - it('Balances should be correct after 100 blocks', async function () { - await progressBlocks(100); - expect(await ssvNetwork.getAddressBalance(account1.address)).to.equal('99900000000000000'); - expect(await ssvNetwork.getAddressBalance(account2.address)).to.equal(30000000000000); - expect(await ssvNetwork.getAddressBalance(account3.address)).to.equal(70000000000000); - }); - - it('Withdraw', async function () { - await progressBlocks(200); - await ssvNetwork.connect(account1).withdraw('10000000000'); - await ssvNetwork.connect(account2).withdraw('10000000000'); - await ssvNetwork.connect(account3).withdraw('10000000000'); - expect(await ssvNetwork.getAddressBalance(account1.address)).to.equal('99796990000000000'); - expect(await ssvNetwork.getAddressBalance(account2.address)).to.equal('60890000000000'); - expect(await ssvNetwork.getAddressBalance(account3.address)).to.equal('142090000000000'); - }); - - it('Revert withdraw: NotEnoughBalance', async function () { - await progressBlocks(350) - await expect(ssvNetwork.connect(account1) - .withdraw('800000000000000000')) - .to.be.revertedWith('NotEnoughBalance'); - await expect(ssvNetwork.connect(account2) - .withdraw('90000000000000000')) - .to.be.revertedWith('NotEnoughBalance'); - await expect(ssvNetwork.connect(account3) - .withdraw('25000000000000000')) - .to.be.revertedWith('NotEnoughBalance'); - }); - - it('Register same validator', async function () { - await expect(ssvNetwork.connect(account2).registerValidator(validatorsPub[0], operatorsIds.slice(0, 4), operatorsPub.slice(0, 4), operatorsPub.slice(0, 4), tokens)).to.be.revertedWith('ValidatorAlreadyExists'); - }); - - it('Register another validator', async function () { - await progressBlocks(600); - expect(await ssvNetwork.getAddressBalance(account1.address)).to.equal('99400000000000000'); - expect(await ssvNetwork.getAddressBalance(account2.address)).to.equal('180000000000000'); - expect(await ssvNetwork.getAddressBalance(account3.address)).to.equal('420000000000000'); - await ssvToken.connect(account2).approve(ssvNetwork.address, tokens); - await ssvNetwork.connect(account2).registerValidator(validatorsPub[1], operatorsIds.slice(0, 4), operatorsPub.slice(0, 4), operatorsPub.slice(0, 4), tokens); - await progressBlocks(100); - expect(await ssvNetwork.getAddressBalance(account1.address)).to.equal('99298000000000000'); - expect(await ssvNetwork.getAddressBalance(account2.address)).to.equal('100140600000000000'); - expect(await ssvNetwork.getAddressBalance(account3.address)).to.equal('561400000000000'); - }); - - it('Get validators by owner address', async function () { - expect(await ssvNetwork.getValidatorsByOwnerAddress(account1.address)).to.eql([validatorsPub[0]]); - }); - - it('Withdraw all when burn rate is positive', async function () { - await ssvToken.connect(account2).approve(ssvNetwork.address, tokens); - await ssvNetwork.connect(account2).registerValidator(validatorsPub[1], operatorsIds.slice(0, 4), operatorsPub.slice(0, 4), operatorsPub.slice(0, 4), tokens); - expect(await ssvNetwork.getAddressBurnRate(account1.address)).to.equal(1000000000000); - expect(await ssvNetwork.getAddressBurnRate(account2.address)).to.equal(400000000000); - expect(await ssvNetwork.getAddressBalance(account1.address)).to.equal('99998000000000000'); - expect(await ssvNetwork.getAddressBalance(account2.address)).to.equal('100000600000000000'); - await expect(ssvNetwork.connect(account1).withdrawAll()).to.be.revertedWith("BurnRatePositive"); - }); - - it('Liquidate when burn rate is positive', async function () { - await ssvToken.connect(account2).approve(ssvNetwork.address, tokens); - await ssvNetwork.connect(account2).registerValidator(validatorsPub[1], operatorsIds.slice(0, 4), operatorsPub.slice(0, 4), operatorsPub.slice(0, 4), tokens); - expect(await ssvNetwork.getAddressBurnRate(account1.address)).to.equal(1000000000000); - expect(await ssvNetwork.getAddressBurnRate(account2.address)).to.equal(400000000000); - expect(await ssvNetwork.getAddressBalance(account1.address)).to.equal('99998000000000000'); - expect(await ssvNetwork.getAddressBalance(account2.address)).to.equal('100000600000000000'); - await expect(ssvNetwork.connect(account1).liquidate([account1.address])).to.emit(ssvToken, 'Transfer').withArgs(ssvNetwork.address, account1.address, '99997000000000000'); - expect(await ssvToken.balanceOf(account1.address)).to.equal('99997000000000000'); - await ssvNetwork.connect(account1).registerValidator(validatorsPub[2], operatorsIds.slice(1, 5), operatorsPub.slice(1, 5), operatorsPub.slice(1, 5), 0); - expect(await ssvNetwork.getAddressBurnRate(account1.address)).to.equal(0); - expect(await ssvNetwork.getAddressBurnRate(account2.address)).to.equal('700000000000'); - await ssvNetwork.connect(account1).removeValidator(validatorsPub[2]); - expect(await ssvNetwork.getAddressBurnRate(account1.address)).to.equal(0); - expect(await ssvNetwork.getAddressBurnRate(account2.address)).to.equal('700000000000'); - await ssvNetwork.connect(account1).registerValidator(validatorsPub[2], operatorsIds.slice(1, 5), operatorsPub.slice(1, 5), operatorsPub.slice(1, 5), 0); - expect(await ssvNetwork.getAddressBurnRate(account1.address)).to.equal(0); - expect(await ssvNetwork.getAddressBurnRate(account2.address)).to.equal('700000000000'); - await ssvNetwork.connect(account1).removeValidator(validatorsPub[2]); - expect(await ssvNetwork.getAddressBurnRate(account1.address)).to.equal(0); - expect(await ssvNetwork.getAddressBurnRate(account2.address)).to.equal('700000000000'); - await ssvNetwork.connect(account1).registerValidator(validatorsPub[2], operatorsIds.slice(1, 5), operatorsPub.slice(1, 5), operatorsPub.slice(1, 5), 0); - expect(await ssvNetwork.getAddressBurnRate(account1.address)).to.equal(0); - expect(await ssvNetwork.getAddressBurnRate(account2.address)).to.equal('700000000000'); - await ssvNetwork.connect(account1).updateValidator(validatorsPub[2], operatorsIds.slice(0, 4), operatorsPub.slice(0, 4), operatorsPub.slice(0, 4), 0); - expect(await ssvNetwork.getAddressBurnRate(account1.address)).to.equal(0); - expect(await ssvNetwork.getAddressBurnRate(account2.address)).to.equal('700000000000'); - expect(await ssvNetwork.getAddressBalance(account1.address)).to.equal(0); - expect(await ssvNetwork.getAddressBalance(account2.address)).to.equal('99996000000000000'); - - await progressBlocks(100) - expect(await ssvNetwork.getAddressBalance(account2.address)).to.equal('99926000000000000'); - - await expect(ssvNetwork.connect(account1).reactivateAccount(0)).to.be.revertedWith('NotEnoughBalance'); - await ssvToken.mint(account1.address, '100000000000000000'); - await ssvToken.connect(account1).approve(ssvNetwork.address, '100000000000000000'); - await ssvNetwork.connect(account1).reactivateAccount('100000000000000000'); - await expect(ssvNetwork.connect(account1).reactivateAccount(0)).to.be.revertedWith('AccountAlreadyEnabled'); - - expect(await ssvNetwork.getAddressBurnRate(account1.address)).to.equal(2000000000000); - expect(await ssvNetwork.getAddressBurnRate(account2.address)).to.equal(100000000000); - - await progressBlocks(50) - expect(await ssvNetwork.getAddressBalance(account1.address)).to.equal('99898000000000000'); - expect(await ssvNetwork.getAddressBalance(account2.address)).to.equal('99918100000000000'); - }); - - it('Withdraw all when burn rate is non-positive', async function () { - await ssvNetwork.connect(account3).registerValidator(validatorsPub[2], operatorsIds.slice(0, 4), operatorsPub.slice(0, 4), operatorsPub.slice(0, 4), 0); - expect(await ssvNetwork.getAddressBurnRate(account3.address)).to.equal(0); - await expect(ssvNetwork.connect(account3).withdrawAll()).to.emit(ssvToken, 'Transfer').withArgs(ssvNetwork.address, account3.address, 1100000000000); - expect(await ssvNetwork.getAddressBalance(account3.address)).to.equal(0); - expect(await ssvNetwork.isLiquidated(account3.address)).to.equal(false); - expect(await ssvToken.balanceOf(account3.address)).to.equal(1100000000000); - }); - - it('Remove a validator', async function () { - await ssvNetwork.connect(account1).removeValidator(validatorsPub[0]); - await progressBlocks(99); - expect(await ssvNetwork.getAddressBalance(account1.address)).to.equal('99999000000000000'); - expect(await ssvNetwork.getAddressBalance(account2.address)).to.equal('300000000000'); - expect(await ssvNetwork.getAddressBalance(account3.address)).to.equal('700000000000'); - }); - - it('Try to approve when no pending fee', async function () { - await expect(ssvNetwork.connect(account3).executeOperatorFee(operatorsIds[3])).to.be.revertedWith('NoPendingFeeChangeRequest'); - }); - - it('Update operator fee', async function () { - await ssvNetwork.connect(account3).declareOperatorFee(operatorsIds[3], "44000000000"); - await ssvNetwork.connect(account3).executeOperatorFee(operatorsIds[3]); - await progressBlocks(99); - expect(await ssvNetwork.getAddressBalance(account1.address)).to.equal('99934244000000000'); - expect(await ssvNetwork.getAddressBalance(account2.address)).to.equal('30300000000000'); - expect(await ssvNetwork.getAddressBalance(account3.address)).to.equal('35456000000000'); - }); - - it('Register a validator with deposit', async function () { - await ssvToken.connect(account2).approve(ssvNetwork.address, tokens); - await ssvNetwork.connect(account2).registerValidator(validatorsPub[1], operatorsIds.slice(0, 4), operatorsPub.slice(0, 4), operatorsPub.slice(0, 4), tokens); - await progressBlocks(10); - expect(await ssvNetwork.getAddressBalance(account1.address)).to.equal('99988000000000000'); - expect(await ssvNetwork.getAddressBalance(account2.address)).to.equal('99996600000000000'); - expect(await ssvNetwork.getAddressBalance(account3.address)).to.equal('15400000000000'); - }); - - it('Activate a validator', async function () { - await ssvToken.connect(account2).approve(ssvNetwork.address, tokens); - await ssvNetwork.connect(account2).registerValidator(validatorsPub[1], operatorsIds.slice(0, 4), operatorsPub.slice(0, 4), operatorsPub.slice(0, 4), tokens); - await progressBlocks(10); - expect(await ssvNetwork.getAddressBalance(account1.address)).to.equal('99988000000000000'); - expect(await ssvNetwork.getAddressBalance(account2.address)).to.equal('99996600000000000'); - expect(await ssvNetwork.getAddressBalance(account3.address)).to.equal('15400000000000'); - }); - - it('Remove a validator when overdue', async function () { - await ssvNetwork.connect(account1).withdraw('92001000000000000'); - await progressBlocks(8000); - await expect(ssvNetwork.connect(account1).removeValidator(validatorsPub[0])).to.be.revertedWith('NegativeBalance'); - }); - - it('Balance when overdue', async function () { - await ssvNetwork.connect(account1).withdraw('92001000000000000'); - await progressBlocks(8000); - await expect(ssvNetwork.getAddressBalance(account1.address)).to.be.revertedWith('NegativeBalance'); - }); - - it('Update operator fee not from owner', async function () { - await expect(ssvNetwork.connect(account1).declareOperatorFee(operatorsIds[3], 6)).to.be.revertedWith('CallerNotOperatorOwner'); - }); - - it('Remove an operator not from owner', async function () { - await expect(ssvNetwork.connect(account1).removeOperator(operatorsIds[4])).to.be.revertedWith('CallerNotOperatorOwner'); - }); - - it('Remove an operator', async function () { - await ssvToken.connect(account2).approve(ssvNetwork.address, tokens); - await ssvNetwork.connect(account2).registerValidator(validatorsPub[2], operatorsIds.slice(1, 5), operatorsPub.slice(1, 5), operatorsPub.slice(1, 5), tokens); - expect(await ssvNetwork.getAddressBalance(account1.address)).to.equal('99998000000000000'); - expect(await ssvNetwork.getAddressBalance(account2.address)).to.equal('100000600000000000'); - expect(await ssvNetwork.getAddressBalance(account3.address)).to.equal('1400000000000'); - await progressBlocks(10) - expect(await ssvNetwork.getAddressBalance(account1.address)).to.equal('99988000000000000'); - expect(await ssvNetwork.getAddressBalance(account2.address)).to.equal('99991600000000000'); - expect(await ssvNetwork.getAddressBalance(account3.address)).to.equal('20400000000000'); - await ssvNetwork.connect(account2).removeValidator(validatorsPub[2]); - expect(await ssvNetwork.getAddressBalance(account1.address)).to.equal('99987000000000000'); - expect(await ssvNetwork.getAddressBalance(account2.address)).to.equal('99990700000000000'); - expect(await ssvNetwork.getAddressBalance(account3.address)).to.equal(22300000000000); - await progressBlocks(10); - expect(await ssvNetwork.getAddressBalance(account1.address)).to.equal('99977000000000000'); - expect(await ssvNetwork.getAddressBalance(account2.address)).to.equal('99993700000000000'); - expect(await ssvNetwork.getAddressBalance(account3.address)).to.equal(29300000000000); - await ssvNetwork.connect(account3).removeOperator(operatorsIds[4]); - await progressBlocks(9); - expect(await ssvNetwork.getAddressBalance(account1.address)).to.equal('99967000000000000'); - expect(await ssvNetwork.getAddressBalance(account2.address)).to.equal('99996700000000000'); - expect(await ssvNetwork.getAddressBalance(account3.address)).to.equal(36300000000000); - }); - - it('Deactivate an operator', async function () { - await progressBlocks(10) - expect(await ssvNetwork.getAddressBalance(account1.address)).to.equal('99990000000000000'); - expect(await ssvNetwork.getAddressBalance(account2.address)).to.equal('3000000000000'); - expect(await ssvNetwork.getAddressBalance(account3.address)).to.equal('7000000000000'); - await ssvNetwork.connect(account1).removeValidator(validatorsPub[0]); - expect(await ssvNetwork.getAddressBalance(account1.address)).to.equal('99989000000000000'); - expect(await ssvNetwork.getAddressBalance(account2.address)).to.equal('3300000000000'); - expect(await ssvNetwork.getAddressBalance(account3.address)).to.equal('7700000000000'); - await progressBlocks(10); - expect(await ssvNetwork.getAddressBalance(account1.address)).to.equal('99989000000000000'); - expect(await ssvNetwork.getAddressBalance(account2.address)).to.equal('3300000000000'); - expect(await ssvNetwork.getAddressBalance(account3.address)).to.equal('7700000000000'); - await ssvNetwork.connect(account3).removeOperator(operatorsIds[4]); - await progressBlocks(9); - expect(await ssvNetwork.getAddressBalance(account1.address)).to.equal('99989000000000000'); - expect(await ssvNetwork.getAddressBalance(account2.address)).to.equal('3300000000000'); - expect(await ssvNetwork.getAddressBalance(account3.address)).to.equal('7700000000000'); - expect((await ssvRegistry.getOperatorById(operatorsIds[4]))[1]).to.equal(account3.address); - expect((await ssvRegistry.getOperatorById(operatorsIds[4]))[6]).to.equal(false); - }); - - it('Operator max fee increase', async function () { - expect(await ssvNetwork.getOperatorFeeIncreaseLimit()).to.equal(1000); - await expect(ssvNetwork.connect(account2).declareOperatorFee(operatorsIds[0], 1200000000000)).to.be.revertedWith('FeeExceedsIncreaseLimit'); - await expect(ssvNetwork.connect(account2).declareOperatorFee(operatorsIds[1], 2400000000000)).to.be.revertedWith('FeeExceedsIncreaseLimit'); - await ssvNetwork.connect(account2).declareOperatorFee(operatorsIds[0], 11000000000); - await ssvNetwork.connect(account2).executeOperatorFee(operatorsIds[0]); - expect(await ssvNetwork.getOperatorFee(operatorsIds[0])).to.equal(11000000000); - await ssvNetwork.updateOperatorFeeIncreaseLimit(2000); - expect(await ssvNetwork.getOperatorFeeIncreaseLimit()).to.equal(2000); - await expect(ssvNetwork.connect(account2).declareOperatorFee(operatorsIds[1], 250000000000)).to.be.revertedWith('FeeExceedsIncreaseLimit'); - await ssvNetwork.connect(account2).declareOperatorFee(operatorsIds[1], 24000000000); - await ssvNetwork.connect(account2).executeOperatorFee(operatorsIds[1]); - }); - - it('Update operator max fee increase emits event', async function () { - await expect(ssvNetwork.updateOperatorFeeIncreaseLimit(200)).to.emit(ssvNetwork, 'OperatorFeeIncreaseLimitUpdate').withArgs(200); - }); - - it('Minimum blocks before liquidation', async function () { - expect(await ssvNetwork.getLiquidationThresholdPeriod()).to.equal(7000); - await expect(ssvNetwork.updateLiquidationThresholdPeriod(6569)).to.be.revertedWith('BelowMinimumBlockPeriod'); - await ssvNetwork.updateLiquidationThresholdPeriod(7001); - expect(await ssvNetwork.getLiquidationThresholdPeriod()).to.equal(7001); - }); - - it('Update minimum blocks before liquidation emits event', async function () { - await expect(ssvNetwork.updateLiquidationThresholdPeriod(9999999999999)).to.emit(ssvNetwork, 'LiquidationThresholdPeriodUpdate').withArgs(9999999999999); - }); - - it('Set network fee', async function () { - expect(await ssvNetwork.getNetworkFee()).to.equal('0'); - await expect(ssvNetwork.updateNetworkFee(10000000)).to.emit(ssvNetwork, 'NetworkFeeUpdate').withArgs('0', '10000000'); - expect(await ssvNetwork.getNetworkFee()).to.equal('10000000'); - await progressBlocks(20); - expect(await ssvNetwork.getNetworkEarnings()).to.equal(200000000); - }); - - it('Withdraw network fees', async function () { - await expect(ssvNetwork.updateNetworkFee(10000000)).to.emit(ssvNetwork, 'NetworkFeeUpdate').withArgs('0', '10000000'); - await progressBlocks(20); - await expect(ssvNetwork.connect(account2).withdrawNetworkEarnings(6000000000)).to.be.revertedWith('Ownable: caller is not the owner'); - await expect(ssvNetwork.withdrawNetworkEarnings(80000000000000)).to.be.revertedWith('NotEnoughBalance'); - await expect(ssvNetwork.withdrawNetworkEarnings(200000000)).to.emit(ssvToken, 'Transfer').withArgs(ssvNetwork.address, owner.address, '200000000'); - expect(await ssvNetwork.getNetworkEarnings()).to.equal(30000000); - await expect(ssvNetwork.withdrawNetworkEarnings(60000000000000)).to.be.revertedWith('NotEnoughBalance'); - }); - - it('Update declare operator fee period', async function () { - await expect(ssvNetwork.updateDeclareOperatorFeePeriod(DAY)); - expect(await ssvNetwork.getDeclaredOperatorFeePeriod()).to.equal(DAY); - }); - - it('Update execute operator fee period', async function () { - await expect(ssvNetwork.updateExecuteOperatorFeePeriod(DAY)) - expect(await ssvNetwork.getExecuteOperatorFeePeriod()).to.equal(DAY); - }); - - it('Create an operator with low fee', async function () { - await expect(ssvNetwork.connect(account3).registerOperator('testOperator 5', operatorsIds[5], 1000)).to.be.revertedWith('Precision is over the maximum defined'); - }); - - it('Fee change request', async function () { - await expect(ssvNetwork.updateDeclareOperatorFeePeriod(DAY)) - await expect(ssvNetwork.updateExecuteOperatorFeePeriod(DAY)) - await ssvNetwork.connect(account3).declareOperatorFee(operatorsIds[3], '41000000000'); - expect(await ssvNetwork.getOperatorFee(operatorsIds[3])).to.equal(400000000000); - const currentBlockTime = await utils.blockTimestamp(); - expect((await ssvNetwork.getOperatorDeclaredFee(operatorsIds[3])).map((v: any) => v.toString())).to.eql(['41000000000', (+currentBlockTime + DAY).toString(), (+currentBlockTime + 2 * DAY).toString()]); - - //approve fee too soon - await expect(ssvNetwork.connect(account3).executeOperatorFee(operatorsIds[3])).to.be.revertedWith('ApprovalNotWithinTimeframe'); - - // Approve too late - await progressTime(3 * DAY) - await expect(ssvNetwork.connect(account3).executeOperatorFee(operatorsIds[3])).to.be.revertedWith('ApprovalNotWithinTimeframe'); - - // Cancel set operator fee - await ssvNetwork.connect(account3).declareOperatorFee(operatorsIds[3], '41000000000'); - await ssvNetwork.connect(account3).cancelDeclaredOperatorFee(operatorsIds[3]); - expect(await ssvNetwork.getOperatorFee(operatorsIds[3])).to.equal('400000000000'); - expect((await ssvNetwork.getOperatorDeclaredFee(operatorsIds[3])).map((v: any) => v.toString())).to.eql(['0', '0', '0']); - - // Approve fee on time - await ssvNetwork.connect(account3).declareOperatorFee(operatorsIds[3], '41000000000'); - await progressTime(DAY * 15 / 10) - await ssvNetwork.connect(account3).executeOperatorFee(operatorsIds[3]) - expect(await ssvNetwork.getOperatorFee(operatorsIds[3])).to.equal('41000000000'); - expect((await ssvNetwork.getOperatorDeclaredFee(operatorsIds[3])).map((v: any) => v.toString())).to.eql(['0', '0', '0']); - - // update fee with low fee - await expect(ssvNetwork.connect(account3).declareOperatorFee(operatorsIds[3], 1000)).to.be.revertedWith('Precision is over the maximum defined'); - }); - - it('Deposit account from another address', async function () { - const balanceBefore = +await ssvNetwork.getAddressBalance(account4.address); - const tokens = 100000000; - await ssvToken.connect(owner).approve(ssvNetwork.address, tokens) - await ssvNetwork.connect(owner).deposit(account4.address, tokens); - expect(await ssvNetwork.getAddressBalance(account4.address)).to.equal(balanceBefore + tokens); - }); -}); \ No newline at end of file diff --git a/test/unit/ssv-registry.ts b/test/unit/ssv-registry.ts deleted file mode 100644 index c18f6fbb..00000000 --- a/test/unit/ssv-registry.ts +++ /dev/null @@ -1,105 +0,0 @@ -// Registry Contract Unit Tests - -// Declare all imports -import { ethers, upgrades } from 'hardhat' -import * as chai from 'chai' -import chaiAsPromised from 'chai-as-promised' -beforeEach(() => { - chai.should() - chai.use(chaiAsPromised) -}) -const { expect } = chai - -// Define global variables -const operatorPublicKeyPrefix = '12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345' -const operatorPublicKeyPrefix2 = '12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012346'; -const validatorPublicKeyPrefix = '98765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765' -let ssvRegistry: any, owner: any, account1: any, account2: any, account3: any -const operatorsPub = Array.from(Array(10).keys()).map(k => `0x${operatorPublicKeyPrefix}${k}`) -const operatorsPub2 = Array.from(Array(10).keys()).map(k => `0x${operatorPublicKeyPrefix2}${k}`); -const validatorsPub = Array.from(Array(10).keys()).map(k => `0x${validatorPublicKeyPrefix}${k}`) -const operatorsIds = Array.from(Array(10).keys()).map(k => k + 1) - -describe('SSV Registry Contract', function () { - beforeEach(async function () { - [owner, account1, account2, account3] = await ethers.getSigners() - const ssvRegistryFactory = await ethers.getContractFactory('SSVRegistry') - ssvRegistry = await upgrades.deployProxy(ssvRegistryFactory, []); - await ssvRegistry.deployed() - await ssvRegistry.registerOperator('testOperator 0', account1.address, operatorsPub[0], 100000000000) - await ssvRegistry.registerOperator('testOperator 1', account1.address, operatorsPub[1], 200000000000) - await ssvRegistry.registerOperator('testOperator 2', account1.address, operatorsPub[2], 300000000000) - await ssvRegistry.registerOperator('testOperator 3', account2.address, operatorsPub[3], 400000000000) - await ssvRegistry.registerOperator('testOperator 4', account2.address, operatorsPub[4], 500000000000) - await ssvRegistry.registerValidator(account1.address, validatorsPub[0], operatorsIds.slice(0, 4), operatorsPub.slice(0, 4), operatorsPub.slice(0, 4)) - await ssvRegistry.registerValidator(account1.address, validatorsPub[1], operatorsIds.slice(0, 4), operatorsPub.slice(0, 4), operatorsPub.slice(0, 4)) - await ssvRegistry.registerValidator(account2.address, validatorsPub[2], operatorsIds.slice(0, 4), operatorsPub.slice(0, 4), operatorsPub.slice(0, 4)) - }) - - it('Check contract version', async function () { - expect(await ssvRegistry.version()).to.equal(1) - }); - - it('Operator limit', async function () { - await ssvRegistry.registerOperator('testOperator 5', account1.address, operatorsPub[5], 500000000000); - await ssvRegistry.registerOperator('testOperator 6', account1.address, operatorsPub[6], 500000000000); - await ssvRegistry.registerOperator('testOperator 7', account1.address, operatorsPub[7], 500000000000); - await ssvRegistry.registerOperator('testOperator 8', account1.address, operatorsPub[8], 500000000000); - await ssvRegistry.registerOperator('testOperator 9', account1.address, operatorsPub[9], 500000000000); - await ssvRegistry.registerOperator('testOperator 10', account1.address, operatorsPub2[0], 500000000000); - await ssvRegistry.registerOperator('testOperator 11', account1.address, operatorsPub2[1], 500000000000); - await expect(ssvRegistry.registerOperator('testOperator 12', account1.address, operatorsPub2[2], 500000000000)).to.be.revertedWith("ExceedRegisteredOperatorsByAccountLimit") - }) - - it('Remove Operator', async function () { - await ssvRegistry.removeOperator(1); - await expect(ssvRegistry.removeOperator(1)).to.be.revertedWith("OperatorDeleted") - }) - - it('Register validators with errors', async () => { - await expect(ssvRegistry.registerValidator(account3.address, "0x12345678", operatorsIds.slice(0, 4), operatorsPub.slice(0, 4), operatorsPub.slice(0, 4))).to.be.revertedWith('InvalidPublicKeyLength') - await expect(ssvRegistry.registerValidator(account3.address, validatorsPub[3], operatorsIds.slice(0, 3), operatorsPub.slice(0, 4), operatorsPub.slice(0, 4))).to.be.revertedWith('OessDataStructureInvalid') - await expect(ssvRegistry.registerValidator(account3.address, validatorsPub[3], operatorsIds.slice(0, 4), operatorsPub.slice(0, 3), operatorsPub.slice(0, 4))).to.be.revertedWith('OessDataStructureInvalid') - await expect(ssvRegistry.registerValidator(account3.address, validatorsPub[3], operatorsIds.slice(0, 4), operatorsPub.slice(0, 4), operatorsPub.slice(0, 3))).to.be.revertedWith('OessDataStructureInvalid') - await expect(ssvRegistry.registerValidator(account3.address, validatorsPub[3], operatorsIds.slice(0, 1), operatorsPub.slice(0, 1), operatorsPub.slice(0, 1))).to.be.revertedWith('OessDataStructureInvalid') - await expect(ssvRegistry.registerValidator(account3.address, validatorsPub[3], operatorsIds.slice(0, 3), operatorsPub.slice(0, 3), operatorsPub.slice(0, 3))).to.be.revertedWith('OessDataStructureInvalid') - await ssvRegistry.removeOperator(1); - await expect(ssvRegistry.registerValidator(account3.address, validatorsPub[3], operatorsIds.slice(0, 4), operatorsPub.slice(0, 4), operatorsPub.slice(0, 4))).to.be.revertedWith('OperatorDeleted') - }) - - it('Register a valid validator', async () => { - await ssvRegistry.registerValidator(account3.address, validatorsPub[3], operatorsIds.slice(1, 5), operatorsPub.slice(1, 5), operatorsPub.slice(1, 5)); - expect((await ssvRegistry.validatorsPerOperatorCount(1)).toString()).to.equal('3') - expect((await ssvRegistry.validatorsPerOperatorCount(2)).toString()).to.equal('4') - expect((await ssvRegistry.validatorsPerOperatorCount(5)).toString()).to.equal('1') - }) - - it('Validators getter', async () => { - expect((await ssvRegistry.validators(validatorsPub[0])).map((v: any) => v.toString())).to.eql([account1.address, validatorsPub[0], 'true']) - expect((await ssvRegistry.validators(validatorsPub[1])).map((v: any) => v.toString())).to.eql([account1.address, validatorsPub[1], 'true']) - expect((await ssvRegistry.validators(validatorsPub[2])).map((v: any) => v.toString())).to.eql([account2.address, validatorsPub[2], 'true']) - }) - - it('Get validators by address', async () => { - expect(await ssvRegistry.getValidatorsByAddress(account1.address)).to.eql([validatorsPub[0], validatorsPub[1]]) - expect(await ssvRegistry.getValidatorsByAddress(account2.address)).to.eql([validatorsPub[2]]) - }) - - it('Get validator owner', async () => { - expect(await ssvRegistry.getValidatorOwner(validatorsPub[0])).to.equal(account1.address) - expect(await ssvRegistry.getValidatorOwner(validatorsPub[2])).to.equal(account2.address) - }) - - it('Disable owner validators', async () => { - expect(await ssvRegistry.isLiquidated(account1.address)).to.equal(false) - await ssvRegistry.disableOwnerValidators(account1.address) - expect(await ssvRegistry.isLiquidated(account1.address)).to.equal(true) - }) - - it('Enable owner validators', async () => { - await ssvRegistry.disableOwnerValidators(account1.address) - expect(await ssvRegistry.isLiquidated(account1.address)).to.equal(true) - await ssvRegistry.enableOwnerValidators(account1.address) - expect(await ssvRegistry.isLiquidated(account1.address)).to.equal(false) - }) -}) \ No newline at end of file diff --git a/test/unit/validator-register.ts b/test/unit/validator-register.ts deleted file mode 100644 index 07449296..00000000 --- a/test/unit/validator-register.ts +++ /dev/null @@ -1,104 +0,0 @@ -// Validators Registration Unit Tests - -// Declare all imports -import * as chai from 'chai' -import chaiAsPromised from 'chai-as-promised' -beforeEach(() => { - chai.should() - chai.use(chaiAsPromised) -}) -declare var ethers: any -declare var upgrades: any -const { expect } = chai - -// Define global variables -const DAY = 86400 -const minimumBlocksBeforeLiquidation = 7000 -const operatorMaxFeeIncrease = 10 -const setOperatorFeePeriod = 0 -const approveOperatorFeePeriod = DAY -const operatorPublicKeyPrefix = '12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345' -const validatorPublicKeyPrefix = '98765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765' -let ssvToken: any, ssvRegistry: any, ssvNetwork: any -let owner: any, account1: any, account2: any, account3: any -const operatorsPub = Array.from(Array(10).keys()).map(k => `0x${operatorPublicKeyPrefix}${k}`) -const validatorsPub = Array.from(Array(10).keys()).map(k => `0x${validatorPublicKeyPrefix}${k}`) -const operatorsIds = Array.from(Array(10).keys()).map(k => k + 1) -const tokens = '8000000000000000' - -describe('Validator Registration', function () { - beforeEach(async function () { - [owner, account1, account2, account3] = await ethers.getSigners() - const ssvTokenFactory = await ethers.getContractFactory('SSVTokenMock') - const ssvRegistryFactory = await ethers.getContractFactory('SSVRegistry') - const ssvNetworkFactory = await ethers.getContractFactory('SSVNetwork') - ssvToken = await ssvTokenFactory.deploy() - ssvRegistry = await upgrades.deployProxy(ssvRegistryFactory, { initializer: false }) - await ssvToken.deployed() - await ssvRegistry.deployed() - ssvNetwork = await upgrades.deployProxy(ssvNetworkFactory, [ssvRegistry.address, ssvToken.address, minimumBlocksBeforeLiquidation, operatorMaxFeeIncrease, setOperatorFeePeriod, approveOperatorFeePeriod]) - await ssvNetwork.deployed() - - // Mint tokens - await ssvToken.mint(account1.address, '80000000000000000') - - // Register operators - await ssvNetwork.connect(account2).registerOperator('testOperator 0', operatorsPub[0], 100000000000) - await ssvNetwork.connect(account2).registerOperator('testOperator 1', operatorsPub[1], 200000000000) - await ssvNetwork.connect(account3).registerOperator('testOperator 2', operatorsPub[2], 300000000000) - await ssvNetwork.connect(account3).registerOperator('testOperator 3', operatorsPub[3], 400000000000) - await ssvNetwork.connect(account3).registerOperator('testOperator 4', operatorsPub[4], 500000000000) - - // Register Validator - await ssvToken.connect(account1).approve(ssvNetwork.address, tokens) - await expect(ssvNetwork.connect(account1).registerValidator( - validatorsPub[0], operatorsIds.slice(0, 4), operatorsPub.slice(0, 4), operatorsPub.slice(0, 4), tokens)) - .to.emit(ssvNetwork, 'ValidatorRegistration') - }) - - it('Get operators by validator', async function () { - expect((await ssvNetwork.getOperatorsByValidator(validatorsPub[0])).map(String)).to.eql(operatorsIds.slice(0, 4).map(String)) - }) - - it('Register validator errors', async function () { - // Register validator not enough approved tokens - await ssvToken.connect(account1).transfer(account2.address, tokens); - await ssvNetwork.connect(account2).registerValidator( - validatorsPub[1], operatorsIds.slice(0, 4), operatorsPub.slice(0, 4), operatorsPub.slice(0, 4), '10000') - .should.eventually.be.rejectedWith('ERC20: insufficient allowance') - - // Register validator not enough tokens - await ssvToken.connect(account1).approve(ssvNetwork.address, 1); - await ssvNetwork.connect(account2).registerValidator( - validatorsPub[1], operatorsIds.slice(0, 4), operatorsPub.slice(0, 4), operatorsPub.slice(0, 4), '10000') - .should.eventually.be.rejectedWith('ERC20: insufficient allowance') - - // Register validator invalid public key - await ssvToken.connect(account1).approve(ssvNetwork.address, tokens); - await ssvNetwork.connect(account2).registerValidator( - '0x894350h3498345h', operatorsIds.slice(0, 4), operatorsPub.slice(0, 4), operatorsPub.slice(0, 4), '10000') - .should.eventually.be.rejectedWith('invalid arrayify value') - - // Register validator invalid operator ids - await ssvNetwork.connect(account2).registerValidator( - validatorsPub[1], operatorsIds.slice(3, 7), operatorsPub.slice(0, 4), operatorsPub.slice(0, 4), '10000') - .should.eventually.be.rejectedWith('OperatorDeleted') - - // Register validator invalid shares - await ssvNetwork.connect(account2).registerValidator( - validatorsPub[1], operatorsIds.slice(0, 4), ['0x89435h3498345h', '0x89435h3398345h', '0x89435h3441345h', '0x89435h3498d45h'], operatorsPub.slice(0, 4), '10000') - .should.eventually.be.rejectedWith('invalid arrayify value') - - // Register validator invalid enrypted keys - await ssvNetwork.connect(account2).registerValidator( - validatorsPub[1], operatorsIds.slice(0, 4), operatorsPub.slice(0, 4), ['0x89435h3498345h', '0x89435h3398345h', '0x89435h3441345h', '0x89435h3498d45h'], '10000') - .should.eventually.be.rejectedWith('invalid arrayify value') - - // Register validator invalid amount - await ssvNetwork.connect(account2).registerValidator( - validatorsPub[1], operatorsIds.slice(0, 4), operatorsPub.slice(0, 4), ['0x89435h3498345h', '0x89435h3398345h', '0x89435h3441345h', '0x89435h3498d45h'], 1) - .should.eventually.be.rejectedWith('invalid arrayify value') - - expect((await ssvRegistry.activeValidatorCount()).toString()).to.equal('1') - }) -}) diff --git a/test/unit/validator-remove.ts b/test/unit/validator-remove.ts deleted file mode 100644 index 5ab2f874..00000000 --- a/test/unit/validator-remove.ts +++ /dev/null @@ -1,93 +0,0 @@ -// Validator Remove Unit Tests - -// Declare all imports -import * as chai from 'chai' -import chaiAsPromised from 'chai-as-promised' -import { progressBlocks } from '../helpers/utils' -beforeEach(() => { - chai.should() - chai.use(chaiAsPromised) -}) -declare var ethers: any -declare var upgrades: any -const { expect } = chai - -// Define global variables -const DAY = 86400 -const minimumBlocksBeforeLiquidation = 7000 -const operatorMaxFeeIncrease = 10 -const setOperatorFeePeriod = 0 -const approveOperatorFeePeriod = DAY -const operatorPublicKeyPrefix = '12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345' -const validatorPublicKeyPrefix = '98765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765' -let ssvToken: any, ssvRegistry: any, ssvNetwork: any -let owner: any, account1: any, account2: any, account3: any -const operatorsPub = Array.from(Array(10).keys()).map(k => `0x${operatorPublicKeyPrefix}${k}`) -const validatorsPub = Array.from(Array(10).keys()).map(k => `0x${validatorPublicKeyPrefix}${k}`) -const operatorsIds = Array.from(Array(10).keys()).map(k => k + 1) - -describe('Validator Removal', function () { - beforeEach(async function () { - [owner, account1, account2, account3] = await ethers.getSigners() - const ssvTokenFactory = await ethers.getContractFactory('SSVTokenMock') - const ssvRegistryFactory = await ethers.getContractFactory('SSVRegistry') - const ssvNetworkFactory = await ethers.getContractFactory('SSVNetwork') - ssvToken = await ssvTokenFactory.deploy() - ssvRegistry = await upgrades.deployProxy(ssvRegistryFactory, { initializer: false }) - await ssvToken.deployed() - await ssvRegistry.deployed() - ssvNetwork = await upgrades.deployProxy(ssvNetworkFactory, [ssvRegistry.address, ssvToken.address, minimumBlocksBeforeLiquidation, operatorMaxFeeIncrease, setOperatorFeePeriod, approveOperatorFeePeriod]) - await ssvNetwork.deployed() - - // Mint tokens - const tokens = '10501500000000000' - await ssvToken.mint(account1.address, tokens) - - // Register operators - await ssvNetwork.connect(account2).registerOperator('testOperator 0', operatorsPub[0], 100000000000) - await ssvNetwork.connect(account2).registerOperator('testOperator 1', operatorsPub[1], 200000000000) - await ssvNetwork.connect(account3).registerOperator('testOperator 2', operatorsPub[2], 300000000000) - await ssvNetwork.connect(account3).registerOperator('testOperator 3', operatorsPub[3], 400000000000) - await ssvNetwork.connect(account3).registerOperator('testOperator 4', operatorsPub[4], 500000000000) - - // Register Validator - await ssvToken.connect(account1).approve(ssvNetwork.address, tokens) - await expect(ssvNetwork.connect(account1).registerValidator( - validatorsPub[0], operatorsIds.slice(0, 4), operatorsPub.slice(0, 4), operatorsPub.slice(0, 4), tokens)) - .to.emit(ssvNetwork, 'ValidatorRegistration') - }) - - it('Remove validator', async function () { - await expect(ssvNetwork.connect(account1).removeValidator(validatorsPub[0])) - .to.emit(ssvNetwork, 'ValidatorRemoval').withArgs(account1.address, validatorsPub[0]) - expect((await ssvRegistry.activeValidatorCount()).toString()).to.equal('0') - - // Try to remove the validator again - await ssvNetwork.connect(account1).removeValidator(validatorsPub[0]) - .should.eventually.be.rejectedWith('ValidatorWithPublicKeyNotExist') - }) - - it('Remove validator non existent key', async function () { - await ssvNetwork.connect(account2).removeValidator(validatorsPub[1]) - .should.eventually.be.rejectedWith('ValidatorWithPublicKeyNotExist') - }) - - it('Remove validator sent by non owner', async function () { - await ssvNetwork.connect(account2).removeValidator(validatorsPub[0]) - .should.eventually.be.rejectedWith('CallerNotValidatorOwner') - }) - - it('Remove validator with not enough SSV', async function () { - await ssvNetwork.connect(account1).withdraw('2501500000000000'); - await progressBlocks(8000); - await ssvNetwork.connect(account1).removeValidator(validatorsPub[0]) - .should.eventually.be.rejectedWith('NegativeBalance') - }) - - // Need to update once functionality added - // it('Remove validator as DAO', async function () { - // await expect(ssvNetwork.connect(owner).removeValidator(validatorsPub[0])) - // .to.emit(ssvRegistry, 'ValidatorRemoved').withArgs(account1.address, validatorsPub[0]) - // expect((await ssvRegistry.activeValidatorCount()).toString()).to.equal('0') - // }) -}) diff --git a/test/unit/validator-update.ts b/test/unit/validator-update.ts deleted file mode 100644 index bd691c0b..00000000 --- a/test/unit/validator-update.ts +++ /dev/null @@ -1,106 +0,0 @@ -// Validator Update Unit Tests - -// Declare all imports -import * as chai from 'chai' -import chaiAsPromised from 'chai-as-promised' -beforeEach(() => { - chai.should() - chai.use(chaiAsPromised) -}) -declare var ethers: any -declare var upgrades: any -const { expect } = chai - -// Define global variables -const DAY = 86400 -const minimumBlocksBeforeLiquidation = 7000 -const operatorMaxFeeIncrease = 10 -const setOperatorFeePeriod = 0 -const approveOperatorFeePeriod = DAY -const operatorPublicKeyPrefix = '12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345' -const validatorPublicKeyPrefix = '98765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765' -let ssvToken: any, ssvRegistry: any, ssvNetwork: any -let owner: any, account1: any, account2: any, account3: any -const operatorsPub = Array.from(Array(10).keys()).map(k => `0x${operatorPublicKeyPrefix}${k}`) -const validatorsPub = Array.from(Array(10).keys()).map(k => `0x${validatorPublicKeyPrefix}${k}`) -const operatorsIds = Array.from(Array(10).keys()).map(k => k + 1) -const tokens = '10000000000000' - -describe('Validator Update', function () { - beforeEach(async function () { - [owner, account1, account2, account3] = await ethers.getSigners() - const ssvTokenFactory = await ethers.getContractFactory('SSVTokenMock') - const ssvRegistryFactory = await ethers.getContractFactory('SSVRegistry') - const ssvNetworkFactory = await ethers.getContractFactory('SSVNetwork') - ssvToken = await ssvTokenFactory.deploy() - ssvRegistry = await upgrades.deployProxy(ssvRegistryFactory, { initializer: false }) - await ssvToken.deployed() - await ssvRegistry.deployed() - ssvNetwork = await upgrades.deployProxy(ssvNetworkFactory, [ssvRegistry.address, ssvToken.address, minimumBlocksBeforeLiquidation, operatorMaxFeeIncrease, setOperatorFeePeriod, approveOperatorFeePeriod]) - await ssvNetwork.deployed() - - // Mint tokens - await ssvToken.mint(account1.address, '30501500000000000') - - // Register operators - await ssvNetwork.connect(account2).registerOperator('testOperator 0', operatorsPub[0], 100000000000) - await ssvNetwork.connect(account2).registerOperator('testOperator 1', operatorsPub[1], 200000000000) - await ssvNetwork.connect(account3).registerOperator('testOperator 2', operatorsPub[2], 300000000000) - await ssvNetwork.connect(account3).registerOperator('testOperator 3', operatorsPub[3], 400000000000) - await ssvNetwork.connect(account3).registerOperator('testOperator 4', operatorsPub[4], 500000000000) - - // Register Validator - const tokens = '10501500000000000' - await ssvToken.connect(account1).approve(ssvNetwork.address, tokens) - await expect(ssvNetwork.connect(account1).registerValidator( - validatorsPub[0], operatorsIds.slice(0, 4), operatorsPub.slice(0, 4), operatorsPub.slice(0, 4), tokens)) - .to.emit(ssvNetwork, 'ValidatorRegistration') - }) - - it('Update validator', async function () { - const tokens = '10000000000000' - await ssvToken.connect(account1).approve(ssvNetwork.address, tokens) - const tx = ssvNetwork.connect(account1) - .updateValidator(validatorsPub[0], operatorsIds.slice(0, 4), operatorsPub.slice(0, 4), operatorsPub.slice(0, 4), tokens) - await expect(tx).to.emit(ssvNetwork, 'ValidatorRemoval') - await expect(tx).to.emit(ssvNetwork, 'ValidatorRegistration') - }) - - it('Update validator errorsr', async function () { - const tokens = '10501500000000000' - await ssvToken.connect(account1).approve(ssvNetwork.address, tokens) - await ssvNetwork.connect(account2) - .updateValidator(validatorsPub[0], operatorsIds.slice(0, 4), operatorsPub.slice(0, 4), operatorsPub.slice(0, 4), tokens - ).should.eventually.be.rejectedWith('CallerNotValidatorOwner') - - // Update validator not enough ssv - await ssvNetwork.connect(account2).updateValidator( - '0x89435h3498345h', operatorsIds.slice(0, 4), operatorsPub.slice(0, 4), operatorsPub.slice(0, 4), '20000000000') - .should.eventually.be.rejectedWith('invalid arrayify value') - - // Update validator invalid public key - await ssvNetwork.connect(account2).updateValidator( - '0x89435h3498345h', operatorsIds.slice(0, 4), operatorsPub.slice(0, 4), operatorsPub.slice(0, 4), '10000') - .should.eventually.be.rejectedWith('invalid arrayify value') - - // Update validator invalid operator ids - await ssvNetwork.connect(account2).updateValidator( - validatorsPub[1], operatorsIds.slice(3, 7), operatorsPub.slice(0, 4), operatorsPub.slice(0, 4), '10000') - .should.eventually.be.rejectedWith('ValidatorWithPublicKeyNotExist') - - // Update validator invalid shares - await ssvNetwork.connect(account2).updateValidator( - validatorsPub[1], operatorsIds.slice(0, 4), ['0x89435h3498345h', '0x89435h3398345h', '0x89435h3441345h', '0x89435h3498d45h'], operatorsPub.slice(0, 4), '10000') - .should.eventually.be.rejectedWith('invalid arrayify value') - - // Update validator invalid enrypted keys - await ssvNetwork.connect(account2).updateValidator( - validatorsPub[1], operatorsIds.slice(0, 4), operatorsPub.slice(0, 4), ['0x89435h3498345h', '0x89435h3398345h', '0x89435h3441345h', '0x89435h3498d45h'], '10000') - .should.eventually.be.rejectedWith('invalid arrayify value') - - // Update validator invalid amount - await ssvNetwork.connect(account2).updateValidator( - validatorsPub[1], operatorsIds.slice(0, 4), operatorsPub.slice(0, 4), ['0x89435h3498345h', '0x89435h3398345h', '0x89435h3441345h', '0x89435h3498d45h'], 1) - .should.eventually.be.rejectedWith('invalid arrayify value') - }) -}) diff --git a/test/validators/register.ts b/test/validators/register.ts new file mode 100644 index 00000000..0511a92a --- /dev/null +++ b/test/validators/register.ts @@ -0,0 +1,156 @@ +import * as helpers from '../helpers/contract-helpers'; +import * as utils from '../helpers/utils'; + +import { expect } from 'chai'; +import { trackGas, GasGroup } from '../helpers/gas-usage'; + +let ssvNetworkContract: any, clusterResult: any, minDepositAmount: any; + +describe('Register Validator Tests', () => { + beforeEach(async () => { + // Initialize contract + ssvNetworkContract = (await helpers.initializeContract()).contract; + + // Register operators + await helpers.registerOperators(0, 11, helpers.CONFIG.minimalOperatorFee); + + minDepositAmount = (helpers.CONFIG.minimalBlocksBeforeLiquidation + 2) * helpers.CONFIG.minimalOperatorFee * 4; + + // Register a validator + clusterResult = await helpers.registerValidators(0, 1, minDepositAmount, helpers.DataGenerator.cluster.new(), [GasGroup.REGISTER_VALIDATOR_NEW_STATE]); + }); + + it('Register new pod emits PodCreated event', async () => { + await helpers.DB.ssvToken.connect(helpers.DB.owners[1]).approve(ssvNetworkContract.address, minDepositAmount); + await expect(ssvNetworkContract.connect(helpers.DB.owners[1]).registerPod(helpers.DataGenerator.cluster.new(), minDepositAmount)).to.emit(ssvNetworkContract, 'PodCreated'); + }); + + it('Register new pod with new cluster gas limit', async () => { + await helpers.DB.ssvToken.connect(helpers.DB.owners[1]).approve(ssvNetworkContract.address, minDepositAmount); + await trackGas(ssvNetworkContract.connect(helpers.DB.owners[1]).registerPod(helpers.DataGenerator.cluster.new(), minDepositAmount), [GasGroup.REGISTER_POD]); + }); + + it('Register new pod in existed cluster gas limit', async () => { + await helpers.DB.ssvToken.connect(helpers.DB.owners[1]).approve(ssvNetworkContract.address, minDepositAmount); + await trackGas(ssvNetworkContract.connect(helpers.DB.owners[1]).registerPod(helpers.DataGenerator.cluster.byId(clusterResult.clusterId), minDepositAmount), [GasGroup.REGISTER_POD]); + }); + + it('Register pod returns an error - PodAlreadyExists', async () => { + await expect(ssvNetworkContract.registerPod(helpers.DataGenerator.cluster.byId(clusterResult.clusterId), 0)).to.be.revertedWith('PodAlreadyExists'); + }); + + it('Get cluster id returns an error - ClusterNotExists', async () => { + await expect(ssvNetworkContract.getClusterId([5,6,7,8])).to.be.revertedWith('ClusterNotExists'); + }); + + it('Get pod returns an error - PoNotExists', async () => { + await expect(ssvNetworkContract.connect(helpers.DB.owners[4]).getPod(helpers.DataGenerator.cluster.byId(clusterResult.clusterId))).to.be.revertedWith('PodNotExists'); + }); + + it('Get pod returns a cluster id', async () => { + expect(await ssvNetworkContract.getPod(helpers.DataGenerator.cluster.byId(clusterResult.clusterId))).to.equal(clusterResult.clusterId); + }); + + it('Register pod returns an error - OperatorDoesNotExist', async () => { + await expect(ssvNetworkContract.registerPod([1, 2, 3, 25], minDepositAmount)).to.be.revertedWith('OperatorDoesNotExist'); + }); + + it('Register validator emits ValidatorAdded event', async () => { + // register validator using cluster Id + await expect(ssvNetworkContract.registerValidator( + helpers.DataGenerator.publicKey(1), + (await helpers.registerPodAndDeposit(0, helpers.DataGenerator.cluster.new(), minDepositAmount)).clusterId, + helpers.DataGenerator.shares(0) + )).to.emit(ssvNetworkContract, 'ValidatorAdded'); + }); + + it('Register validator with removed operator in a cluster', async () => { + await ssvNetworkContract.removeOperator(1); + await utils.progressBlocks(helpers.CONFIG.minimalBlocksBeforeLiquidation); // TMP IT FAILS WITH PROGRESS BLOCK, CRITICAL ERROR IN INDEX MATH LOGIC + await helpers.DB.ssvToken.connect(helpers.DB.owners[4]).approve(ssvNetworkContract.address, minDepositAmount); + await trackGas(ssvNetworkContract.connect(helpers.DB.owners[4])['deposit(bytes32,uint256)'](clusterResult.clusterId, minDepositAmount), [GasGroup.DEPOSIT]); + await trackGas(ssvNetworkContract.connect(helpers.DB.owners[4]).registerValidator(helpers.DataGenerator.publicKey(9), clusterResult.clusterId, helpers.DataGenerator.shares(0)), [GasGroup.REGISTER_VALIDATOR_EXISTING_POD]); + }); + + it('Register one validator into an empty cluster', async () => { + await helpers.registerValidators(0, 1, minDepositAmount, helpers.DataGenerator.cluster.new(), [GasGroup.REGISTER_VALIDATOR_NEW_STATE]); + }); + + it('Register two validators in the same pod', async () => { + await helpers.registerValidators(0, 1, `${minDepositAmount * 2}`, helpers.DataGenerator.cluster.byId(clusterResult.clusterId), [GasGroup.REGISTER_VALIDATOR_EXISTING_POD]); + }); + + it('Register two validators into an existing cluster', async () => { + await helpers.registerValidators(1, 1, `${minDepositAmount * 2}`, helpers.DataGenerator.cluster.byId(clusterResult.clusterId), [GasGroup.REGISTER_VALIDATOR_EXISTING_CLUSTER]); + }); + + it('Register pod returns an error - The operators list should be in ascending order', async () => { + await expect(ssvNetworkContract.connect(helpers.DB.owners[1]).registerPod([3,2,1,4], minDepositAmount)).to.be.revertedWith('The operators list should be in ascending order'); + }); + + it('Invalid operator amount', async () => { + // 2 Operators + await expect(helpers.registerPodAndDeposit(0, [1, 2], minDepositAmount)).to.be.revertedWith('OperatorIdsStructureInvalid'); + + // 6 Operators + await expect(helpers.registerPodAndDeposit(0, [1, 2, 3, 4, 5, 6], minDepositAmount)).to.be.revertedWith('OperatorIdsStructureInvalid'); + + // 14 Operators + await expect(helpers.registerPodAndDeposit(0, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], minDepositAmount)).to.be.revertedWith('OperatorIdsStructureInvalid'); + }); + + it('Register validator returns an error - InvalidPublicKeyLength', async () => { + await expect(ssvNetworkContract.registerValidator( + helpers.DataGenerator.shares(0), + (await helpers.registerPodAndDeposit(0, helpers.DataGenerator.cluster.new(), minDepositAmount)).clusterId, + helpers.DataGenerator.shares(0), + )).to.be.revertedWith('InvalidPublicKeyLength'); + }); + + it('Register validator returns an error - NotEnoughBalance', async () => { + await expect(ssvNetworkContract.connect(helpers.DB.owners[1]).registerValidator( + helpers.DataGenerator.publicKey(1), + (await helpers.registerPodAndDeposit(0, helpers.DataGenerator.cluster.new(), '0')).clusterId, + helpers.DataGenerator.shares(0), + )).to.be.revertedWith('NotEnoughBalance'); + }); + + it('Register validator returns an error - ValidatorAlreadyExists', async () => { + await expect(ssvNetworkContract.connect(helpers.DB.owners[1]).registerValidator( + helpers.DataGenerator.publicKey(0), + (await helpers.registerPodAndDeposit(1, [1, 2, 3, 4], minDepositAmount)).clusterId, + helpers.DataGenerator.shares(0), + )).to.be.revertedWith('ValidatorAlreadyExists'); + }); + + it('Register validator returns an error - ClusterNotExists', async () => { + await expect(ssvNetworkContract.connect(helpers.DB.owners[1]).registerValidator( + helpers.DataGenerator.publicKey(0), + clusterResult.clusterId.replace(/.$/,'0'), + helpers.DataGenerator.shares(0), + )).to.be.revertedWith('ClusterNotExists'); + }); + + // ABOVE GAS LIMIT + it('Register with 7 operators', async () => { + // await helpers.registerValidators(0, 1, '10000', helpers.DataGenerator.cluster.new(7), [GasGroup.REGISTER_VALIDATOR_EXISTING_CLUSTER]); + }); + + // TODO: fix after connecting the token + it('Not enough balance', async () => { + // await expect(ssvNetworkContract.registerValidator( + // helpers.DataGenerator.publicKey(0), + // [1, 2, 3, 4], + // helpers.DataGenerator.shares(0), + // '100005' + // )).to.be.revertedWith('NotEnoughBalance'); + }); +}); + + + + + + + + diff --git a/test/validators/remove.ts b/test/validators/remove.ts new file mode 100644 index 00000000..770a9d00 --- /dev/null +++ b/test/validators/remove.ts @@ -0,0 +1,76 @@ +import * as helpers from '../helpers/contract-helpers'; + +import { expect } from 'chai'; +import { trackGas, GasGroup } from '../helpers/gas-usage'; + +let ssvNetworkContract: any, clusterResult: any, minDepositAmount: any; + +describe('Remove Validator Tests', () => { + beforeEach(async () => { + // Initialize contract + ssvNetworkContract = (await helpers.initializeContract()).contract; + + minDepositAmount = helpers.CONFIG.minimalBlocksBeforeLiquidation * helpers.CONFIG.minimalOperatorFee * 4; + + // Register operators + await helpers.registerOperators(0, 4, helpers.CONFIG.minimalOperatorFee); + + // Register a validator + clusterResult = await helpers.registerValidators(4, 1, minDepositAmount, helpers.DataGenerator.cluster.new(), [GasGroup.REGISTER_VALIDATOR_NEW_STATE]); + }); + + it('Remove validator emits ValidatorRemoved event', async () => { + await expect(ssvNetworkContract.connect(helpers.DB.owners[4]).removeValidator( + clusterResult.validators[0].publicKey, + )).to.emit(ssvNetworkContract, 'ValidatorRemoved'); + }); + + it('Remove validator track gas', async () => { + await trackGas(ssvNetworkContract.connect(helpers.DB.owners[4]).removeValidator(clusterResult.validators[0].publicKey), [GasGroup.REMOVE_VALIDATOR]); + }); + + it('Remove validator with removed operator in a cluster', async () => { + await trackGas(ssvNetworkContract.removeOperator(1), [GasGroup.REMOVE_OPERATOR_WITH_WITHDRAW]); + await trackGas(ssvNetworkContract.connect(helpers.DB.owners[4]).removeValidator(clusterResult.validators[0].publicKey), [GasGroup.REMOVE_VALIDATOR]); + }); + + it('Remove validator with an invalid owner', async () => { + await expect(ssvNetworkContract.connect(helpers.DB.owners[3]).removeValidator(clusterResult.validators[0].publicKey)).to.be.revertedWith('ValidatorNotOwned'); + }); + + it('Remove validator twice', async () => { + // Remove validator + await trackGas(ssvNetworkContract.connect(helpers.DB.owners[4]).removeValidator(clusterResult.validators[0].publicKey), [GasGroup.REMOVE_VALIDATOR]); + + // Remove validator again + await expect(ssvNetworkContract.connect(helpers.DB.owners[4]).removeValidator(clusterResult.validators[0].publicKey)).to.be.revertedWith('ValidatorNotOwned'); + }); + + it('Register / remove validator twice', async () => { + // Remove validator + await trackGas(ssvNetworkContract.connect(helpers.DB.owners[4]).removeValidator(clusterResult.validators[0].publicKey), [GasGroup.REMOVE_VALIDATOR]); + + // Re-register validator + await ssvNetworkContract.connect(helpers.DB.owners[4]).registerValidator( + helpers.DataGenerator.publicKey(0), + (await helpers.registerPodAndDeposit(4, [1, 2, 3, 4], minDepositAmount)).clusterId, + helpers.DataGenerator.shares(0), + ); + + // Remove the validator again + await trackGas(ssvNetworkContract.connect(helpers.DB.owners[4]).removeValidator(helpers.DataGenerator.publicKey(0)), [GasGroup.REMOVE_VALIDATOR]); + }); + + // TODO: Once liquidation is updated + it('Remove validator from a liquidated cluster', async () => { + // // Register validator + // const { validators } = await helpers.registerValidators(4, 1, '10000', helpers.DataGenerator.cluster.new()); + // // Liquidate cluster + // // Progress blocks to liquidatable state + // // Liquidate cluster + // // Remove validator + // await expect(ssvNetworkContract.connect(helpers.DB.owners[4]).removeValidator( + // validators[0].publicKey, + // )).to.emit(ssvNetworkContract, 'ValidatorRemoved'); + }); +}); diff --git a/test/validators/transfer-bulk.ts.off b/test/validators/transfer-bulk.ts.off new file mode 100644 index 00000000..8b86cc4e --- /dev/null +++ b/test/validators/transfer-bulk.ts.off @@ -0,0 +1,153 @@ +import * as helpers from '../helpers/contract-helpers'; + +import { expect } from 'chai'; +import { GasGroup } from '../helpers/gas-usage'; + +let ssvNetworkContract: any, clusterResult1: any, clusterResult2: any, clusterResult3: any, minDepositAmount: any; + +describe('Bulk Transfer Validator Tests', () => { + beforeEach(async () => { + // Initialize contract + ssvNetworkContract = (await helpers.initializeContract()).contract; + + // Register operators + await helpers.registerOperators(0, 15, helpers.CONFIG.minimalOperatorFee); + + minDepositAmount = (helpers.CONFIG.minimalBlocksBeforeLiquidation + 2) * helpers.CONFIG.minimalOperatorFee * 4; + + // Register validators + clusterResult1 = await helpers.registerValidators(4, 1, minDepositAmount, helpers.DataGenerator.cluster.new(), [GasGroup.REGISTER_VALIDATOR_NEW_STATE]); + clusterResult2 = await helpers.registerValidators(4, 9, `${minDepositAmount * 9}`, helpers.DataGenerator.cluster.byId(clusterResult1.clusterId), [GasGroup.REGISTER_VALIDATOR_EXISTING_CLUSTER]); + clusterResult3 = await helpers.registerValidators(4, 1, minDepositAmount, helpers.DataGenerator.cluster.new(), [GasGroup.REGISTER_VALIDATOR_NEW_STATE]); + }); + + it('Bulk transfer 10 validators emits BulkValidatorTransferred event', async () => { + await helpers.registerPodAndDeposit(4, helpers.DataGenerator.cluster.byId(clusterResult3.clusterId), `${minDepositAmount * (clusterResult2.validators.length + 1) }`); + + await expect(ssvNetworkContract.connect(helpers.DB.owners[4]).bulkTransferValidators( + [clusterResult1.validators[0].publicKey, ...clusterResult2.validators.map((validator: any) => validator.publicKey)], + clusterResult1.clusterId, + clusterResult3.clusterId, + Array(clusterResult2.validators.length + 1).fill(helpers.DataGenerator.shares(0)), + )).to.emit(ssvNetworkContract, 'BulkValidatorTransferred'); + }); + + it('Bulk transfer validator with an invalid owner', async () => { + await helpers.registerPodAndDeposit(5, helpers.DataGenerator.cluster.byId(clusterResult3.clusterId), `${minDepositAmount * (clusterResult2.validators.length + 1) }`); + + await expect(ssvNetworkContract.connect(helpers.DB.owners[5]).bulkTransferValidators( + [clusterResult1.validators[0].publicKey, ...clusterResult2.validators.map((validator: any) => validator.publicKey)], + clusterResult1.clusterId, + clusterResult3.clusterId, + Array(clusterResult2.validators.length + 1).fill(helpers.DataGenerator.shares(0)), + )).to.be.revertedWith('ValidatorNotOwned'); + }); + + it('Bulk transfer validator with an unowned validator', async () => { + const account5cluster = await helpers.registerValidators(5, 1, minDepositAmount, helpers.DataGenerator.cluster.new(), [GasGroup.REGISTER_VALIDATOR_NEW_STATE]); + + await helpers.registerPodAndDeposit(4, helpers.DataGenerator.cluster.byId(clusterResult3.clusterId), `${minDepositAmount * (clusterResult2.validators.length + 1) }`); + + await expect(ssvNetworkContract.connect(helpers.DB.owners[4]).bulkTransferValidators( + [clusterResult1.validators[0].publicKey, account5cluster.validators[0].publicKey, ...clusterResult2.validators.map((validator: any) => validator.publicKey)], + clusterResult1.clusterId, + clusterResult3.clusterId, + Array(clusterResult2.validators.length + 2).fill(helpers.DataGenerator.shares(0)), + )).to.be.revertedWith('ValidatorNotOwned'); + }); + + it('Bulk transfer with an invalid public key', async () => { + await expect(ssvNetworkContract.connect(helpers.DB.owners[4]).bulkTransferValidators( + [clusterResult1.validators[0].publicKey, helpers.DataGenerator.shares(0), ...clusterResult2.validators.map((validator: any) => validator.publicKey)], + clusterResult1.clusterId, + clusterResult3.clusterId, + Array(clusterResult2.validators.length + 2).fill(helpers.DataGenerator.shares(0)), + )).to.be.revertedWith('InvalidPublicKeyLength'); + }); + + it('Bulk transfer 10 validators', async () => { + await helpers.bulkTransferValidator( + 4, + [clusterResult1.validators[0].publicKey, ...clusterResult2.validators.map((validator: any) => validator.publicKey)], + clusterResult1.clusterId, + clusterResult3.clusterId, + `${minDepositAmount * 10 }`, + [GasGroup.BULK_TRANSFER_VALIDATOR]); + }); + + it('Bulk transfer 10 validators to a cluster with 7 operators', async () => { + // Register validator with 7 operators + const { clusterId } = await helpers.registerValidators(4, 1, `${(minDepositAmount / 4) * 7}`, [1, 2, 3, 4, 5, 6, 7]); + + // Transfer validator to an existing cluster + await helpers.bulkTransferValidator( + 4, + [clusterResult1.validators[0].publicKey, ...clusterResult2.validators.map((validator: any) => validator.publicKey)], + clusterResult1.clusterId, + clusterId, + `${(minDepositAmount / 4) * 7 * 10}`, + [GasGroup.BULK_TRANSFER_VALIDATOR_NON_EXISTING_POD]); + }); + + it('Bulk transfer 10 validators to cluster created by other owner', async () => { + // Register validator with 7 operators + const { clusterId } = await helpers.registerValidators(5, 1, minDepositAmount, helpers.DataGenerator.cluster.new(), [GasGroup.REGISTER_VALIDATOR_NEW_STATE]); + + // Bulk transfer 10 validators + await helpers.bulkTransferValidator( + 4, + [clusterResult1.validators[0].publicKey, ...clusterResult2.validators.map((validator: any) => validator.publicKey)], + clusterResult1.clusterId, + clusterId, + `${minDepositAmount * 10}`, + [GasGroup.BULK_TRANSFER_VALIDATOR_NON_EXISTING_POD]); + }); + + it('Bulk transfer 10 validators to an invalid cluster', async () => { + await expect(ssvNetworkContract.connect(helpers.DB.owners[4]).bulkTransferValidators( + [clusterResult1.validators[0].publicKey, ...clusterResult2.validators.map((validator: any) => validator.publicKey)], + clusterResult1.clusterId.slice(0, -1) + 'a', + clusterResult1.clusterId, + Array(clusterResult2.validators.length + 1).fill(helpers.DataGenerator.shares(0)), + )).to.be.revertedWith('ClusterNotExists'); + }); + + it('Validator and share length mismatch', async () => { + // 10 validators and 11 shares + await expect(ssvNetworkContract.connect(helpers.DB.owners[4]).bulkTransferValidators( + [clusterResult1.validators[0].publicKey, ...clusterResult2.validators.map((validator: any) => validator.publicKey)], + clusterResult1.clusterId, + clusterResult3.clusterId, + Array(clusterResult2.validators.length).fill(helpers.DataGenerator.shares(0)), + )).to.be.revertedWith('ParametersMismatch'); + + // 9 validators and 8 shares + await expect(ssvNetworkContract.connect(helpers.DB.owners[4]).bulkTransferValidators( + clusterResult2.validators.map((validator: any) => validator.publicKey), + clusterResult1.clusterId, + clusterResult3.clusterId, + Array(clusterResult2.validators.length - 1).fill(helpers.DataGenerator.shares(0)), + )).to.be.revertedWith('ParametersMismatch'); + }); + + it('Bulk transfer validator with not enough amount', async () => { + const { clusterId } = await helpers.registerValidators(5, 1, minDepositAmount, [9, 10, 11, 12], [GasGroup.REGISTER_VALIDATOR_NEW_STATE]); + await expect(ssvNetworkContract.connect(helpers.DB.owners[4]).bulkTransferValidators( + [clusterResult1.validators[0].publicKey, ...clusterResult2.validators.map((validator: any) => validator.publicKey)], + clusterResult1.clusterId, + clusterId, + Array(clusterResult2.validators.length + 1).fill(helpers.DataGenerator.shares(0)), + )).to.be.revertedWith('PodLiquidatable'); + }); + + // TODO: fix after connecting the token + it('Bulk transfer validator with not enough balance', async () => { + // await expect(ssvNetworkContract.connect(helpers.DB.owners[4]).bulkTransferValidators( + // [clusterResult1.validators[0].publicKey, ...clusterResult2.validators.map((validator: any) => validator.publicKey)], + // clusterResult1.clusterId, + // clusterResult3.clusterId, + // Array(clusterResult2.validators.length + 1).fill(helpers.DataGenerator.shares(0)), + // '10000000' + // )).to.be.revertedWith('NotEnoughDeposited'); + }); +}); diff --git a/test/validators/transfer.ts b/test/validators/transfer.ts new file mode 100644 index 00000000..b6f04623 --- /dev/null +++ b/test/validators/transfer.ts @@ -0,0 +1,133 @@ +import * as helpers from '../helpers/contract-helpers'; +import * as utils from '../helpers/utils'; + +import { expect } from 'chai'; +import { GasGroup } from '../helpers/gas-usage'; + +let ssvNetworkContract: any, clusterResult1: any, clusterResult2: any, minDepositAmount: any, clusters: any; + +describe('Transfer Validator Tests', () => { + beforeEach(async () => { + // Initialize contract + ssvNetworkContract = (await helpers.initializeContract()).contract; + + // Register operators + await helpers.registerOperators(0, 15, helpers.CONFIG.minimalOperatorFee); + + minDepositAmount = helpers.CONFIG.minimalBlocksBeforeLiquidation * helpers.CONFIG.minimalOperatorFee * 5; + + + clusters = {}; + // Register validators + clusters.one = helpers.DataGenerator.cluster.new(); + clusterResult1 = await helpers.registerValidators(4, 1, minDepositAmount, clusters.one, [GasGroup.REGISTER_VALIDATOR_NEW_STATE]); + clusters.two = helpers.DataGenerator.cluster.new(); + clusterResult2 = await helpers.registerValidators(4, 1, minDepositAmount, clusters.two, [GasGroup.REGISTER_VALIDATOR_NEW_STATE]); + clusters.three = helpers.DataGenerator.cluster.new(); + }); + + it('Transfer validator emits ValidatorTransferred event', async () => { + await expect(ssvNetworkContract.connect(helpers.DB.owners[4]).transferValidator( + clusterResult1.validators[0].publicKey, + (await helpers.registerPodAndDeposit(4, helpers.DataGenerator.cluster.new(), minDepositAmount)).clusterId, + helpers.DataGenerator.shares(helpers.DB.validators.length), + )).to.emit(ssvNetworkContract, 'ValidatorTransferred'); + }); + + it('Transfer validator into a new cluster A-Z', async () => { + await helpers.transferValidator(4, clusterResult2.validators[0].publicKey, clusters.three, minDepositAmount, [GasGroup.TRANSFER_VALIDATOR_NEW_CLUSTER]); + }); + + it('Transfer validator into a new cluster Z-A', async () => { + const cluster = await helpers.registerValidators(4, 1, minDepositAmount, clusters.three, [GasGroup.REGISTER_VALIDATOR_NEW_STATE]); + await helpers.transferValidator(4, cluster.validators[0].publicKey, clusters.one, minDepositAmount, [GasGroup.TRANSFER_VALIDATOR_NEW_CLUSTER]); + }); + + it('Transfer validator with an invalid owner', async () => { + await expect(ssvNetworkContract.connect(helpers.DB.owners[5]).transferValidator( + clusterResult1.validators[0].publicKey, + (await helpers.registerPodAndDeposit(4, helpers.DataGenerator.cluster.byId(clusterResult2.clusterId), minDepositAmount)).clusterId, + helpers.DataGenerator.shares(helpers.DB.validators.length), + )).to.be.revertedWith('ValidatorNotOwned'); + }); + + it('transfer with an invalid public key', async () => { + await expect(ssvNetworkContract.connect(helpers.DB.owners[4]).transferValidator( + helpers.DataGenerator.shares(0), + (await helpers.registerPodAndDeposit(4, helpers.DataGenerator.cluster.byId(clusterResult2.clusterId), minDepositAmount)).clusterId, + helpers.DataGenerator.shares(helpers.DB.validators.length), + )).to.be.revertedWith('InvalidPublicKeyLength'); + }); + + it('Transfer validator to a cluster with 7 operators', async () => { + // Register validator with 7 operators + const { clusterId } = await helpers.registerValidators(4, 1, `${minDepositAmount / 4 * 7}`, [1, 2, 3, 4, 5, 6, 7]); + + // Transfer validator to an existing cluster + await helpers.transferValidator(4, clusterResult1.validators[0].publicKey, helpers.DataGenerator.cluster.byId(clusterId), `${minDepositAmount / 4 * 7 * 2}`, [GasGroup.TRANSFER_VALIDATOR_NON_EXISTING_POD]); + }); + + it('Transfer validator with not enough amount', async () => { + // Register validator + const { clusterId } = await helpers.registerValidators(4, 1, minDepositAmount, [1, 2, 3, 9]); + + // Transfer to cluster with not enough amount + await expect(ssvNetworkContract.connect(helpers.DB.owners[4]).transferValidator( + clusterResult1.validators[0].publicKey, + (await helpers.registerPodAndDeposit(4, helpers.DataGenerator.cluster.byId(clusterId), helpers.CONFIG.minimalOperatorFee)).clusterId, + helpers.DataGenerator.shares(helpers.DB.validators.length), + )).to.be.revertedWith('NotEnoughBalance'); + }); + + // GOING ABOVE GAS LIMIT + it('Transfer validator to an existing pod', async () => { + await helpers.transferValidator(4, clusterResult1.validators[0].publicKey, helpers.DataGenerator.cluster.byId(clusterResult2.clusterId), `${minDepositAmount * 2}`, [GasGroup.TRANSFER_VALIDATOR]); + }); + + // GOING ABOVE GAS LIMIT + it('Transfer validator to an existing cluster', async () => { + // Register validator with different user + const clusterResult3 = await helpers.registerValidators(5, 1, minDepositAmount, clusters.one, [GasGroup.REGISTER_VALIDATOR_NEW_STATE]); + + // Transfer validator + await helpers.transferValidator(4, clusterResult1.validators[0].publicKey, helpers.DataGenerator.cluster.byId(clusterResult3.clusterId), `${minDepositAmount * 2}`, [GasGroup.TRANSFER_VALIDATOR_NON_EXISTING_POD]); + + // expect(clusterResult3.clusterId).equals(transfredValidator1.eventsByName.ValidatorTransferred[0].args.podId); + }); + + it('Transfer validator with removed operator in old cluster A-Z', async () => { + await ssvNetworkContract.removeOperator(helpers.DataGenerator.cluster.byId(clusterResult1.clusterId)[0]); + await helpers.transferValidator(4, clusterResult1.validators[0].publicKey, helpers.DataGenerator.cluster.byId(clusterResult2.clusterId), `${minDepositAmount * 2}`, [GasGroup.TRANSFER_VALIDATOR]); + }); + + it('Transfer validator with removed operator in new cluster A-Z', async () => { + await ssvNetworkContract.removeOperator(helpers.DataGenerator.cluster.byId(clusterResult2.clusterId)[0]); + await utils.progressBlocks(helpers.CONFIG.minimalBlocksBeforeLiquidation); // TMP IT FAILS WITH PROGRESS BLOCK, CRITICAL ERROR IN INDEX MATH LOGIC + await helpers.transferValidator(4, clusterResult1.validators[0].publicKey, helpers.DataGenerator.cluster.byId(clusterResult2.clusterId), `${minDepositAmount * 2}`, [GasGroup.TRANSFER_VALIDATOR]); + }); + + it('Transfer validator with removed operator in old cluster Z-A', async () => { + const cluster = await helpers.registerValidators(4, 1, minDepositAmount, clusters.three, [GasGroup.REGISTER_VALIDATOR_NEW_STATE]); + await ssvNetworkContract.removeOperator(clusters.three[0]); + await utils.progressBlocks(helpers.CONFIG.minimalBlocksBeforeLiquidation); // TMP IT FAILS WITH PROGRESS BLOCK, CRITICAL ERROR IN INDEX MATH LOGIC + await helpers.transferValidator(4, cluster.validators[0].publicKey, clusters.one, `${minDepositAmount * 2}`, [GasGroup.TRANSFER_VALIDATOR_NEW_CLUSTER]); + }); + + it('Transfer validator with removed operator in new cluster Z-A', async () => { + const cluster = await helpers.registerValidators(4, 1, minDepositAmount, clusters.three, [GasGroup.REGISTER_VALIDATOR_NEW_STATE]); + await ssvNetworkContract.removeOperator(clusters.one[0]); + await helpers.transferValidator(4, cluster.validators[0].publicKey, clusters.one, minDepositAmount, [GasGroup.TRANSFER_VALIDATOR_NEW_CLUSTER]); + }); + + + + // TODO: fix after connecting the token + it('Transfer validator with not enough balance', async () => { + // await expect(ssvNetworkContract.connect(helpers.DB.owners[4]).transferValidator( + // clusterResult1.validators[0].publicKey, + // helpers.DataGenerator.cluster.byId(clusterResult2.clusterId), + // helpers.DataGenerator.shares(helpers.DB.validators.length), + // '1000001' + // )).to.be.revertedWith('NotEnoughBalance'); + }); +});