From 6be7b014cb2caadaf8557ce9f9ae79c570a5215b Mon Sep 17 00:00:00 2001 From: James Prestwich <10149425+prestwich@users.noreply.github.com> Date: Mon, 30 Aug 2021 12:25:56 -0700 Subject: [PATCH] bug: transfer root governorship to configured governor on gov chain (#671) * bug: transfer root governorship to configured governor on gov chain * bug: finish renaming function * fix: ts-check * nit: prettier Co-authored-by: Erin Hales --- .../optics-deploy/src/bridge/BridgeDeploy.ts | 4 +- typescript/optics-deploy/src/chain.ts | 15 +- .../optics-deploy/src/core/CoreContracts.ts | 13 +- .../optics-deploy/src/core/CoreDeploy.ts | 33 ++++- typescript/optics-deploy/src/core/index.ts | 91 ++++++------ typescript/optics-tests/package-lock.json | 130 +++--------------- 6 files changed, 113 insertions(+), 173 deletions(-) diff --git a/typescript/optics-deploy/src/bridge/BridgeDeploy.ts b/typescript/optics-deploy/src/bridge/BridgeDeploy.ts index b1e35ca3c..c3136755e 100644 --- a/typescript/optics-deploy/src/bridge/BridgeDeploy.ts +++ b/typescript/optics-deploy/src/bridge/BridgeDeploy.ts @@ -1,4 +1,4 @@ -import { Chain, ChainJson, CoreContractDeployOutput, toChain } from '../chain'; +import { Chain, ChainJson, CoreContractAddresses, toChain } from '../chain'; import { BridgeContracts } from './BridgeContracts'; import { parseFileFromDeploy } from '../verification/readDeployOutput'; import { Deploy } from '../deploy'; @@ -10,7 +10,7 @@ export type BridgeConfig = { export class BridgeDeploy extends Deploy { readonly config: BridgeConfig; readonly coreDeployPath: string; - readonly coreContractAddresses: CoreContractDeployOutput; + readonly coreContractAddresses: CoreContractAddresses; constructor( chain: Chain, diff --git a/typescript/optics-deploy/src/chain.ts b/typescript/optics-deploy/src/chain.ts index 6378b997d..aee9acf74 100644 --- a/typescript/optics-deploy/src/chain.ts +++ b/typescript/optics-deploy/src/chain.ts @@ -2,18 +2,25 @@ import * as ethers from 'ethers'; import { BigNumber } from 'ethers'; import { NonceManager } from '@ethersproject/experimental'; import { ProxyAddresses } from './proxyUtils'; +import { Address } from '../../optics-tests/lib/types'; export type DeployEnvironment = 'dev' | 'staging' | 'prod'; -export type CoreContractDeployOutput = { - upgradeBeaconController: string; - xAppConnectionManager: string; - updaterManager: string; +export type CoreContractAddresses = { + upgradeBeaconController: Address; + xAppConnectionManager: Address; + updaterManager: Address; governance: ProxyAddresses; home: ProxyAddresses; replicas?: Record; }; +export type CoreDeployAddresses = CoreContractAddresses & { + recoveryManager: Address; + updater: Address; + governor?: { address: Address; domain: number }; +}; + export interface ChainJson { name: string; rpc: string; diff --git a/typescript/optics-deploy/src/core/CoreContracts.ts b/typescript/optics-deploy/src/core/CoreContracts.ts index bb674ccb7..5b1541921 100644 --- a/typescript/optics-deploy/src/core/CoreContracts.ts +++ b/typescript/optics-deploy/src/core/CoreContracts.ts @@ -1,6 +1,7 @@ import * as contracts from '../../../typechain/optics-core'; import { BeaconProxy, ProxyAddresses } from '../proxyUtils'; import { Contracts } from '../contracts'; +import { CoreContractAddresses } from '../chain'; export class CoreContracts extends Contracts { upgradeBeaconController?: contracts.UpgradeBeaconController; @@ -15,18 +16,18 @@ export class CoreContracts extends Contracts { this.replicas = {}; } - toObject(): Object { + toObject(): CoreContractAddresses { const replicas: Record = {}; Object.entries(this.replicas).forEach(([k, v]) => { replicas[k] = v.toObject(); }); return { - upgradeBeaconController: this.upgradeBeaconController?.address, - xAppConnectionManager: this.xAppConnectionManager?.address, - updaterManager: this.updaterManager?.address, - governance: this.governance?.toObject(), - home: this.home?.toObject(), + upgradeBeaconController: this.upgradeBeaconController!.address, + xAppConnectionManager: this.xAppConnectionManager!.address, + updaterManager: this.updaterManager!.address, + governance: this.governance!.toObject(), + home: this.home!.toObject(), replicas, }; } diff --git a/typescript/optics-deploy/src/core/CoreDeploy.ts b/typescript/optics-deploy/src/core/CoreDeploy.ts index e4bb81bb7..af0ed124f 100644 --- a/typescript/optics-deploy/src/core/CoreDeploy.ts +++ b/typescript/optics-deploy/src/core/CoreDeploy.ts @@ -1,20 +1,28 @@ import { Chain, ChainJson, + CoreContractAddresses, + CoreDeployAddresses, DeployEnvironment, RustConfig, toChain, } from '../chain'; import { CoreContracts } from './CoreContracts'; import { Deploy } from '../deploy'; +import { Address } from '../../../optics-tests/lib/types'; +type Governor = { + domain: number, + address: Address +} export type CoreConfig = { environment: DeployEnvironment; - updater: string; + updater: Address; recoveryTimelock: number; - recoveryManager: string; + recoveryManager: Address; optimisticSeconds: number; watchers: string[]; + governor?: Governor; }; export class CoreDeploy extends Deploy { @@ -25,10 +33,29 @@ export class CoreDeploy extends Deploy { this.config = config; } - get ubcAddress(): string | undefined { + get contractOutput(): CoreDeployAddresses { + let addresses: CoreDeployAddresses = { + ...this.contracts.toObject(), + recoveryManager: this.config.recoveryManager, + updater: this.config.updater, + }; + if (this.config.governor) { + addresses.governor = { + address: this.config.governor.address, + domain: this.chain.domain, + }; + } + return addresses; + } + + get ubcAddress(): Address | undefined { return this.contracts.upgradeBeaconController?.address; } + async governor(): Promise
{ + return this.config.governor?.address ?? (await this.deployer.getAddress()); + } + static parseCoreConfig(config: ChainJson & CoreConfig): [Chain, CoreConfig] { const chain = toChain(config); return [ diff --git a/typescript/optics-deploy/src/core/index.ts b/typescript/optics-deploy/src/core/index.ts index d61c82f02..21a83112d 100644 --- a/typescript/optics-deploy/src/core/index.ts +++ b/typescript/optics-deploy/src/core/index.ts @@ -1,6 +1,3 @@ -// TODO: fix ts errors here -// @ts-nocheck - import * as ethers from 'ethers'; import fs from 'fs'; @@ -15,7 +12,7 @@ function log(isTest: boolean, str: string) { } } -function warn(text: string, padded: boolean) { +function warn(text: string, padded: boolean = false) { if (padded) { const padding = '*'.repeat(text.length + 8); console.log( @@ -55,12 +52,11 @@ export async function deployUpgradeBeaconController(deploy: CoreDeploy) { */ export async function deployUpdaterManager(deploy: CoreDeploy) { let factory = new contracts.UpdaterManager__factory(deploy.deployer); - deploy.contracts.updaterManager = await factory.deploy( deploy.config.updater, deploy.overrides, ); - await deploy.contracts.updaterManager!.deployTransaction.wait( + await deploy.contracts.updaterManager.deployTransaction.wait( deploy.chain.confirmations, ); @@ -72,46 +68,6 @@ export async function deployUpdaterManager(deploy: CoreDeploy) { }); } -/** - * Deploys the XAppConnectionManager on the chain of the given deploy and updates - * the deploy instance with the new contract. - * - * @param deploy - The deploy instance - */ -export async function deployXAppConnectionManager(deploy: CoreDeploy) { - let factory = new contracts.XAppConnectionManager__factory(deploy.deployer); - deploy.contracts.xAppConnectionManager = await factory.deploy( - deploy.overrides, - ); - await deploy.contracts.xAppConnectionManager.deployTransaction.wait( - deploy.chain.confirmations, - ); - - // add contract information to Etherscan verification array - deploy.verificationInput.push({ - name: 'XAppConnectionManager', - address: deploy.contracts.xAppConnectionManager!.address, - constructorArguments: [], - }); -} - -/** - * Deploys the UpdaterManager on the chain of the given deploy and updates - * the deploy instance with the new contract. - * - * @param deploy - The deploy instance - */ -export async function deployUpdaterManager(deploy: CoreDeploy) { - let factory = new contracts.UpdaterManager__factory(deploy.deployer); - deploy.contracts.updaterManager = await factory.deploy( - deploy.config.updater, - deploy.overrides, - ); - await deploy.contracts.updaterManager.deployTransaction.wait( - deploy.chain.confirmations, - ); -} - /** * Deploys the XAppConnectionManager on the chain of the given deploy and updates * the deploy instance with the new contract. @@ -133,6 +89,13 @@ export async function deployXAppConnectionManager(deploy: CoreDeploy) { await deploy.contracts.xAppConnectionManager.deployTransaction.wait( deploy.chain.confirmations, ); + + // add contract information to Etherscan verification array + deploy.verificationInput.push({ + name: 'XAppConnectionManager', + address: deploy.contracts.xAppConnectionManager!.address, + constructorArguments: [], + }); } /** @@ -280,7 +243,7 @@ export async function deployOptics(deploy: CoreDeploy) { await deployXAppConnectionManager(deploy); log(isTestDeploy, `${deploy.chain.name}: awaiting deploy Home(deploy);`); - await deployHome(deploy, isTestDeploy); + await deployHome(deploy); log( isTestDeploy, @@ -304,7 +267,7 @@ export async function deployOptics(deploy: CoreDeploy) { isTestDeploy, `${deploy.chain.name}: awaiting deploy GovernanceRouter(deploy);`, ); - await deployGovernanceRouter(deploy, isTestDeploy); + await deployGovernanceRouter(deploy); log(isTestDeploy, `${deploy.chain.name}: initial chain deploy completed`); } @@ -459,6 +422,28 @@ export async function transferGovernorship(gov: CoreDeploy, non: CoreDeploy) { log(isTestDeploy, `${non.chain.name}: governorship transferred`); } +/** + * Appints the intended ultimate governor in that domain's Governance Router. + * If the governor address is not configured, it will remain the deployer + * address. + * @param gov - The governor chain deploy instance + */ +export async function appointGovernor(gov: CoreDeploy) { + let governor = gov.config.governor; + if (governor) { + log( + gov.test, + `${gov.chain.name}: transferring root governorship to ${governor}`, + ); + const tx = await gov.contracts.governance!.proxy.transferGovernor( + governor.domain, + governor.address, + ); + await tx.wait(gov.chain.confirmations); + log(gov.test, `${gov.chain.name}: root governorship transferred`); + } +} + /** * Deploys the entire optics suite of contracts on two chains. * @@ -501,6 +486,10 @@ export async function deployTwoChains(gov: CoreDeploy, non: CoreDeploy) { await Promise.all([relinquish(gov), relinquish(non)]); + if (gov.config.governor) { + await appointGovernor(gov); + } + if (!isTestDeploy) { writeDeployOutput([gov, non]); } @@ -530,6 +519,10 @@ export async function deployHubAndSpokes( await relinquish(non); } + if (gov.config.governor) { + await appointGovernor(gov); + } + await relinquish(gov); } @@ -622,7 +615,7 @@ export function writeDeployOutput(deploys: CoreDeploy[]) { ); fs.writeFileSync( `${dir}/${name}_contracts.json`, - local.contracts.toJsonPretty(), + JSON.stringify(local.contractOutput, null, 2), ); fs.writeFileSync( `${dir}/${name}_verification.json`, diff --git a/typescript/optics-tests/package-lock.json b/typescript/optics-tests/package-lock.json index b621df056..63f28784e 100644 --- a/typescript/optics-tests/package-lock.json +++ b/typescript/optics-tests/package-lock.json @@ -375,7 +375,6 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.4.0.tgz", "integrity": "sha512-9gU2H+/yK1j2eVMdzm6xvHSnMxk8waIHQGYCZg5uvAyH0rsAzxkModzBSpbAkAuhKFEovC2S9hM4nPuLym8IZw==", - "dev": true, "dependencies": { "@ethersproject/address": "^5.4.0", "@ethersproject/bignumber": "^5.4.0", @@ -392,7 +391,6 @@ "version": "5.4.1", "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.4.1.tgz", "integrity": "sha512-3EedfKI3LVpjSKgAxoUaI+gB27frKsxzm+r21w9G60Ugk+3wVLQwhi1LsEJAKNV7WoZc8CIpNrATlL1QFABjtQ==", - "dev": true, "dependencies": { "@ethersproject/bignumber": "^5.4.0", "@ethersproject/bytes": "^5.4.0", @@ -407,7 +405,6 @@ "version": "5.4.1", "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.4.1.tgz", "integrity": "sha512-SkkFL5HVq1k4/25dM+NWP9MILgohJCgGv5xT5AcRruGz4ILpfHeBtO/y6j+Z3UN/PAjDeb4P7E51Yh8wcGNLGA==", - "dev": true, "dependencies": { "@ethersproject/abstract-provider": "^5.4.0", "@ethersproject/bignumber": "^5.4.0", @@ -420,7 +417,6 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.4.0.tgz", "integrity": "sha512-SD0VgOEkcACEG/C6xavlU1Hy3m5DGSXW3CUHkaaEHbAPPsgi0coP5oNPsxau8eTlZOk/bpa/hKeCNoK5IzVI2Q==", - "dev": true, "dependencies": { "@ethersproject/bignumber": "^5.4.0", "@ethersproject/bytes": "^5.4.0", @@ -433,7 +429,6 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.4.0.tgz", "integrity": "sha512-CjQw6E17QDSSC5jiM9YpF7N1aSCHmYGMt9bWD8PWv6YPMxjsys2/Q8xLrROKI3IWJ7sFfZ8B3flKDTM5wlWuZQ==", - "dev": true, "dependencies": { "@ethersproject/bytes": "^5.4.0" } @@ -442,7 +437,6 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.4.0.tgz", "integrity": "sha512-J07+QCVJ7np2bcpxydFVf/CuYo9mZ7T73Pe7KQY4c1lRlrixMeblauMxHXD0MPwFmUHZIILDNViVkykFBZylbg==", - "dev": true, "dependencies": { "@ethersproject/bytes": "^5.4.0", "@ethersproject/properties": "^5.4.0" @@ -452,7 +446,6 @@ "version": "5.4.1", "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.4.1.tgz", "integrity": "sha512-fJhdxqoQNuDOk6epfM7yD6J8Pol4NUCy1vkaGAkuujZm0+lNow//MKu1hLhRiYV4BsOHyBv5/lsTjF+7hWwhJg==", - "dev": true, "dependencies": { "@ethersproject/bytes": "^5.4.0", "@ethersproject/logger": "^5.4.0", @@ -463,7 +456,6 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.4.0.tgz", "integrity": "sha512-H60ceqgTHbhzOj4uRc/83SCN9d+BSUnOkrr2intevqdtEMO1JFVZ1XL84OEZV+QjV36OaZYxtnt4lGmxcGsPfA==", - "dev": true, "dependencies": { "@ethersproject/logger": "^5.4.0" } @@ -472,7 +464,6 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.4.0.tgz", "integrity": "sha512-tzjn6S7sj9+DIIeKTJLjK9WGN2Tj0P++Z8ONEIlZjyoTkBuODN+0VfhAyYksKi43l1Sx9tX2VlFfzjfmr5Wl3Q==", - "dev": true, "dependencies": { "@ethersproject/bignumber": "^5.4.0" } @@ -481,7 +472,6 @@ "version": "5.4.1", "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.4.1.tgz", "integrity": "sha512-m+z2ZgPy4pyR15Je//dUaymRUZq5MtDajF6GwFbGAVmKz/RF+DNIPwF0k5qEcL3wPGVqUjFg2/krlCRVTU4T5w==", - "dev": true, "dependencies": { "@ethersproject/abi": "^5.4.0", "@ethersproject/abstract-provider": "^5.4.0", @@ -499,7 +489,6 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.4.0.tgz", "integrity": "sha512-xymAM9tmikKgbktOCjW60Z5sdouiIIurkZUr9oW5NOex5uwxrbsYG09kb5bMcNjlVeJD3yPivTNzViIs1GCbqA==", - "dev": true, "dependencies": { "@ethersproject/abstract-signer": "^5.4.0", "@ethersproject/address": "^5.4.0", @@ -515,7 +504,6 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.4.0.tgz", "integrity": "sha512-pKxdS0KAaeVGfZPp1KOiDLB0jba11tG6OP1u11QnYfb7pXn6IZx0xceqWRr6ygke8+Kw74IpOoSi7/DwANhy8Q==", - "dev": true, "dependencies": { "@ethersproject/abstract-signer": "^5.4.0", "@ethersproject/basex": "^5.4.0", @@ -535,7 +523,6 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.4.0.tgz", "integrity": "sha512-igWcu3fx4aiczrzEHwG1xJZo9l1cFfQOWzTqwRw/xcvxTk58q4f9M7cjh51EKphMHvrJtcezJ1gf1q1AUOfEQQ==", - "dev": true, "dependencies": { "@ethersproject/abstract-signer": "^5.4.0", "@ethersproject/address": "^5.4.0", @@ -556,7 +543,6 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.4.0.tgz", "integrity": "sha512-FBI1plWet+dPUvAzPAeHzRKiPpETQzqSUWR1wXJGHVWi4i8bOSrpC3NwpkPjgeXG7MnugVc1B42VbfnQikyC/A==", - "dev": true, "dependencies": { "@ethersproject/bytes": "^5.4.0", "js-sha3": "0.5.7" @@ -565,14 +551,12 @@ "node_modules/@ethersproject/logger": { "version": "5.4.0", "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.4.0.tgz", - "integrity": "sha512-xYdWGGQ9P2cxBayt64d8LC8aPFJk6yWCawQi/4eJ4+oJdMMjEBMrIcIMZ9AxhwpPVmnBPrsB10PcXGmGAqgUEQ==", - "dev": true + "integrity": "sha512-xYdWGGQ9P2cxBayt64d8LC8aPFJk6yWCawQi/4eJ4+oJdMMjEBMrIcIMZ9AxhwpPVmnBPrsB10PcXGmGAqgUEQ==" }, "node_modules/@ethersproject/networks": { "version": "5.4.2", "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.4.2.tgz", "integrity": "sha512-eekOhvJyBnuibfJnhtK46b8HimBc5+4gqpvd1/H9LEl7Q7/qhsIhM81dI9Fcnjpk3jB1aTy6bj0hz3cifhNeYw==", - "dev": true, "dependencies": { "@ethersproject/logger": "^5.4.0" } @@ -581,7 +565,6 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.4.0.tgz", "integrity": "sha512-x94aIv6tiA04g6BnazZSLoRXqyusawRyZWlUhKip2jvoLpzJuLb//KtMM6PEovE47pMbW+Qe1uw+68ameJjB7g==", - "dev": true, "dependencies": { "@ethersproject/bytes": "^5.4.0", "@ethersproject/sha2": "^5.4.0" @@ -591,7 +574,6 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.4.0.tgz", "integrity": "sha512-7jczalGVRAJ+XSRvNA6D5sAwT4gavLq3OXPuV/74o3Rd2wuzSL035IMpIMgei4CYyBdialJMrTqkOnzccLHn4A==", - "dev": true, "dependencies": { "@ethersproject/logger": "^5.4.0" } @@ -600,7 +582,6 @@ "version": "5.4.3", "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.4.3.tgz", "integrity": "sha512-VURwkaWPoUj7jq9NheNDT5Iyy64Qcyf6BOFDwVdHsmLmX/5prNjFrgSX3GHPE4z1BRrVerDxe2yayvXKFm/NNg==", - "dev": true, "dependencies": { "@ethersproject/abstract-provider": "^5.4.0", "@ethersproject/abstract-signer": "^5.4.0", @@ -627,7 +608,6 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.4.0.tgz", "integrity": "sha512-pnpWNQlf0VAZDEOVp1rsYQosmv2o0ITS/PecNw+mS2/btF8eYdspkN0vIXrCMtkX09EAh9bdk8GoXmFXM1eAKw==", - "dev": true, "dependencies": { "@ethersproject/bytes": "^5.4.0", "@ethersproject/logger": "^5.4.0" @@ -637,7 +617,6 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.4.0.tgz", "integrity": "sha512-0I7MZKfi+T5+G8atId9QaQKHRvvasM/kqLyAH4XxBCBchAooH2EX5rL9kYZWwcm3awYV+XC7VF6nLhfeQFKVPg==", - "dev": true, "dependencies": { "@ethersproject/bytes": "^5.4.0", "@ethersproject/logger": "^5.4.0" @@ -647,7 +626,6 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.4.0.tgz", "integrity": "sha512-siheo36r1WD7Cy+bDdE1BJ8y0bDtqXCOxRMzPa4bV1TGt/eTUUt03BHoJNB6reWJD8A30E/pdJ8WFkq+/uz4Gg==", - "dev": true, "dependencies": { "@ethersproject/bytes": "^5.4.0", "@ethersproject/logger": "^5.4.0", @@ -658,7 +636,6 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.4.0.tgz", "integrity": "sha512-q8POUeywx6AKg2/jX9qBYZIAmKSB4ubGXdQ88l40hmATj29JnG5pp331nAWwwxPn2Qao4JpWHNZsQN+bPiSW9A==", - "dev": true, "dependencies": { "@ethersproject/bytes": "^5.4.0", "@ethersproject/logger": "^5.4.0", @@ -672,7 +649,6 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.4.0.tgz", "integrity": "sha512-XFQTZ7wFSHOhHcV1DpcWj7VXECEiSrBuv7JErJvB9Uo+KfCdc3QtUZV+Vjh/AAaYgezUEKbCtE6Khjm44seevQ==", - "dev": true, "dependencies": { "@ethersproject/bignumber": "^5.4.0", "@ethersproject/bytes": "^5.4.0", @@ -685,7 +661,6 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.4.0.tgz", "integrity": "sha512-k/9DkH5UGDhv7aReXLluFG5ExurwtIpUfnDNhQA29w896Dw3i4uDTz01Quaptbks1Uj9kI8wo9tmW73wcIEaWA==", - "dev": true, "dependencies": { "@ethersproject/bytes": "^5.4.0", "@ethersproject/constants": "^5.4.0", @@ -696,7 +671,6 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.4.0.tgz", "integrity": "sha512-s3EjZZt7xa4BkLknJZ98QGoIza94rVjaEed0rzZ/jB9WrIuu/1+tjvYCWzVrystXtDswy7TPBeIepyXwSYa4WQ==", - "dev": true, "dependencies": { "@ethersproject/address": "^5.4.0", "@ethersproject/bignumber": "^5.4.0", @@ -713,7 +687,6 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.4.0.tgz", "integrity": "sha512-Z88krX40KCp+JqPCP5oPv5p750g+uU6gopDYRTBGcDvOASh6qhiEYCRatuM/suC4S2XW9Zz90QI35MfSrTIaFg==", - "dev": true, "dependencies": { "@ethersproject/bignumber": "^5.4.0", "@ethersproject/constants": "^5.4.0", @@ -724,7 +697,6 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.4.0.tgz", "integrity": "sha512-wU29majLjM6AjCjpat21mPPviG+EpK7wY1+jzKD0fg3ui5fgedf2zEu1RDgpfIMsfn8fJHJuzM4zXZ2+hSHaSQ==", - "dev": true, "dependencies": { "@ethersproject/abstract-provider": "^5.4.0", "@ethersproject/abstract-signer": "^5.4.0", @@ -747,7 +719,6 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.4.0.tgz", "integrity": "sha512-1bUusGmcoRLYgMn6c1BLk1tOKUIFuTg8j+6N8lYlbMpDesnle+i3pGSagGNvwjaiLo4Y5gBibwctpPRmjrh4Og==", - "dev": true, "dependencies": { "@ethersproject/base64": "^5.4.0", "@ethersproject/bytes": "^5.4.0", @@ -760,7 +731,6 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.4.0.tgz", "integrity": "sha512-FemEkf6a+EBKEPxlzeVgUaVSodU7G0Na89jqKjmWMlDB0tomoU8RlEMgUvXyqtrg8N4cwpLh8nyRnm1Nay1isA==", - "dev": true, "dependencies": { "@ethersproject/bytes": "^5.4.0", "@ethersproject/hash": "^5.4.0", @@ -1188,8 +1158,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=", - "dev": true + "integrity": "sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0=" }, "node_modules/agent-base": { "version": "6.0.2", @@ -1414,8 +1383,7 @@ "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 + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" }, "node_modules/binary-extensions": { "version": "2.2.0", @@ -1441,8 +1409,7 @@ "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 + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" }, "node_modules/brace-expansion": { "version": "1.1.11", @@ -1469,8 +1436,7 @@ "node_modules/brorand": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" }, "node_modules/browser-stdout": { "version": "1.3.1", @@ -1975,7 +1941,6 @@ "version": "6.5.4", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dev": true, "dependencies": { "bn.js": "^4.11.9", "brorand": "^1.1.0", @@ -2284,7 +2249,6 @@ "version": "5.4.4", "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.4.4.tgz", "integrity": "sha512-zaTs8yaDjfb0Zyj8tT6a+/hEkC+kWAA350MWRp6yP5W7NdGcURRPMOpOU+6GtkfxV9wyJEShWesqhE/TjdqpMA==", - "dev": true, "dependencies": { "@ethersproject/abi": "5.4.0", "@ethersproject/abstract-provider": "5.4.1", @@ -12712,7 +12676,6 @@ "version": "1.1.7", "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, "dependencies": { "inherits": "^2.0.3", "minimalistic-assert": "^1.0.1" @@ -12731,7 +12694,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, "dependencies": { "hash.js": "^1.0.3", "minimalistic-assert": "^1.0.0", @@ -12861,8 +12823,7 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/invert-kv": { "version": "1.0.0", @@ -13133,8 +13094,7 @@ "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=", - "dev": true + "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=" }, "node_modules/js-yaml": { "version": "3.13.1", @@ -13598,14 +13558,12 @@ "node_modules/minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" }, "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=", - "dev": true + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" }, "node_modules/minimatch": { "version": "3.0.4", @@ -14736,8 +14694,7 @@ "node_modules/scrypt-js": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", - "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", - "dev": true + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" }, "node_modules/secp256k1": { "version": "4.0.2", @@ -15635,7 +15592,6 @@ "version": "7.4.6", "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "dev": true, "engines": { "node": ">=8.3.0" } @@ -16273,7 +16229,6 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.4.0.tgz", "integrity": "sha512-9gU2H+/yK1j2eVMdzm6xvHSnMxk8waIHQGYCZg5uvAyH0rsAzxkModzBSpbAkAuhKFEovC2S9hM4nPuLym8IZw==", - "dev": true, "requires": { "@ethersproject/address": "^5.4.0", "@ethersproject/bignumber": "^5.4.0", @@ -16290,7 +16245,6 @@ "version": "5.4.1", "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.4.1.tgz", "integrity": "sha512-3EedfKI3LVpjSKgAxoUaI+gB27frKsxzm+r21w9G60Ugk+3wVLQwhi1LsEJAKNV7WoZc8CIpNrATlL1QFABjtQ==", - "dev": true, "requires": { "@ethersproject/bignumber": "^5.4.0", "@ethersproject/bytes": "^5.4.0", @@ -16305,7 +16259,6 @@ "version": "5.4.1", "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.4.1.tgz", "integrity": "sha512-SkkFL5HVq1k4/25dM+NWP9MILgohJCgGv5xT5AcRruGz4ILpfHeBtO/y6j+Z3UN/PAjDeb4P7E51Yh8wcGNLGA==", - "dev": true, "requires": { "@ethersproject/abstract-provider": "^5.4.0", "@ethersproject/bignumber": "^5.4.0", @@ -16318,7 +16271,6 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.4.0.tgz", "integrity": "sha512-SD0VgOEkcACEG/C6xavlU1Hy3m5DGSXW3CUHkaaEHbAPPsgi0coP5oNPsxau8eTlZOk/bpa/hKeCNoK5IzVI2Q==", - "dev": true, "requires": { "@ethersproject/bignumber": "^5.4.0", "@ethersproject/bytes": "^5.4.0", @@ -16331,7 +16283,6 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.4.0.tgz", "integrity": "sha512-CjQw6E17QDSSC5jiM9YpF7N1aSCHmYGMt9bWD8PWv6YPMxjsys2/Q8xLrROKI3IWJ7sFfZ8B3flKDTM5wlWuZQ==", - "dev": true, "requires": { "@ethersproject/bytes": "^5.4.0" } @@ -16340,7 +16291,6 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.4.0.tgz", "integrity": "sha512-J07+QCVJ7np2bcpxydFVf/CuYo9mZ7T73Pe7KQY4c1lRlrixMeblauMxHXD0MPwFmUHZIILDNViVkykFBZylbg==", - "dev": true, "requires": { "@ethersproject/bytes": "^5.4.0", "@ethersproject/properties": "^5.4.0" @@ -16350,7 +16300,6 @@ "version": "5.4.1", "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.4.1.tgz", "integrity": "sha512-fJhdxqoQNuDOk6epfM7yD6J8Pol4NUCy1vkaGAkuujZm0+lNow//MKu1hLhRiYV4BsOHyBv5/lsTjF+7hWwhJg==", - "dev": true, "requires": { "@ethersproject/bytes": "^5.4.0", "@ethersproject/logger": "^5.4.0", @@ -16361,7 +16310,6 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.4.0.tgz", "integrity": "sha512-H60ceqgTHbhzOj4uRc/83SCN9d+BSUnOkrr2intevqdtEMO1JFVZ1XL84OEZV+QjV36OaZYxtnt4lGmxcGsPfA==", - "dev": true, "requires": { "@ethersproject/logger": "^5.4.0" } @@ -16370,7 +16318,6 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.4.0.tgz", "integrity": "sha512-tzjn6S7sj9+DIIeKTJLjK9WGN2Tj0P++Z8ONEIlZjyoTkBuODN+0VfhAyYksKi43l1Sx9tX2VlFfzjfmr5Wl3Q==", - "dev": true, "requires": { "@ethersproject/bignumber": "^5.4.0" } @@ -16379,7 +16326,6 @@ "version": "5.4.1", "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.4.1.tgz", "integrity": "sha512-m+z2ZgPy4pyR15Je//dUaymRUZq5MtDajF6GwFbGAVmKz/RF+DNIPwF0k5qEcL3wPGVqUjFg2/krlCRVTU4T5w==", - "dev": true, "requires": { "@ethersproject/abi": "^5.4.0", "@ethersproject/abstract-provider": "^5.4.0", @@ -16397,7 +16343,6 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.4.0.tgz", "integrity": "sha512-xymAM9tmikKgbktOCjW60Z5sdouiIIurkZUr9oW5NOex5uwxrbsYG09kb5bMcNjlVeJD3yPivTNzViIs1GCbqA==", - "dev": true, "requires": { "@ethersproject/abstract-signer": "^5.4.0", "@ethersproject/address": "^5.4.0", @@ -16413,7 +16358,6 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.4.0.tgz", "integrity": "sha512-pKxdS0KAaeVGfZPp1KOiDLB0jba11tG6OP1u11QnYfb7pXn6IZx0xceqWRr6ygke8+Kw74IpOoSi7/DwANhy8Q==", - "dev": true, "requires": { "@ethersproject/abstract-signer": "^5.4.0", "@ethersproject/basex": "^5.4.0", @@ -16433,7 +16377,6 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.4.0.tgz", "integrity": "sha512-igWcu3fx4aiczrzEHwG1xJZo9l1cFfQOWzTqwRw/xcvxTk58q4f9M7cjh51EKphMHvrJtcezJ1gf1q1AUOfEQQ==", - "dev": true, "requires": { "@ethersproject/abstract-signer": "^5.4.0", "@ethersproject/address": "^5.4.0", @@ -16454,7 +16397,6 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.4.0.tgz", "integrity": "sha512-FBI1plWet+dPUvAzPAeHzRKiPpETQzqSUWR1wXJGHVWi4i8bOSrpC3NwpkPjgeXG7MnugVc1B42VbfnQikyC/A==", - "dev": true, "requires": { "@ethersproject/bytes": "^5.4.0", "js-sha3": "0.5.7" @@ -16463,14 +16405,12 @@ "@ethersproject/logger": { "version": "5.4.0", "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.4.0.tgz", - "integrity": "sha512-xYdWGGQ9P2cxBayt64d8LC8aPFJk6yWCawQi/4eJ4+oJdMMjEBMrIcIMZ9AxhwpPVmnBPrsB10PcXGmGAqgUEQ==", - "dev": true + "integrity": "sha512-xYdWGGQ9P2cxBayt64d8LC8aPFJk6yWCawQi/4eJ4+oJdMMjEBMrIcIMZ9AxhwpPVmnBPrsB10PcXGmGAqgUEQ==" }, "@ethersproject/networks": { "version": "5.4.2", "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.4.2.tgz", "integrity": "sha512-eekOhvJyBnuibfJnhtK46b8HimBc5+4gqpvd1/H9LEl7Q7/qhsIhM81dI9Fcnjpk3jB1aTy6bj0hz3cifhNeYw==", - "dev": true, "requires": { "@ethersproject/logger": "^5.4.0" } @@ -16479,7 +16419,6 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.4.0.tgz", "integrity": "sha512-x94aIv6tiA04g6BnazZSLoRXqyusawRyZWlUhKip2jvoLpzJuLb//KtMM6PEovE47pMbW+Qe1uw+68ameJjB7g==", - "dev": true, "requires": { "@ethersproject/bytes": "^5.4.0", "@ethersproject/sha2": "^5.4.0" @@ -16489,7 +16428,6 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.4.0.tgz", "integrity": "sha512-7jczalGVRAJ+XSRvNA6D5sAwT4gavLq3OXPuV/74o3Rd2wuzSL035IMpIMgei4CYyBdialJMrTqkOnzccLHn4A==", - "dev": true, "requires": { "@ethersproject/logger": "^5.4.0" } @@ -16498,7 +16436,6 @@ "version": "5.4.3", "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.4.3.tgz", "integrity": "sha512-VURwkaWPoUj7jq9NheNDT5Iyy64Qcyf6BOFDwVdHsmLmX/5prNjFrgSX3GHPE4z1BRrVerDxe2yayvXKFm/NNg==", - "dev": true, "requires": { "@ethersproject/abstract-provider": "^5.4.0", "@ethersproject/abstract-signer": "^5.4.0", @@ -16525,7 +16462,6 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.4.0.tgz", "integrity": "sha512-pnpWNQlf0VAZDEOVp1rsYQosmv2o0ITS/PecNw+mS2/btF8eYdspkN0vIXrCMtkX09EAh9bdk8GoXmFXM1eAKw==", - "dev": true, "requires": { "@ethersproject/bytes": "^5.4.0", "@ethersproject/logger": "^5.4.0" @@ -16535,7 +16471,6 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.4.0.tgz", "integrity": "sha512-0I7MZKfi+T5+G8atId9QaQKHRvvasM/kqLyAH4XxBCBchAooH2EX5rL9kYZWwcm3awYV+XC7VF6nLhfeQFKVPg==", - "dev": true, "requires": { "@ethersproject/bytes": "^5.4.0", "@ethersproject/logger": "^5.4.0" @@ -16545,7 +16480,6 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.4.0.tgz", "integrity": "sha512-siheo36r1WD7Cy+bDdE1BJ8y0bDtqXCOxRMzPa4bV1TGt/eTUUt03BHoJNB6reWJD8A30E/pdJ8WFkq+/uz4Gg==", - "dev": true, "requires": { "@ethersproject/bytes": "^5.4.0", "@ethersproject/logger": "^5.4.0", @@ -16556,7 +16490,6 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.4.0.tgz", "integrity": "sha512-q8POUeywx6AKg2/jX9qBYZIAmKSB4ubGXdQ88l40hmATj29JnG5pp331nAWwwxPn2Qao4JpWHNZsQN+bPiSW9A==", - "dev": true, "requires": { "@ethersproject/bytes": "^5.4.0", "@ethersproject/logger": "^5.4.0", @@ -16570,7 +16503,6 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.4.0.tgz", "integrity": "sha512-XFQTZ7wFSHOhHcV1DpcWj7VXECEiSrBuv7JErJvB9Uo+KfCdc3QtUZV+Vjh/AAaYgezUEKbCtE6Khjm44seevQ==", - "dev": true, "requires": { "@ethersproject/bignumber": "^5.4.0", "@ethersproject/bytes": "^5.4.0", @@ -16583,7 +16515,6 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.4.0.tgz", "integrity": "sha512-k/9DkH5UGDhv7aReXLluFG5ExurwtIpUfnDNhQA29w896Dw3i4uDTz01Quaptbks1Uj9kI8wo9tmW73wcIEaWA==", - "dev": true, "requires": { "@ethersproject/bytes": "^5.4.0", "@ethersproject/constants": "^5.4.0", @@ -16594,7 +16525,6 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.4.0.tgz", "integrity": "sha512-s3EjZZt7xa4BkLknJZ98QGoIza94rVjaEed0rzZ/jB9WrIuu/1+tjvYCWzVrystXtDswy7TPBeIepyXwSYa4WQ==", - "dev": true, "requires": { "@ethersproject/address": "^5.4.0", "@ethersproject/bignumber": "^5.4.0", @@ -16611,7 +16541,6 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.4.0.tgz", "integrity": "sha512-Z88krX40KCp+JqPCP5oPv5p750g+uU6gopDYRTBGcDvOASh6qhiEYCRatuM/suC4S2XW9Zz90QI35MfSrTIaFg==", - "dev": true, "requires": { "@ethersproject/bignumber": "^5.4.0", "@ethersproject/constants": "^5.4.0", @@ -16622,7 +16551,6 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.4.0.tgz", "integrity": "sha512-wU29majLjM6AjCjpat21mPPviG+EpK7wY1+jzKD0fg3ui5fgedf2zEu1RDgpfIMsfn8fJHJuzM4zXZ2+hSHaSQ==", - "dev": true, "requires": { "@ethersproject/abstract-provider": "^5.4.0", "@ethersproject/abstract-signer": "^5.4.0", @@ -16645,7 +16573,6 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.4.0.tgz", "integrity": "sha512-1bUusGmcoRLYgMn6c1BLk1tOKUIFuTg8j+6N8lYlbMpDesnle+i3pGSagGNvwjaiLo4Y5gBibwctpPRmjrh4Og==", - "dev": true, "requires": { "@ethersproject/base64": "^5.4.0", "@ethersproject/bytes": "^5.4.0", @@ -16658,7 +16585,6 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.4.0.tgz", "integrity": "sha512-FemEkf6a+EBKEPxlzeVgUaVSodU7G0Na89jqKjmWMlDB0tomoU8RlEMgUvXyqtrg8N4cwpLh8nyRnm1Nay1isA==", - "dev": true, "requires": { "@ethersproject/bytes": "^5.4.0", "@ethersproject/hash": "^5.4.0", @@ -17055,8 +16981,7 @@ "aes-js": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", - "integrity": "sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0=", - "dev": true + "integrity": "sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0=" }, "agent-base": { "version": "6.0.2", @@ -17250,8 +17175,7 @@ "bech32": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", - "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", - "dev": true + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" }, "binary-extensions": { "version": "2.2.0", @@ -17274,8 +17198,7 @@ "bn.js": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" }, "brace-expansion": { "version": "1.1.11", @@ -17299,8 +17222,7 @@ "brorand": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" }, "browser-stdout": { "version": "1.3.1", @@ -17730,7 +17652,6 @@ "version": "6.5.4", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dev": true, "requires": { "bn.js": "^4.11.9", "brorand": "^1.1.0", @@ -18010,7 +17931,6 @@ "version": "5.4.4", "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.4.4.tgz", "integrity": "sha512-zaTs8yaDjfb0Zyj8tT6a+/hEkC+kWAA350MWRp6yP5W7NdGcURRPMOpOU+6GtkfxV9wyJEShWesqhE/TjdqpMA==", - "dev": true, "requires": { "@ethersproject/abi": "5.4.0", "@ethersproject/abstract-provider": "5.4.1", @@ -27442,7 +27362,6 @@ "version": "1.1.7", "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, "requires": { "inherits": "^2.0.3", "minimalistic-assert": "^1.0.1" @@ -27458,7 +27377,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, "requires": { "hash.js": "^1.0.3", "minimalistic-assert": "^1.0.0", @@ -27571,8 +27489,7 @@ "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "invert-kv": { "version": "1.0.0", @@ -27782,8 +27699,7 @@ "js-sha3": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", - "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=", - "dev": true + "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=" }, "js-yaml": { "version": "3.13.1", @@ -28173,14 +28089,12 @@ "minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" }, "minimalistic-crypto-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" }, "minimatch": { "version": "3.0.4", @@ -29083,8 +28997,7 @@ "scrypt-js": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", - "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", - "dev": true + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" }, "secp256k1": { "version": "4.0.2", @@ -29839,8 +29752,7 @@ "ws": { "version": "7.4.6", "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "dev": true + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==" }, "xhr": { "version": "2.6.0",