├── .editorconfig ├── .gitattributes ├── .gitignore ├── README.md ├── deploy └── 001_deploy_token.ts ├── deployments └── rinkeby │ ├── .chainId │ ├── Token.json │ └── solcInputs │ └── a51ea66d3b3abe8ca5d0ce048c409140.json ├── hardhat.config.ts ├── package.json ├── src └── Token.sol ├── test ├── Test.test.ts ├── chai-setup.ts └── utils │ └── index.ts ├── tsconfig.json ├── utils └── network.ts └── yarn.lock /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | insert_final_newline = true 6 | charset = utf-8 7 | indent_style = space 8 | indent_size = 2 9 | trim_trailing_whitespace = true 10 | 11 | [*.sol] 12 | indent_size = 4 13 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto eol=lf 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | artifacts/ 3 | cache/ 4 | .env 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Tutorial for hardhat-deploy based on https://hardhat.org/tutorial/ 2 | 3 | # 1. Setting up the environment 4 | 5 | Most Ethereum libraries and tools are written in JavaScript, and so is **Hardhat**. If you're not familiar with Node.js, it's a JavaScript runtime built on Chrome's V8 JavaScript engine. It's the most popular solution to run JavaScript outside of a web browser and **Hardhat** is built on top of it. 6 | 7 | ## Installing Node.js 8 | 9 | You can [skip](./creating-a-new-hardhat-project.md) this section if you already have a working Node.js `>=12.0` installation. If not, here's how to install it on Ubuntu, MacOS and Windows. 10 | 11 | 12 | ### Linux 13 | 14 | #### Ubuntu 15 | 16 | Copy and paste these commands in a terminal: 17 | 18 | ``` 19 | sudo apt update 20 | sudo apt install curl git 21 | curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash - 22 | sudo apt install nodejs 23 | ``` 24 | 25 | ### MacOS 26 | 27 | Make sure you have `git` installed. Otherwise, follow [these instructions](https://www.atlassian.com/git/tutorials/install-git). 28 | 29 | There are multiple ways of installing Node.js on MacOS. We will be using [Node Version Manager (nvm)](http://github.com/creationix/nvm). 30 | 31 | Copy and paste these commands in a terminal: 32 | 33 | ``` 34 | curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.35.2/install.sh | bash 35 | nvm install 12 36 | nvm use 12 37 | nvm alias default 12 38 | npm install npm --global # Upgrade npm to the latest version 39 | ``` 40 | 41 | ### Windows 42 | 43 | Installing Node.js on Windows requires a few manual steps. We'll install git, Node.js 12.x and npm. 44 | 45 | Download and run these: 46 | 1. [Git's installer for Windows](https://git-scm.com/download/win) 47 | 2. `node-v12.XX.XX-x64.msi` from [here](https://nodejs.org/dist/latest-v12.x) 48 | 49 | 50 | ## Upgrading your Node.js installation 51 | 52 | If your version of Node.js is older than `12.0` follow the instructions below to upgrade. 53 | 54 | ### Linux 55 | 56 | #### Ubuntu 57 | 58 | 1. Run `sudo apt remove nodejs` in a terminal to remove Node.js. 59 | 2. Find the version of Node.js that you want to install [here](https://github.com/nodesource/distributions#debinstall) and follow the instructions. 60 | 3. Run `sudo apt update && sudo apt install nodejs` in a terminal to install Node.js again. 61 | 62 | ### MacOS 63 | 64 | You can change your Node.js version using [nvm](http://github.com/creationix/nvm). To upgrade to Node.js `12.x` run these in a terminal: 65 | 66 | ``` 67 | nvm install 12 68 | nvm use 12 69 | nvm alias default 12 70 | npm install npm --global # Upgrade npm to the latest version 71 | ``` 72 | 73 | ### Windows 74 | 75 | You need to follow the [same installation instructions](#windows) as before but choose a different version. You can check the list of all available versions [here](https://nodejs.org/en/download/releases/). 76 | 77 | ## Installing yarn 78 | 79 | For this tutorial we are going to use [yarn](yarnpkg.com) 80 | 81 | To install it do the following: 82 | 83 | ``` 84 | npm install -g yarn 85 | ``` 86 | 87 | 88 | # 2. Creating a new Hardhat project 89 | 90 | We'll install **Hardhat** using the npm CLI. The **N**ode.js **p**ackage **m**anager is a package manager and an online repository for JavaScript code. 91 | 92 | Open a new terminal and run these commands: 93 | 94 | ``` 95 | mkdir hardhat-deploy-tutorial 96 | cd hardhat-deploy-tutorial 97 | yarn init --yes 98 | yarn add -D hardhat 99 | ``` 100 | 101 | ::: tip 102 | Installing **Hardhat** will install some Ethereum JavaScript dependencies, so be patient. 103 | ::: 104 | 105 | In the same directory where you installed **Hardhat** add a `hardhat.config.ts` (we are going to use typescript and the Solidity 0.7.6 compiler) 106 | 107 | ```typescript 108 | import {HardhatUserConfig} from 'hardhat/types'; 109 | const config: HardhatUserConfig = { 110 | solidity: { 111 | version: '0.7.6', 112 | } 113 | }; 114 | export default config; 115 | 116 | ``` 117 | 118 | ## Hardhat's architecture 119 | 120 | **Hardhat** is designed around the concepts of **tasks** and **plugins**. The bulk of **Hardhat**'s functionality comes from plugins, which as a developer [you're free to choose](/plugins/) the ones you want to use. 121 | 122 | ### Tasks 123 | Every time you run **Hardhat** from the CLI you're running a task. e.g. `npx hardhat compile` is running the `compile` task. To see the currently available tasks in your project, run `npx hardhat`. Feel free to explore any task by running `npx hardhat help [task]`. 124 | 125 | ::: tip 126 | You can create your own tasks. Check out the [Creating a task](/guides/create-task.md) guide. 127 | ::: 128 | 129 | ### Plugins 130 | **Hardhat** is unopinionated in terms of what tools you end up using, but it does come with some built-in defaults, all of which can be overriden. Most of the time the way to use a given tool is by consuming a plugin that integrates it into **Hardhat**. 131 | 132 | For this tutorial we are going to use the `hardhat-deploy` and `hardhat-deploy-ethers` plugins. They'll allow you to interact with Ethereum and to test your contracts. We'll explain how they're used later on. We also install `ethers`, `chai`, `mocha` and `typescript` and extra dependencies. To install them, run the following command in your project directory: 133 | 134 | ``` 135 | yarn add -D hardhat-deploy hardhat-deploy-ethers ethers chai chai-ethers mocha @types/chai @types/mocha @types/node typescript ts-node dotenv 136 | ``` 137 | 138 | Edit `hardhat.config.ts` so that it looks like this: 139 | 140 | ```typescript {1} 141 | import {HardhatUserConfig} from 'hardhat/types'; 142 | import 'hardhat-deploy'; 143 | import 'hardhat-deploy-ethers'; 144 | 145 | const config: HardhatUserConfig = { 146 | solidity: { 147 | version: '0.7.6', 148 | }, 149 | namedAccounts: { 150 | deployer: 0, 151 | }, 152 | }; 153 | export default config; 154 | 155 | ``` 156 | 157 | We also create the following `tsconfig.json` : 158 | 159 | ```json 160 | { 161 | "compilerOptions": { 162 | "target": "es5", 163 | "module": "commonjs", 164 | "strict": true, 165 | "esModuleInterop": true, 166 | "moduleResolution": "node", 167 | "forceConsistentCasingInFileNames": true, 168 | "outDir": "dist" 169 | }, 170 | "include": [ 171 | "hardhat.config.ts", 172 | "./deploy", 173 | "./test", 174 | ] 175 | } 176 | ``` 177 | 178 | 179 | # 3. Writing and compiling smart contracts 180 | 181 | We're going to create a simple smart contract that implements a token that can be transferred. Token contracts are most frequently used to exchange or store value. We won't go in depth into the Solidity code of the contract on this tutorial, but there's some logic we implemented that you should know: 182 | 183 | - There is a fixed total supply of tokens that can't be changed. 184 | - The entire supply is assigned to the address that deploys the contract. 185 | - Anyone can receive tokens. 186 | - Anyone with at least one token can transfer tokens. 187 | - The token is non-divisible. You can transfer 1, 2, 3 or 37 tokens but not 2.5. 188 | 189 | ::: tip 190 | You might have heard about ERC20, which is a token standard in Ethereum. Tokens such as DAI, USDC, MKR and ZRX follow the ERC20 standard which allows them all to be compatible with any software that can deal with ERC20 tokens. **For simplicity's sake the token we're going to build is _not_ an ERC20.** 191 | ::: 192 | 193 | ## Writing smart contracts 194 | 195 | While by default hardhat uses `contracts` as the source folder, we prefer to change it to `src`. 196 | 197 | You then need to edit your `hardhat.config.ts` file with the new config: 198 | 199 | ```typescript 200 | import {HardhatUserConfig} from 'hardhat/types'; 201 | import 'hardhat-deploy'; 202 | import 'hardhat-deploy-ethers'; 203 | 204 | const config: HardhatUserConfig = { 205 | solidity: { 206 | version: '0.7.6', 207 | }, 208 | namedAccounts: { 209 | deployer: 0, 210 | }, 211 | paths: { 212 | sources: 'src', 213 | }, 214 | }; 215 | export default config; 216 | 217 | ``` 218 | 219 | Start by creating a new directory called `src` and create a file inside the directory called `Token.sol`. 220 | 221 | Paste the code below into the file and take a minute to read the code. It's simple and it's full of comments explaining the basics of Solidity. 222 | 223 | ::: tip 224 | To get syntax highlighting you should add Solidity support to your text editor. Just look for Solidity or Ethereum plugins. We recommend using Visual Studio Code or Sublime Text 3. 225 | ::: 226 | 227 | ```solidity 228 | // SPDX-License-Identifier: MIT 229 | // The line above is recommended and let you define the license of your contract 230 | // Solidity files have to start with this pragma. 231 | // It will be used by the Solidity compiler to validate its version. 232 | pragma solidity ^0.7.0; 233 | 234 | 235 | // This is the main building block for smart contracts. 236 | contract Token { 237 | // Some string type variables to identify the token. 238 | // The `public` modifier makes a variable readable from outside the contract. 239 | string public name = "My Hardhat Token"; 240 | string public symbol = "MBT"; 241 | 242 | // The fixed amount of tokens stored in an unsigned integer type variable. 243 | uint256 public totalSupply = 1000000; 244 | 245 | // An address type variable is used to store ethereum accounts. 246 | address public owner; 247 | 248 | // A mapping is a key/value map. Here we store each account balance. 249 | mapping(address => uint256) balances; 250 | 251 | /** 252 | * Contract initialization. 253 | * 254 | * The `constructor` is executed only once when the contract is created. 255 | */ 256 | constructor(address _owner) { 257 | // The totalSupply is assigned to transaction sender, which is the account 258 | // that is deploying the contract. 259 | balances[_owner] = totalSupply; 260 | owner = _owner; 261 | } 262 | 263 | /** 264 | * A function to transfer tokens. 265 | * 266 | * The `external` modifier makes a function *only* callable from outside 267 | * the contract. 268 | */ 269 | function transfer(address to, uint256 amount) external { 270 | // Check if the transaction sender has enough tokens. 271 | // If `require`'s first argument evaluates to `false` then the 272 | // transaction will revert. 273 | require(balances[msg.sender] >= amount, "Not enough tokens"); 274 | 275 | // Transfer the amount. 276 | balances[msg.sender] -= amount; 277 | balances[to] += amount; 278 | } 279 | 280 | /** 281 | * Read only function to retrieve the token balance of a given account. 282 | * 283 | * The `view` modifier indicates that it doesn't modify the contract's 284 | * state, which allows us to call it without executing a transaction. 285 | */ 286 | function balanceOf(address account) external view returns (uint256) { 287 | return balances[account]; 288 | } 289 | } 290 | ``` 291 | 292 | ::: tip 293 | `*.sol` is used for Solidity files. We recommend matching the file name to the contract it contains, which is a common practice. 294 | ::: 295 | 296 | ## Compiling contracts 297 | 298 | To compile the contract run `yarn hardhat compile` in your terminal. The `compile` task is one of the built-in tasks. 299 | 300 | ``` 301 | $ yarn hardhat compile 302 | Compiling 1 file with 0.7.3 303 | Compilation finished successfully 304 | ``` 305 | 306 | The contract has been successfully compiled and is ready to be used. 307 | 308 | # 4. Deployment Scripts 309 | 310 | Before you will be able to test or deploy your contract, you must set up the deployment process that can then be used both in testing as well as deployment to various live networks. 311 | This allow you to focus on what the contracts will be in their final form, setup their parameters and dependencies, and ensure your tests are running against the exact code that will be deployed. 312 | 313 | This also removes the need to duplicate the deployment procedures. This is made possible thanks to the `hardhat-deploy` plugin. 314 | 315 | ## Writing deployment scripts 316 | Create a new directory called `deploy` in the project root, and in that directory create a new file called `001_deploy_token.ts`. 317 | 318 | Let's start with the code below. We'll explain it soon, but for now paste this code into `001_deploy_token.ts`: 319 | 320 | ```typescript 321 | import {HardhatRuntimeEnvironment} from 'hardhat/types'; 322 | import {DeployFunction} from 'hardhat-deploy/types'; 323 | 324 | const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { 325 | const {deployments, getNamedAccounts} = hre; 326 | const {deploy} = deployments; 327 | 328 | const {deployer, tokenOwner} = await getNamedAccounts(); 329 | 330 | await deploy('Token', { 331 | from: deployer, 332 | args: [tokenOwner], 333 | log: true, 334 | }); 335 | }; 336 | export default func; 337 | func.tags = ['Token']; 338 | 339 | ``` 340 | 341 | Notice the mention of `getNamedAccounts`? 342 | 343 | The plugin `hardhat-deploy` allows you to name your accounts. Here there are 2 named accounts: 344 | - `deployer` will be the account used to deploy the contract. 345 | - `tokenOwner` which is passed to the constructor of Token.sol and which will receive the initial supply. 346 | 347 | These accounts need to be setup in hardhat.config.ts 348 | 349 | Modifiy it so it looks like this: 350 | 351 | ```typescript 352 | import {HardhatUserConfig} from 'hardhat/types'; 353 | import 'hardhat-deploy'; 354 | import 'hardhat-deploy-ethers'; 355 | 356 | const config: HardhatUserConfig = { 357 | solidity: { 358 | version: '0.7.6', 359 | }, 360 | namedAccounts: { 361 | deployer: 0, 362 | tokenOwner: 1, 363 | }, 364 | paths: { 365 | sources: 'src', 366 | }, 367 | }; 368 | export default config; 369 | 370 | ``` 371 | 372 | `deployer` was already there and is setup to use the first account (index = 0). 373 | 374 | `tokenOwner` is the second account. 375 | 376 | Note that instead of index you can use hard-coded addresses or even references other named accounts. You can also have different addresses based on each network. See `hardhat-deploy` documentation [here](https://github.com/wighawag/hardhat-deploy#1-namedaccounts-ability-to-name-addresses) 377 | 378 | In your terminal, run `yarn hardhat deploy`. You should see the following output: 379 | 380 | ``` 381 | Nothing to compile 382 | deploying "Token" (tx: 0x259d19f33819ec8d3bd994f82912aec6af1a18ec5d74303cfb28d793a10ff683)...: deployed at 0x5FbDB2315678afecb367f032d93F642f64180aa3 with 592983 gas 383 | Done in 3.66s. 384 | ``` 385 | 386 | Your contract was deployed to the `in-memory` Hardhat network and the output indicates that deployment was successful. 387 | 388 | We can now write tests against this contract. 389 | 390 | First we will add comments to the deploy script above to explain each line that matters: 391 | 392 | ```typescript 393 | import {HardhatRuntimeEnvironment} from 'hardhat/types'; // This adds the type from hardhat runtime environment. 394 | import {DeployFunction} from 'hardhat-deploy/types'; // This adds the type that a deploy function is expected to fulfill. 395 | 396 | const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { // the deploy function receives the hardhat runtime env as an argument 397 | const {deployments, getNamedAccounts} = hre; // we get the deployments and getNamedAccounts which are provided by hardhat-deploy. 398 | const {deploy} = deployments; // The deployments field itself contains the deploy function. 399 | 400 | const {deployer, tokenOwner} = await getNamedAccounts(); // Fetch the accounts. These can be configured in hardhat.config.ts as explained above. 401 | 402 | await deploy('Token', { // This will create a deployment called 'Token'. By default it will look for an artifact with the same name. The 'contract' option allows you to use a different artifact. 403 | from: deployer, // Deployer will be performing the deployment transaction. 404 | args: [tokenOwner], // tokenOwner is the address used as the first argument to the Token contract's constructor. 405 | log: true, // Display the address and gas used in the console (not when run in test though). 406 | }); 407 | }; 408 | export default func; 409 | func.tags = ['Token']; // This sets up a tag so you can execute the script on its own (and its dependencies). 410 | 411 | ``` 412 | 413 | 414 | Not as mentioned in the comment, the name of the deployed contract is set to be the same name as the contract name: `Token`. You can deploy different version of it by simply using a different name for it, like so: 415 | 416 | 417 | ```typescript 418 | await deploy('MyToken_1', { // name of the deployed contract 419 | contract: 'Token', // name of the token source 420 | from: deployer, 421 | args: [tokenOwner], 422 | log: true, 423 | }); 424 | ``` 425 | 426 | # 5. Testing contracts 427 | 428 | Writing automated tests when building smart contracts is of crucial importance, as your user's money is what's at stake. For this we're going to use **Hardhat Network**, a local Ethereum network designed for development that is built-in and acts as the default network in **Hardhat**. You don't need to set anything up to use it. In our tests we're going to use ethers.js to interact with the Ethereum contract we built in the previous section, and [Mocha](https://mochajs.org/) will be our test runner. 429 | 430 | ## Writing tests 431 | Create a new directory called `test` in the project root directory and in that `test` directory, create a new file called `Test.test.ts`. 432 | 433 | Let's start with the code below. We'll explain it shortly, but for now just paste the following code into `Test.test.ts`: 434 | 435 | ```typescript 436 | import {expect} from "./chai-setup"; 437 | 438 | import {ethers, deployments, getNamedAccounts} from 'hardhat'; 439 | 440 | describe("Token contract", function() { 441 | it("Deployment should assign the total supply of tokens to the owner", async function() { 442 | await deployments.fixture(["Token"]); 443 | const {tokenOwner} = await getNamedAccounts(); 444 | const Token = await ethers.getContract("Token"); 445 | const ownerBalance = await Token.balanceOf(tokenOwner); 446 | const supply = await Token.totalSupply(); 447 | expect(ownerBalance).to.equal(supply); 448 | }); 449 | }); 450 | 451 | ``` 452 | 453 | We also create a new file called `chai-setup.ts` in the test folder: 454 | 455 | ```typescript 456 | import chaiModule from 'chai'; 457 | import {chaiEthers} from 'chai-ethers'; 458 | chaiModule.use(chaiEthers); 459 | export = chaiModule; 460 | 461 | ``` 462 | 463 | This will use chai matchers from `chai-ethers` but also allows you to easily add more. 464 | 465 | 466 | Then in your terminal run `npx hardhat test`. You should see the following output: 467 | 468 | ``` 469 | $ npx hardhat test 470 | 471 | Token contract 472 | ✓ Deployment should assign the total supply of tokens to the owner (654ms) 473 | 474 | 475 | 1 passing (663ms) 476 | ``` 477 | 478 | This means the test passed sucessfully. Now Let's examine each line. 479 | 480 | ```typescript 481 | await deployments.fixture(["Token"]); 482 | ``` 483 | 484 | Remember the deploy script we wrote earlier? This line allow to execute it prior to the test. It also generates an evm_snapshot automatically so if you write many tests, and they all refer to that fixture, the deployment will not be reexecuted. Indeed, behind the scene it does not redeploy it again and again, instead it automatically reverts to a previous state, speeding up your tests significantly! 485 | 486 | 487 | ```typescript 488 | const {tokenOwner} = await getNamedAccounts(); 489 | ``` 490 | 491 | This gives you access to the tokenOwner address, the same address that was used in the deploy script. 492 | 493 | 494 | ```typescript 495 | const Token = await ethers.getContract("Token"); 496 | ``` 497 | 498 | Since we already ran the deploy script, we can easily access the deployed contract by name. This is what this line does, and thanks to `hardhat-deploy-ethers` plugin, you get an ethers contract ready to be invoked. If you needed that contract to be associated to a specific signer, you can pass the address as the extra argument like `const TokenAsOwner = await ethers.getContract('Token', tokenOwner);` 499 | 500 | 501 | ```typescript 502 | const ownerBalance = await Token.balanceOf(tokenOwner); 503 | ``` 504 | 505 | Now we can call contract methods on `Token`. To get the balance of the owner account, we can call `balanceOf()`. 506 | 507 | ```typescript 508 | const supply = await Token.totalSupply(); 509 | ``` 510 | 511 | Here we will again use our `Contract` instance to call a smart contract function. `totalSupply()` returns the token's supply amount. 512 | 513 | ```typescript 514 | expect(ownerBalance).to.equal(supply); 515 | ``` 516 | 517 | Finally we're checking that it's equal to `ownerBalance`, which it should be. 518 | 519 | 520 | To do this we're using [Chai](https://www.chaijs.com/) which is an assertions library. These assertion functions are called "matchers", and the ones we're using here actually come from `chai-ethers` npm package (which itself is a fork of [Waffle chai matchers](https://getwaffle.io/) without unecessary dependencies). 521 | 522 | ### Using a different account 523 | 524 | While testing your code, you may need to send a transaction from an account other than the default one. To do this you can use the second argument to `getContract` : 525 | 526 | ```typescript 527 | import {expect} from "./chai-setup"; 528 | 529 | import {ethers, deployments, getNamedAccounts, getUnnamedAccounts} from 'hardhat'; 530 | 531 | describe("Token contract", function() { 532 | it("Deployment should assign the total supply of tokens to the owner", async function() { 533 | await deployments.fixture(["Token"]); 534 | const {tokenOwner} = await getNamedAccounts(); 535 | const users = await getUnnamedAccounts(); 536 | const TokenAsOwner = await ethers.getContract("Token", tokenOwner); 537 | await TokenAsOwner.transfer(users[0], 50); 538 | expect(await TokenAsOwner.balanceOf(users[0])).to.equal(50); 539 | 540 | const TokenAsUser0 = await ethers.getContract("Token", users[0]); 541 | await TokenAsUser0.transfer(users[1], 50); 542 | expect(await TokenAsOwner.balanceOf(users[1])).to.equal(50); 543 | }); 544 | }); 545 | ``` 546 | 547 | ### Full coverage 548 | 549 | Now that we've covered the basics you'll need for testing your contracts, here's a full test suite for the token with a lot of additional information about Mocha and how to structure your tests. We recommend reading through. 550 | 551 | 552 | But first we add some utility functions that we will use in the test suite. 553 | 554 | Create a folder called `utils` in the `test` folder and inside it, create a file called `index.ts` with the following content: 555 | 556 | ```typescript 557 | import {Contract} from 'ethers'; 558 | import {ethers} from 'hardhat'; 559 | 560 | export async function setupUsers( 561 | addresses: string[], 562 | contracts: T 563 | ): Promise<({address: string} & T)[]> { 564 | const users: ({address: string} & T)[] = []; 565 | for (const address of addresses) { 566 | users.push(await setupUser(address, contracts)); 567 | } 568 | return users; 569 | } 570 | 571 | export async function setupUser( 572 | address: string, 573 | contracts: T 574 | ): Promise<{address: string} & T> { 575 | // eslint-disable-next-line @typescript-eslint/no-explicit-any 576 | const user: any = {address}; 577 | for (const key of Object.keys(contracts)) { 578 | user[key] = contracts[key].connect(await ethers.getSigner(address)); 579 | } 580 | return user as {address: string} & T; 581 | } 582 | 583 | ``` 584 | 585 | This approach will allow you to have succinct and easy to read tests as you can see from the following example. 586 | 587 | Here is the test suite. Overwrite Test.test.ts with the following content: 588 | 589 | ```typescript 590 | // We import Chai to use its assertion functions here. 591 | import {expect} from "./chai-setup"; 592 | 593 | // we import our utilities 594 | import {setupUsers, setupUser} from './utils'; 595 | 596 | // We import the hardhat environment field we are planning to use 597 | import {ethers, deployments, getNamedAccounts, getUnnamedAccounts} from 'hardhat'; 598 | 599 | // we create a setup function that can be called by every test and setup variable for easy to read tests 600 | async function setup () { 601 | // it first ensures the deployment is executed and reset (use of evm_snapshot for faster tests) 602 | await deployments.fixture(["Token"]); 603 | 604 | // we get an instantiated contract in the form of a ethers.js Contract instance: 605 | const contracts = { 606 | Token: (await ethers.getContract('Token')), 607 | }; 608 | 609 | // we get the tokenOwner 610 | const {tokenOwner} = await getNamedAccounts(); 611 | 612 | // Get the unnammedAccounts (which are basically all accounts not named in the config, 613 | // This is useful for tests as you can be sure they have noy been given tokens for example) 614 | // We then use the utilities function to generate user objects 615 | // These object allow you to write things like `users[0].Token.transfer(....)` 616 | const users = await setupUsers(await getUnnamedAccounts(), contracts); 617 | // finally we return the whole object (including the tokenOwner setup as a User object) 618 | return { 619 | ...contracts, 620 | users, 621 | tokenOwner: await setupUser(tokenOwner, contracts), 622 | }; 623 | } 624 | 625 | // `describe` is a Mocha function that allows you to organize your tests. It's 626 | // not actually needed, but having your tests organized makes debugging them 627 | // easier. All Mocha functions are available in the global scope. 628 | 629 | // `describe` receives the name of a section of your test suite, and a callback. 630 | // The callback must define the tests of that section. This callback can't be 631 | // an async function. 632 | describe("Token contract", function() { 633 | 634 | // You can nest describe calls to create subsections. 635 | describe("Deployment", function () { 636 | // `it` is another Mocha function. This is the one you use to define your 637 | // tests. It receives the test name, and a callback function. 638 | 639 | // If the callback function is async, Mocha will `await` it. 640 | it("Should set the right owner", async function () { 641 | // Expect receives a value, and wraps it in an Assertion object. These 642 | // objects have a lot of utility methods to assert values. 643 | 644 | // before the test, we call the fixture function. 645 | // while mocha have hooks to perform these automatically, they force you to declare the variable in greater scope which can introduce subttle errors 646 | // as such we prefers to have the setup called right at the beginning of the test. this also allow yout o name it accordingly for easier to read tests. 647 | const {Token} = await setup(); 648 | 649 | 650 | // This test expects the owner variable stored in the contract to be equal to our configured owner 651 | const {tokenOwner} = await getNamedAccounts(); 652 | expect(await Token.owner()).to.equal(tokenOwner); 653 | }); 654 | 655 | it("Should assign the total supply of tokens to the owner", async function () { 656 | const {Token, tokenOwner} = await setup(); 657 | const ownerBalance = await Token.balanceOf(tokenOwner.address); 658 | expect(await Token.totalSupply()).to.equal(ownerBalance); 659 | }); 660 | }); 661 | 662 | describe("Transactions", function () { 663 | it("Should transfer tokens between accounts", async function () { 664 | const {Token, users, tokenOwner} = await setup(); 665 | // Transfer 50 tokens from owner to users[0] 666 | await tokenOwner.Token.transfer(users[0].address, 50); 667 | const users0Balance = await Token.balanceOf(users[0].address); 668 | expect(users0Balance).to.equal(50); 669 | 670 | // Transfer 50 tokens from users[0] to users[1] 671 | // We use .connect(signer) to send a transaction from another account 672 | await users[0].Token.transfer(users[1].address, 50); 673 | const users1Balance = await Token.balanceOf(users[1].address); 674 | expect(users1Balance).to.equal(50); 675 | }); 676 | 677 | it("Should fail if sender doesn’t have enough tokens", async function () { 678 | const {Token, users, tokenOwner} = await setup(); 679 | const initialOwnerBalance = await Token.balanceOf(tokenOwner.address); 680 | 681 | // Try to send 1 token from users[0] (0 tokens) to owner (1000 tokens). 682 | // `require` will evaluate false and revert the transaction. 683 | await expect(users[0].Token.transfer(tokenOwner.address, 1) 684 | ).to.be.revertedWith("Not enough tokens"); 685 | 686 | // Owner balance shouldn't have changed. 687 | expect(await Token.balanceOf(tokenOwner.address)).to.equal( 688 | initialOwnerBalance 689 | ); 690 | }); 691 | 692 | it("Should update balances after transfers", async function () { 693 | const {Token, users, tokenOwner} = await setup(); 694 | const initialOwnerBalance = await Token.balanceOf(tokenOwner.address); 695 | 696 | // Transfer 100 tokens from owner to users[0]. 697 | await tokenOwner.Token.transfer(users[0].address, 100); 698 | 699 | // Transfer another 50 tokens from owner to users[1]. 700 | await tokenOwner.Token.transfer(users[1].address, 50); 701 | 702 | // Check balances. 703 | const finalOwnerBalance = await Token.balanceOf(tokenOwner.address); 704 | expect(finalOwnerBalance).to.equal(initialOwnerBalance - 150); 705 | 706 | const users0Balance = await Token.balanceOf(users[0].address); 707 | expect(users0Balance).to.equal(100); 708 | 709 | const users1Balance = await Token.balanceOf(users[1].address); 710 | expect(users1Balance).to.equal(50); 711 | }); 712 | }); 713 | }); 714 | 715 | ``` 716 | 717 | This is what the output of `yarn hardhat test` should look like after running the full test suite: 718 | 719 | ``` 720 | $ yarn hardhat test 721 | 722 | Token contract 723 | Deployment 724 | ✓ Should set the right owner 725 | ✓ Should assign the total supply of tokens to the owner 726 | Transactions 727 | ✓ Should transfer tokens between accounts (199ms) 728 | ✓ Should fail if sender doesn’t have enough tokens 729 | ✓ Should update balances after transfers (111ms) 730 | 731 | 732 | 5 passing (1s) 733 | ``` 734 | 735 | Keep in mind that when you run `yarn hardhat test`, your contracts will be compiled if they've changed since the last time you ran your tests. 736 | 737 | 738 | # 6. Debugging with Hardhat Network 739 | **Hardhat** comes built-in with **Hardhat Network**, a local Ethereum network designed for development. It allows you to deploy your contracts, run your tests, and debug your code. It's the default network **Hardhat** connects to, so you don't need to set anything up for it to work, you just run your tests. 740 | 741 | ## Solidity `console.log` 742 | When running your contracts and tests on **Hardhat Network** you can print logging messages and contract variables calling `console.log()` from your Solidity code. To use it you have to import **Hardhat**'s`console.log` in your contract code. 743 | 744 | This is what it looks like: 745 | 746 | ```solidity 747 | pragma solidity 0.7.6; 748 | 749 | import "hardhat/console.sol"; 750 | 751 | contract Token { 752 | //... 753 | } 754 | ``` 755 | 756 | Try adding some `console.log` statments to the `transfer()` function as if you were using it in JavaScript: 757 | 758 | ```solidity {2,3} 759 | function transfer(address to, uint256 amount) external { 760 | console.log("Sender balance is %s tokens", balances[msg.sender]); 761 | console.log("Trying to send %s tokens to %s", amount, to); 762 | 763 | require(balances[msg.sender] >= amount, "Not enough tokens"); 764 | 765 | balances[msg.sender] -= amount; 766 | balances[to] += amount; 767 | } 768 | ``` 769 | 770 | The logging output will show when you run your tests: 771 | 772 | ```{8-11,14-17} 773 | $ yarn hardhat test 774 | 775 | Token contract 776 | Deployment 777 | ✓ Should set the right owner 778 | ✓ Should assign the total supply of tokens to the owner 779 | Transactions 780 | Sender balance is 1000 tokens 781 | Trying to send 50 tokens to 0xead9c93b79ae7c1591b1fb5323bd777e86e150d4 782 | Sender balance is 50 tokens 783 | Trying to send 50 tokens to 0xe5904695748fe4a84b40b3fc79de2277660bd1d3 784 | ✓ Should transfer tokens between accounts (373ms) 785 | ✓ Should fail if sender doesn’t have enough tokens 786 | Sender balance is 1000 tokens 787 | Trying to send 100 tokens to 0xead9c93b79ae7c1591b1fb5323bd777e86e150d4 788 | Sender balance is 900 tokens 789 | Trying to send 100 tokens to 0xe5904695748fe4a84b40b3fc79de2277660bd1d3 790 | ✓ Should update balances after transfers (187ms) 791 | 792 | 793 | 5 passing (2s) 794 | ``` 795 | Check out the [documentation](/hardhat-network/README.md#console-log) to learn more about this feature. 796 | 797 | # 7. Deploying to a live network 798 | Once you're ready to share your app with other people, you may want to deploy it to a live network! This way others can access an instance that's not running locally on your system. 799 | 800 | The Ethereum network that deals with real money is called "mainnet", and then there are other live networks that don't deal with real money but do mimic the real world scenario well, and can be used by others as a shared staging environment. These are called "testnets" and Ethereum has several of them: *Ropsten*, *Kovan*, *Rinkeby* and *Goerli*. 801 | 802 | At the software level, deploying to a testnet is the same as deploying to mainnet. The only difference is which network you connect to. 803 | 804 | Since we use `hardhat-deploy` plugin and we already set up our deployment procedures for the tests, we are ready to deploy to a live network, we just need to add some configuration for the network we intend to deploy to. 805 | 806 | As explained in our deployment section you can execute `yarn hardhat deploy` which will give you the following output, but does not actually deploy your contract anywhere except the default "in-memory" network (`hardhat`) 807 | 808 | ``` 809 | Nothing to compile 810 | deploying "Token" (tx: 0x259d19f33819ec8d3bd994f82912aec6af1a18ec5d74303cfb28d793a10ff683)...: deployed at 0x5FbDB2315678afecb367f032d93F642f64180aa3 with 592983 gas 811 | Done in 3.79s. 812 | ``` 813 | 814 | To deploy to a specific network, you need to add `--network ` like this: 815 | 816 | ``` 817 | yarn hardhat --network deploy 818 | ``` 819 | 820 | ## Deploying to remote networks 821 | To deploy to a remote network such as mainnet or any testnet, you need to add a `network` entry to your `hardhat.config.js` file. We’ll use Rinkeby for this example, but you can add any network. 822 | 823 | To make it easier to handle the private keys and network configuration, we create a new folder at the root of your project `utils` 824 | 825 | In it we create a file `network.ts` with the following content: 826 | 827 | ```typescript 828 | import 'dotenv/config'; 829 | export function node_url(networkName: string): string { 830 | if (networkName) { 831 | const uri = process.env['ETH_NODE_URI_' + networkName.toUpperCase()]; 832 | if (uri && uri !== '') { 833 | return uri; 834 | } 835 | } 836 | 837 | let uri = process.env.ETH_NODE_URI; 838 | if (uri) { 839 | uri = uri.replace('{{networkName}}', networkName); 840 | } 841 | if (!uri || uri === '') { 842 | if (networkName === 'localhost') { 843 | return 'http://localhost:8545'; 844 | } 845 | return ''; 846 | } 847 | if (uri.indexOf('{{') >= 0) { 848 | throw new Error( 849 | `invalid uri or network not supported by node provider : ${uri}` 850 | ); 851 | } 852 | return uri; 853 | } 854 | 855 | export function getMnemonic(networkName?: string): string { 856 | if (networkName) { 857 | const mnemonic = process.env['MNEMONIC_' + networkName.toUpperCase()]; 858 | if (mnemonic && mnemonic !== '') { 859 | return mnemonic; 860 | } 861 | } 862 | 863 | const mnemonic = process.env.MNEMONIC; 864 | if (!mnemonic || mnemonic === '') { 865 | return 'test test test test test test test test test test test junk'; 866 | } 867 | return mnemonic; 868 | } 869 | 870 | export function accounts(networkName?: string): {mnemonic: string} { 871 | return {mnemonic: getMnemonic(networkName)}; 872 | } 873 | ``` 874 | 875 | Then we can modifiy our `hardhat.config.ts` file to contain the following: 876 | 877 | ```typescript {5,11,15-20} 878 | import {HardhatUserConfig} from 'hardhat/types'; 879 | import 'hardhat-deploy'; 880 | import 'hardhat-deploy-ethers'; 881 | import {node_url, accounts} from './utils/network'; 882 | 883 | const config: HardhatUserConfig = { 884 | solidity: { 885 | version: '0.7.6', 886 | }, 887 | networks: { 888 | rinkeby: { 889 | url: node_url('rinkeby'), 890 | accounts: accounts('rinkeby'), 891 | }, 892 | }, 893 | namedAccounts: { 894 | deployer: 0, 895 | tokenOwner: 1, 896 | }, 897 | paths: { 898 | sources: 'src', 899 | }, 900 | }; 901 | export default config; 902 | 903 | ``` 904 | 905 | Finally we need to setup the environment variable that `utils/networks.ts` reads automatically from `.env` 906 | 907 | create a `.env` with the following content. This is where you write your own alchemy api key and mnemonic for rinkeby 908 | 909 | ``` 910 | ETH_NODE_URI_RINKEBY=https://eth-rinkeby.alchemyapi.io/v2/ 911 | MNEMONIC_RINKEBY= 912 | ``` 913 | 914 | We're using [Alchemy](https://www.alchemyapi.io), but pointing `url` to any Ethereum node or gateway would work. Go grab your api key and come back. 915 | 916 | To deploy on Rinkeby you need to send rinkeby-ETH into the address that's going to be making the deployment. You can get some ETH for testnets from a faucet, a service that distributes testing ETH for free. [Here's the one for Rinkeby](https://faucet.metamask.io/). You'll have to change Metamask's network to Rinkeby before transacting. 917 | 918 | ::: tip 919 | You can get some ETH for other testnets following these links: 920 | 921 | * [Kovan faucet](https://faucet.kovan.network/) 922 | * [Rinkeby faucet](https://faucet.rinkeby.io/) 923 | * [Goerli faucet](https://goerli-faucet.slock.it/) 924 | ::: 925 | 926 | Finally, run: 927 | ``` 928 | yarn hardhat --network rinkeby deploy 929 | ``` 930 | 931 | If everything went well, you should see something like: 932 | 933 | ``` 934 | Nothing to compile 935 | deploying "Token" (tx: 0xb40879c3162e6a924cfadfc1027c4629dd57ee4ba08a5f8af575be1c751cd515)...: deployed at 0x8bDFEf5f67685725BC0eD9f54f20A2A4d3FEDA98 with 475842 gas 936 | ``` 937 | 938 | You will also see that some files have been created in the `deployments/rinkeby` folder. 939 | 940 | Most notably you'll see `deployments/rinkeby/Token.json` which contains useful information about your deployed contract, including the address, abi, and the solidity input used to create it. 941 | 942 | You can then verify it using sourcify or etherscan. 943 | 944 | For sourcify you can execute the following: 945 | 946 | ``` 947 | yarn hardhat --network rinkeby sourcify 948 | ``` 949 | 950 | this should give you the following output (with different address) : 951 | 952 | ``` 953 | verifying Token (0x8bDFEf5f67685725BC0eD9f54f20A2A4d3FEDA98 on chain 4) ... 954 | => contract Token is now verified 955 | ``` 956 | 957 | For etherscan you can do the following: 958 | 959 | (Note you can also specify the api key via the env variable ETHERSCAN_API_KEY) 960 | 961 | ``` 962 | yarn hardhat --network rinkeby etherscan-verify --api-key 963 | ``` 964 | 965 | You should then see: 966 | 967 | ``` 968 | verifying Token (0x8bDFEf5f67685725BC0eD9f54f20A2A4d3FEDA98) ... 969 | waiting for result... 970 | => contract Token is now verified 971 | ``` 972 | -------------------------------------------------------------------------------- /deploy/001_deploy_token.ts: -------------------------------------------------------------------------------- 1 | import {HardhatRuntimeEnvironment} from 'hardhat/types'; 2 | import {DeployFunction} from 'hardhat-deploy/types'; 3 | 4 | const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { 5 | const {deployments, getNamedAccounts} = hre; 6 | const {deploy} = deployments; 7 | 8 | const {deployer, tokenOwner} = await getNamedAccounts(); 9 | 10 | await deploy('Token', { 11 | from: deployer, 12 | args: [tokenOwner], 13 | log: true, 14 | }); 15 | }; 16 | export default func; 17 | func.tags = ['Token']; 18 | -------------------------------------------------------------------------------- /deployments/rinkeby/.chainId: -------------------------------------------------------------------------------- 1 | 4 -------------------------------------------------------------------------------- /deployments/rinkeby/Token.json: -------------------------------------------------------------------------------- 1 | { 2 | "address": "0x8bDFEf5f67685725BC0eD9f54f20A2A4d3FEDA98", 3 | "abi": [ 4 | { 5 | "inputs": [ 6 | { 7 | "internalType": "address", 8 | "name": "_owner", 9 | "type": "address" 10 | } 11 | ], 12 | "stateMutability": "nonpayable", 13 | "type": "constructor" 14 | }, 15 | { 16 | "inputs": [ 17 | { 18 | "internalType": "address", 19 | "name": "account", 20 | "type": "address" 21 | } 22 | ], 23 | "name": "balanceOf", 24 | "outputs": [ 25 | { 26 | "internalType": "uint256", 27 | "name": "", 28 | "type": "uint256" 29 | } 30 | ], 31 | "stateMutability": "view", 32 | "type": "function" 33 | }, 34 | { 35 | "inputs": [], 36 | "name": "name", 37 | "outputs": [ 38 | { 39 | "internalType": "string", 40 | "name": "", 41 | "type": "string" 42 | } 43 | ], 44 | "stateMutability": "view", 45 | "type": "function" 46 | }, 47 | { 48 | "inputs": [], 49 | "name": "owner", 50 | "outputs": [ 51 | { 52 | "internalType": "address", 53 | "name": "", 54 | "type": "address" 55 | } 56 | ], 57 | "stateMutability": "view", 58 | "type": "function" 59 | }, 60 | { 61 | "inputs": [], 62 | "name": "symbol", 63 | "outputs": [ 64 | { 65 | "internalType": "string", 66 | "name": "", 67 | "type": "string" 68 | } 69 | ], 70 | "stateMutability": "view", 71 | "type": "function" 72 | }, 73 | { 74 | "inputs": [], 75 | "name": "totalSupply", 76 | "outputs": [ 77 | { 78 | "internalType": "uint256", 79 | "name": "", 80 | "type": "uint256" 81 | } 82 | ], 83 | "stateMutability": "view", 84 | "type": "function" 85 | }, 86 | { 87 | "inputs": [ 88 | { 89 | "internalType": "address", 90 | "name": "to", 91 | "type": "address" 92 | }, 93 | { 94 | "internalType": "uint256", 95 | "name": "amount", 96 | "type": "uint256" 97 | } 98 | ], 99 | "name": "transfer", 100 | "outputs": [], 101 | "stateMutability": "nonpayable", 102 | "type": "function" 103 | } 104 | ], 105 | "transactionHash": "0xb40879c3162e6a924cfadfc1027c4629dd57ee4ba08a5f8af575be1c751cd515", 106 | "receipt": { 107 | "to": null, 108 | "from": "0x61c461EcC993aaDEB7e4b47E96d1B8cC37314B20", 109 | "contractAddress": "0x8bDFEf5f67685725BC0eD9f54f20A2A4d3FEDA98", 110 | "transactionIndex": 10, 111 | "gasUsed": "475842", 112 | "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", 113 | "blockHash": "0xf365b798b73289c5e04a94792bf08ef91fffdc748b96398bf58092264038bbe9", 114 | "transactionHash": "0xb40879c3162e6a924cfadfc1027c4629dd57ee4ba08a5f8af575be1c751cd515", 115 | "logs": [], 116 | "blockNumber": 8284846, 117 | "cumulativeGasUsed": "2575320", 118 | "status": 1, 119 | "byzantium": true 120 | }, 121 | "args": [ 122 | "0xE53cd71271AcAdbeb0f64d9c8C62bBdDc8cA9e66" 123 | ], 124 | "solcInputHash": "a51ea66d3b3abe8ca5d0ce048c409140", 125 | "metadata": "{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"balanceOf(address)\":{\"notice\":\"Read only function to retrieve the token balance of a given account. The `view` modifier indicates that it doesn't modify the contract's state, which allows us to call it without executing a transaction.\"},\"constructor\":{\"notice\":\"Contract initialization. The `constructor` is executed only once when the contract is created.\"},\"transfer(address,uint256)\":{\"notice\":\"A function to transfer tokens. The `external` modifier makes a function *only* callable from outside the contract.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Token.sol\":\"Token\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"src/Token.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// The line above is recommended and let you define the license of your contract\\n// Solidity files have to start with this pragma.\\n// It will be used by the Solidity compiler to validate its version.\\npragma solidity ^0.7.6;\\n\\n\\n// This is the main building block for smart contracts.\\ncontract Token {\\n // Some string type variables to identify the token.\\n // The `public` modifier makes a variable readable from outside the contract.\\n string public name = \\\"My Hardhat Token\\\";\\n string public symbol = \\\"MBT\\\";\\n\\n // The fixed amount of tokens stored in an unsigned integer type variable.\\n uint256 public totalSupply = 1000000;\\n\\n // An address type variable is used to store ethereum accounts.\\n address public owner;\\n\\n // A mapping is a key/value map. Here we store each account balance.\\n mapping(address => uint256) balances;\\n\\n /**\\n * Contract initialization.\\n *\\n * The `constructor` is executed only once when the contract is created.\\n */\\n constructor(address _owner) {\\n // The totalSupply is assigned to transaction sender, which is the account\\n // that is deploying the contract.\\n balances[_owner] = totalSupply;\\n owner = _owner;\\n }\\n\\n /**\\n * A function to transfer tokens.\\n *\\n * The `external` modifier makes a function *only* callable from outside\\n * the contract.\\n */\\n function transfer(address to, uint256 amount) external {\\n // Check if the transaction sender has enough tokens.\\n // If `require`'s first argument evaluates to `false` then the\\n // transaction will revert.\\n require(balances[msg.sender] >= amount, \\\"Not enough tokens\\\");\\n\\n // Transfer the amount.\\n balances[msg.sender] -= amount;\\n balances[to] += amount;\\n }\\n\\n /**\\n * Read only function to retrieve the token balance of a given account.\\n *\\n * The `view` modifier indicates that it doesn't modify the contract's\\n * state, which allows us to call it without executing a transaction.\\n */\\n function balanceOf(address account) external view returns (uint256) {\\n return balances[account];\\n }\\n}\\n\",\"keccak256\":\"0x4a79698f82e8618dbcb912a8bc25804ce07bb5520e7c872c1a0bf71c75b48123\",\"license\":\"MIT\"}},\"version\":1}", 126 | "bytecode": "0x60806040526040518060400160405280601081526020017f4d79204861726468617420546f6b656e000000000000000000000000000000008152506000908051906020019061004f929190610170565b506040518060400160405280600381526020017f4d425400000000000000000000000000000000000000000000000000000000008152506001908051906020019061009b929190610170565b50620f42406002553480156100af57600080fd5b506040516107c93803806107c9833981810160405260208110156100d257600080fd5b8101908080519060200190929190505050600254600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061021b565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826101a657600085556101ed565b82601f106101bf57805160ff19168380011785556101ed565b828001600101855582156101ed579182015b828111156101ec5782518255916020019190600101906101d1565b5b5090506101fa91906101fe565b5090565b5b808211156102175760008160009055506001016101ff565b5090565b61059f8061022a6000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806306fdde031461006757806318160ddd146100ea57806370a08231146101085780638da5cb5b1461016057806395d89b4114610194578063a9059cbb14610217575b600080fd5b61006f610265565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100af578082015181840152602081019050610094565b50505050905090810190601f1680156100dc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6100f2610303565b6040518082815260200191505060405180910390f35b61014a6004803603602081101561011e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610309565b6040518082815260200191505060405180910390f35b610168610352565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61019c610378565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101dc5780820151818401526020810190506101c1565b50505050905090810190601f1680156102095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102636004803603604081101561022d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610416565b005b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156102fb5780601f106102d0576101008083540402835291602001916102fb565b820191906000526020600020905b8154815290600101906020018083116102de57829003601f168201915b505050505081565b60025481565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561040e5780601f106103e35761010080835404028352916020019161040e565b820191906000526020600020905b8154815290600101906020018083116103f157829003601f168201915b505050505081565b80600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156104cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4e6f7420656e6f75676820746f6b656e7300000000000000000000000000000081525060200191505060405180910390fd5b80600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550505056fea2646970667358221220b3aca42ddc58972eb854cf2b30bcaae8aec0cda09ffe78f55aff3201615d192064736f6c63430007060033", 127 | "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c806306fdde031461006757806318160ddd146100ea57806370a08231146101085780638da5cb5b1461016057806395d89b4114610194578063a9059cbb14610217575b600080fd5b61006f610265565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100af578082015181840152602081019050610094565b50505050905090810190601f1680156100dc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6100f2610303565b6040518082815260200191505060405180910390f35b61014a6004803603602081101561011e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610309565b6040518082815260200191505060405180910390f35b610168610352565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61019c610378565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101dc5780820151818401526020810190506101c1565b50505050905090810190601f1680156102095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102636004803603604081101561022d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610416565b005b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156102fb5780601f106102d0576101008083540402835291602001916102fb565b820191906000526020600020905b8154815290600101906020018083116102de57829003601f168201915b505050505081565b60025481565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561040e5780601f106103e35761010080835404028352916020019161040e565b820191906000526020600020905b8154815290600101906020018083116103f157829003601f168201915b505050505081565b80600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156104cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4e6f7420656e6f75676820746f6b656e7300000000000000000000000000000081525060200191505060405180910390fd5b80600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550505056fea2646970667358221220b3aca42ddc58972eb854cf2b30bcaae8aec0cda09ffe78f55aff3201615d192064736f6c63430007060033", 128 | "devdoc": { 129 | "kind": "dev", 130 | "methods": {}, 131 | "version": 1 132 | }, 133 | "userdoc": { 134 | "kind": "user", 135 | "methods": { 136 | "balanceOf(address)": { 137 | "notice": "Read only function to retrieve the token balance of a given account. The `view` modifier indicates that it doesn't modify the contract's state, which allows us to call it without executing a transaction." 138 | }, 139 | "constructor": { 140 | "notice": "Contract initialization. The `constructor` is executed only once when the contract is created." 141 | }, 142 | "transfer(address,uint256)": { 143 | "notice": "A function to transfer tokens. The `external` modifier makes a function *only* callable from outside the contract." 144 | } 145 | }, 146 | "version": 1 147 | }, 148 | "storageLayout": { 149 | "storage": [ 150 | { 151 | "astId": 4, 152 | "contract": "src/Token.sol:Token", 153 | "label": "name", 154 | "offset": 0, 155 | "slot": "0", 156 | "type": "t_string_storage" 157 | }, 158 | { 159 | "astId": 7, 160 | "contract": "src/Token.sol:Token", 161 | "label": "symbol", 162 | "offset": 0, 163 | "slot": "1", 164 | "type": "t_string_storage" 165 | }, 166 | { 167 | "astId": 10, 168 | "contract": "src/Token.sol:Token", 169 | "label": "totalSupply", 170 | "offset": 0, 171 | "slot": "2", 172 | "type": "t_uint256" 173 | }, 174 | { 175 | "astId": 12, 176 | "contract": "src/Token.sol:Token", 177 | "label": "owner", 178 | "offset": 0, 179 | "slot": "3", 180 | "type": "t_address" 181 | }, 182 | { 183 | "astId": 16, 184 | "contract": "src/Token.sol:Token", 185 | "label": "balances", 186 | "offset": 0, 187 | "slot": "4", 188 | "type": "t_mapping(t_address,t_uint256)" 189 | } 190 | ], 191 | "types": { 192 | "t_address": { 193 | "encoding": "inplace", 194 | "label": "address", 195 | "numberOfBytes": "20" 196 | }, 197 | "t_mapping(t_address,t_uint256)": { 198 | "encoding": "mapping", 199 | "key": "t_address", 200 | "label": "mapping(address => uint256)", 201 | "numberOfBytes": "32", 202 | "value": "t_uint256" 203 | }, 204 | "t_string_storage": { 205 | "encoding": "bytes", 206 | "label": "string", 207 | "numberOfBytes": "32" 208 | }, 209 | "t_uint256": { 210 | "encoding": "inplace", 211 | "label": "uint256", 212 | "numberOfBytes": "32" 213 | } 214 | } 215 | } 216 | } -------------------------------------------------------------------------------- /deployments/rinkeby/solcInputs/a51ea66d3b3abe8ca5d0ce048c409140.json: -------------------------------------------------------------------------------- 1 | { 2 | "language": "Solidity", 3 | "sources": { 4 | "src/Token.sol": { 5 | "content": "// SPDX-License-Identifier: MIT\n// The line above is recommended and let you define the license of your contract\n// Solidity files have to start with this pragma.\n// It will be used by the Solidity compiler to validate its version.\npragma solidity ^0.7.6;\n\n\n// This is the main building block for smart contracts.\ncontract Token {\n // Some string type variables to identify the token.\n // The `public` modifier makes a variable readable from outside the contract.\n string public name = \"My Hardhat Token\";\n string public symbol = \"MBT\";\n\n // The fixed amount of tokens stored in an unsigned integer type variable.\n uint256 public totalSupply = 1000000;\n\n // An address type variable is used to store ethereum accounts.\n address public owner;\n\n // A mapping is a key/value map. Here we store each account balance.\n mapping(address => uint256) balances;\n\n /**\n * Contract initialization.\n *\n * The `constructor` is executed only once when the contract is created.\n */\n constructor(address _owner) {\n // The totalSupply is assigned to transaction sender, which is the account\n // that is deploying the contract.\n balances[_owner] = totalSupply;\n owner = _owner;\n }\n\n /**\n * A function to transfer tokens.\n *\n * The `external` modifier makes a function *only* callable from outside\n * the contract.\n */\n function transfer(address to, uint256 amount) external {\n // Check if the transaction sender has enough tokens.\n // If `require`'s first argument evaluates to `false` then the\n // transaction will revert.\n require(balances[msg.sender] >= amount, \"Not enough tokens\");\n\n // Transfer the amount.\n balances[msg.sender] -= amount;\n balances[to] += amount;\n }\n\n /**\n * Read only function to retrieve the token balance of a given account.\n *\n * The `view` modifier indicates that it doesn't modify the contract's\n * state, which allows us to call it without executing a transaction.\n */\n function balanceOf(address account) external view returns (uint256) {\n return balances[account];\n }\n}\n" 6 | } 7 | }, 8 | "settings": { 9 | "optimizer": { 10 | "enabled": false, 11 | "runs": 200 12 | }, 13 | "outputSelection": { 14 | "*": { 15 | "*": [ 16 | "abi", 17 | "evm.bytecode", 18 | "evm.deployedBytecode", 19 | "evm.methodIdentifiers", 20 | "metadata", 21 | "devdoc", 22 | "userdoc", 23 | "storageLayout", 24 | "evm.gasEstimates" 25 | ], 26 | "": [ 27 | "ast" 28 | ] 29 | } 30 | }, 31 | "metadata": { 32 | "useLiteralContent": true 33 | } 34 | } 35 | } -------------------------------------------------------------------------------- /hardhat.config.ts: -------------------------------------------------------------------------------- 1 | import {HardhatUserConfig} from 'hardhat/types'; 2 | import 'hardhat-deploy'; 3 | import 'hardhat-deploy-ethers'; 4 | import {node_url, accounts} from './utils/network'; 5 | 6 | const config: HardhatUserConfig = { 7 | solidity: { 8 | version: '0.7.6', 9 | }, 10 | networks: { 11 | rinkeby: { 12 | url: node_url('rinkeby'), 13 | accounts: accounts('rinkeby'), 14 | }, 15 | }, 16 | namedAccounts: { 17 | deployer: 0, 18 | tokenOwner: 1, 19 | }, 20 | paths: { 21 | sources: 'src', 22 | }, 23 | }; 24 | export default config; 25 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hardhat-tutorial", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "devDependencies": { 7 | "@types/chai": "^4.2.15", 8 | "@types/mocha": "^8.2.2", 9 | "@types/node": "^14.14.35", 10 | "chai": "^4.3.4", 11 | "chai-ethers": "^0.0.1", 12 | "dotenv": "^8.2.0", 13 | "ethers": "^5.0.32", 14 | "hardhat": "^2.1.1", 15 | "hardhat-deploy": "^0.7.0-beta.50", 16 | "hardhat-deploy-ethers": "^0.3.0-beta.7", 17 | "mocha": "^8.3.2", 18 | "ts-node": "^9.1.1", 19 | "typescript": "^4.2.3" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/Token.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // The line above is recommended and let you define the license of your contract 3 | // Solidity files have to start with this pragma. 4 | // It will be used by the Solidity compiler to validate its version. 5 | pragma solidity ^0.7.6; 6 | 7 | 8 | // This is the main building block for smart contracts. 9 | contract Token { 10 | // Some string type variables to identify the token. 11 | // The `public` modifier makes a variable readable from outside the contract. 12 | string public name = "My Hardhat Token"; 13 | string public symbol = "MBT"; 14 | 15 | // The fixed amount of tokens stored in an unsigned integer type variable. 16 | uint256 public totalSupply = 1000000; 17 | 18 | // An address type variable is used to store ethereum accounts. 19 | address public owner; 20 | 21 | // A mapping is a key/value map. Here we store each account balance. 22 | mapping(address => uint256) balances; 23 | 24 | /** 25 | * Contract initialization. 26 | * 27 | * The `constructor` is executed only once when the contract is created. 28 | */ 29 | constructor(address _owner) { 30 | // The totalSupply is assigned to transaction sender, which is the account 31 | // that is deploying the contract. 32 | balances[_owner] = totalSupply; 33 | owner = _owner; 34 | } 35 | 36 | /** 37 | * A function to transfer tokens. 38 | * 39 | * The `external` modifier makes a function *only* callable from outside 40 | * the contract. 41 | */ 42 | function transfer(address to, uint256 amount) external { 43 | // Check if the transaction sender has enough tokens. 44 | // If `require`'s first argument evaluates to `false` then the 45 | // transaction will revert. 46 | require(balances[msg.sender] >= amount, "Not enough tokens"); 47 | 48 | // Transfer the amount. 49 | balances[msg.sender] -= amount; 50 | balances[to] += amount; 51 | } 52 | 53 | /** 54 | * Read only function to retrieve the token balance of a given account. 55 | * 56 | * The `view` modifier indicates that it doesn't modify the contract's 57 | * state, which allows us to call it without executing a transaction. 58 | */ 59 | function balanceOf(address account) external view returns (uint256) { 60 | return balances[account]; 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /test/Test.test.ts: -------------------------------------------------------------------------------- 1 | // We import Chai to use its asserting functions here. 2 | import {expect} from "./chai-setup"; 3 | 4 | // we import our utilities 5 | import {setupUsers, setupUser} from './utils'; 6 | 7 | // We import the hardhat environment field we are planning to use 8 | import {ethers, deployments, getNamedAccounts, getUnnamedAccounts} from 'hardhat'; 9 | 10 | // we create a stup function that can be called by every test and setup variable for easy to read tests 11 | async function setup () { 12 | // it first ensure the deployment is executed and reset (use of evm_snaphost for fast test) 13 | await deployments.fixture(["Token"]); 14 | 15 | // we get an instantiated contract in the form of a ethers.js Contract instance: 16 | const contracts = { 17 | Token: (await ethers.getContract('Token')), 18 | }; 19 | 20 | // we get the tokenOwner 21 | const {tokenOwner} = await getNamedAccounts(); 22 | // get fet unnammedAccounts (which are basically all accounts not named in the config, useful for tests as you can be sure they do not have been given token for example) 23 | // we then use the utilities function to generate user object/ 24 | // These object allow you to write things like `users[0].Token.transfer(....)` 25 | const users = await setupUsers(await getUnnamedAccounts(), contracts); 26 | // finally we return the whole object (including the tokenOwner setup as a User object) 27 | return { 28 | ...contracts, 29 | users, 30 | tokenOwner: await setupUser(tokenOwner, contracts), 31 | }; 32 | } 33 | 34 | // `describe` is a Mocha function that allows you to organize your tests. It's 35 | // not actually needed, but having your tests organized makes debugging them 36 | // easier. All Mocha functions are available in the global scope. 37 | 38 | // `describe` receives the name of a section of your test suite, and a callback. 39 | // The callback must define the tests of that section. This callback can't be 40 | // an async function. 41 | describe("Token contract", function() { 42 | 43 | // You can nest describe calls to create subsections. 44 | describe("Deployment", function () { 45 | // `it` is another Mocha function. This is the one you use to define your 46 | // tests. It receives the test name, and a callback function. 47 | 48 | // If the callback function is async, Mocha will `await` it. 49 | it("Should set the right owner", async function () { 50 | // Expect receives a value, and wraps it in an Assertion object. These 51 | // objects have a lot of utility methods to assert values. 52 | 53 | // before the test, we call the fixture function. 54 | // while mocha have hooks to perform these automatically, they force you to declare the variable in greater scope which can introduce subttle errors 55 | // as such we prefers to have the setup called right at the beginning of the test. this also allow you to name it accordingly for easier to read tests. 56 | const {Token} = await setup(); 57 | 58 | 59 | // This test expects the owner variable stored in the contract to be equal to our configured owner 60 | const {tokenOwner} = await getNamedAccounts(); 61 | expect(await Token.owner()).to.equal(tokenOwner); 62 | }); 63 | 64 | it("Should assign the total supply of tokens to the owner", async function () { 65 | const {Token, tokenOwner} = await setup(); 66 | const ownerBalance = await Token.balanceOf(tokenOwner.address); 67 | expect(await Token.totalSupply()).to.equal(ownerBalance); 68 | }); 69 | }); 70 | 71 | describe("Transactions", function () { 72 | it("Should transfer tokens between accounts", async function () { 73 | const {Token, users, tokenOwner} = await setup(); 74 | // Transfer 50 tokens from owner to users[0] 75 | await tokenOwner.Token.transfer(users[0].address, 50); 76 | const users0Balance = await Token.balanceOf(users[0].address); 77 | expect(users0Balance).to.equal(50); 78 | 79 | // Transfer 50 tokens from users[0] to users[1] 80 | // We use .connect(signer) to send a transaction from another account 81 | await users[0].Token.transfer(users[1].address, 50); 82 | const users1Balance = await Token.balanceOf(users[1].address); 83 | expect(users1Balance).to.equal(50); 84 | }); 85 | 86 | it("Should fail if sender doesn’t have enough tokens", async function () { 87 | const {Token, users, tokenOwner} = await setup(); 88 | const initialOwnerBalance = await Token.balanceOf(tokenOwner.address); 89 | 90 | // Try to send 1 token from users[0] (0 tokens) to owner (1000 tokens). 91 | // `require` will evaluate false and revert the transaction. 92 | await expect(users[0].Token.transfer(tokenOwner.address, 1) 93 | ).to.be.revertedWith("Not enough tokens"); 94 | 95 | // Owner balance shouldn't have changed. 96 | expect(await Token.balanceOf(tokenOwner.address)).to.equal( 97 | initialOwnerBalance 98 | ); 99 | }); 100 | 101 | it("Should update balances after transfers", async function () { 102 | const {Token, users, tokenOwner} = await setup(); 103 | const initialOwnerBalance = await Token.balanceOf(tokenOwner.address); 104 | 105 | // Transfer 100 tokens from owner to users[0]. 106 | await tokenOwner.Token.transfer(users[0].address, 100); 107 | 108 | // Transfer another 50 tokens from owner to users[1]. 109 | await tokenOwner.Token.transfer(users[1].address, 50); 110 | 111 | // Check balances. 112 | const finalOwnerBalance = await Token.balanceOf(tokenOwner.address); 113 | expect(finalOwnerBalance).to.equal(initialOwnerBalance - 150); 114 | 115 | const users0Balance = await Token.balanceOf(users[0].address); 116 | expect(users0Balance).to.equal(100); 117 | 118 | const users1Balance = await Token.balanceOf(users[1].address); 119 | expect(users1Balance).to.equal(50); 120 | }); 121 | }); 122 | }); 123 | -------------------------------------------------------------------------------- /test/chai-setup.ts: -------------------------------------------------------------------------------- 1 | import chaiModule from 'chai'; 2 | import {chaiEthers} from 'chai-ethers'; 3 | chaiModule.use(chaiEthers); 4 | export = chaiModule; 5 | -------------------------------------------------------------------------------- /test/utils/index.ts: -------------------------------------------------------------------------------- 1 | import {Contract} from 'ethers'; 2 | import {ethers} from 'hardhat'; 3 | 4 | export async function setupUsers( 5 | addresses: string[], 6 | contracts: T 7 | ): Promise<({address: string} & T)[]> { 8 | const users: ({address: string} & T)[] = []; 9 | for (const address of addresses) { 10 | users.push(await setupUser(address, contracts)); 11 | } 12 | return users; 13 | } 14 | 15 | export async function setupUser( 16 | address: string, 17 | contracts: T 18 | ): Promise<{address: string} & T> { 19 | // eslint-disable-next-line @typescript-eslint/no-explicit-any 20 | const user: any = {address}; 21 | for (const key of Object.keys(contracts)) { 22 | user[key] = contracts[key].connect(await ethers.getSigner(address)); 23 | } 24 | return user as {address: string} & T; 25 | } 26 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "strict": true, 6 | "esModuleInterop": true, 7 | "moduleResolution": "node", 8 | "forceConsistentCasingInFileNames": true, 9 | "outDir": "dist" 10 | }, 11 | "include": [ 12 | "hardhat.config.ts", 13 | "./scripts", 14 | "./deploy", 15 | "./test", 16 | "typechain/**/*" 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /utils/network.ts: -------------------------------------------------------------------------------- 1 | import 'dotenv/config'; 2 | export function node_url(networkName: string): string { 3 | if (networkName) { 4 | const uri = process.env['ETH_NODE_URI_' + networkName.toUpperCase()]; 5 | if (uri && uri !== '') { 6 | return uri; 7 | } 8 | } 9 | 10 | let uri = process.env.ETH_NODE_URI; 11 | if (uri) { 12 | uri = uri.replace('{{networkName}}', networkName); 13 | } 14 | if (!uri || uri === '') { 15 | if (networkName === 'localhost') { 16 | return 'http://localhost:8545'; 17 | } 18 | // throw new Error(`environment variable "ETH_NODE_URI" not configured `); 19 | return ''; 20 | } 21 | if (uri.indexOf('{{') >= 0) { 22 | throw new Error( 23 | `invalid uri or network not supported by nod eprovider : ${uri}` 24 | ); 25 | } 26 | return uri; 27 | } 28 | 29 | export function getMnemonic(networkName?: string): string { 30 | if (networkName) { 31 | const mnemonic = process.env['MNEMONIC_' + networkName.toUpperCase()]; 32 | if (mnemonic && mnemonic !== '') { 33 | return mnemonic; 34 | } 35 | } 36 | 37 | const mnemonic = process.env.MNEMONIC; 38 | if (!mnemonic || mnemonic === '') { 39 | return 'test test test test test test test test test test test junk'; 40 | } 41 | return mnemonic; 42 | } 43 | 44 | export function accounts(networkName?: string): {mnemonic: string} { 45 | return {mnemonic: getMnemonic(networkName)}; 46 | } 47 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@ethersproject/abi@5.0.13", "@ethersproject/abi@^5.0.10", "@ethersproject/abi@^5.0.2": 6 | version "5.0.13" 7 | resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.0.13.tgz#600a559c3730467716595658beaa2894b4352bcc" 8 | integrity sha512-2coOH3D7ra1lwamKEH0HVc+Jbcsw5yfeCgmY8ekhCDualEiyyovD2qDcMBBcY3+kjoLHVTmo7ost6MNClxdOrg== 9 | dependencies: 10 | "@ethersproject/address" "^5.0.9" 11 | "@ethersproject/bignumber" "^5.0.13" 12 | "@ethersproject/bytes" "^5.0.9" 13 | "@ethersproject/constants" "^5.0.8" 14 | "@ethersproject/hash" "^5.0.10" 15 | "@ethersproject/keccak256" "^5.0.7" 16 | "@ethersproject/logger" "^5.0.8" 17 | "@ethersproject/properties" "^5.0.7" 18 | "@ethersproject/strings" "^5.0.8" 19 | 20 | "@ethersproject/abstract-provider@5.0.10", "@ethersproject/abstract-provider@^5.0.8": 21 | version "5.0.10" 22 | resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.0.10.tgz#a533aed39a5f27312745c8c4c40fa25fc884831c" 23 | integrity sha512-OSReY5iz94iIaPlRvLiJP8YVIvQLx4aUvMMnHWSaA/vTU8QHZmgNlt4OBdYV1+aFY8Xl+VRYiWBHq72ZDKXXCQ== 24 | dependencies: 25 | "@ethersproject/bignumber" "^5.0.13" 26 | "@ethersproject/bytes" "^5.0.9" 27 | "@ethersproject/logger" "^5.0.8" 28 | "@ethersproject/networks" "^5.0.7" 29 | "@ethersproject/properties" "^5.0.7" 30 | "@ethersproject/transactions" "^5.0.9" 31 | "@ethersproject/web" "^5.0.12" 32 | 33 | "@ethersproject/abstract-signer@5.0.14", "@ethersproject/abstract-signer@^5.0.10", "@ethersproject/abstract-signer@^5.0.2": 34 | version "5.0.14" 35 | resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.0.14.tgz#30ef912b0f86599d90fdffc65c110452e7b55cf1" 36 | integrity sha512-JztBwVO7o5OHLh2vyjordlS4/1EjRyaECtc8vPdXTF1i4dXN+J0coeRoPN6ZFbBvi/YbaB6br2fvqhst1VQD/g== 37 | dependencies: 38 | "@ethersproject/abstract-provider" "^5.0.8" 39 | "@ethersproject/bignumber" "^5.0.13" 40 | "@ethersproject/bytes" "^5.0.9" 41 | "@ethersproject/logger" "^5.0.8" 42 | "@ethersproject/properties" "^5.0.7" 43 | 44 | "@ethersproject/address@5.0.11", "@ethersproject/address@^5.0.2", "@ethersproject/address@^5.0.9": 45 | version "5.0.11" 46 | resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.0.11.tgz#12022e8c590c33939beb5ab18b401ecf585eac59" 47 | integrity sha512-Et4GBdD8/tsBGjCEOKee9upN29qjL5kbRcmJifb4Penmiuh9GARXL2/xpXvEp5EW+EIW/rfCHFJrkYBgoQFQBw== 48 | dependencies: 49 | "@ethersproject/bignumber" "^5.0.13" 50 | "@ethersproject/bytes" "^5.0.9" 51 | "@ethersproject/keccak256" "^5.0.7" 52 | "@ethersproject/logger" "^5.0.8" 53 | "@ethersproject/rlp" "^5.0.7" 54 | 55 | "@ethersproject/base64@5.0.9", "@ethersproject/base64@^5.0.7": 56 | version "5.0.9" 57 | resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.0.9.tgz#bb1f35d3dba92082a574d5e2418f9202a0a1a7e6" 58 | integrity sha512-37RBz5LEZ9SlTNGiWCYFttnIN9J7qVs9Xo2EbqGqDH5LfW9EIji66S+YDMpXVo1zWDax1FkEldAoatxHK2gfgA== 59 | dependencies: 60 | "@ethersproject/bytes" "^5.0.9" 61 | 62 | "@ethersproject/basex@5.0.9", "@ethersproject/basex@^5.0.7": 63 | version "5.0.9" 64 | resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.0.9.tgz#00d727a031bac563cb8bb900955206f1bf3cf1fc" 65 | integrity sha512-FANswl1IN3PS0eltQxH2aM2+utPrkLUVG4XVFi6SafRG9EpAqXCgycxC8PU90mPGhigYTpg9cnTB5mCZ6ejQjw== 66 | dependencies: 67 | "@ethersproject/bytes" "^5.0.9" 68 | "@ethersproject/properties" "^5.0.7" 69 | 70 | "@ethersproject/bignumber@5.0.15", "@ethersproject/bignumber@^5.0.13", "@ethersproject/bignumber@^5.0.5": 71 | version "5.0.15" 72 | resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.0.15.tgz#b089b3f1e0381338d764ac1c10512f0c93b184ed" 73 | integrity sha512-MTADqnyacvdRwtKh7o9ujwNDSM1SDJjYDMYAzjIgjoi9rh6TY4suMbhCa3i2vh3SUXiXSICyTI8ui+NPdrZ9Lw== 74 | dependencies: 75 | "@ethersproject/bytes" "^5.0.9" 76 | "@ethersproject/logger" "^5.0.8" 77 | bn.js "^4.4.0" 78 | 79 | "@ethersproject/bytes@5.0.11", "@ethersproject/bytes@^5.0.2", "@ethersproject/bytes@^5.0.9": 80 | version "5.0.11" 81 | resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.0.11.tgz#21118e75b1d00db068984c15530e316021101276" 82 | integrity sha512-D51plLYY5qF05AsoVQwIZVLqlBkaTPVHVP/1WmmBIWyHB0cRW0C9kh0kx5Exo51rB63Hk8PfHxc7SmpoaQFEyg== 83 | dependencies: 84 | "@ethersproject/logger" "^5.0.8" 85 | 86 | "@ethersproject/constants@5.0.10", "@ethersproject/constants@^5.0.8": 87 | version "5.0.10" 88 | resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.0.10.tgz#eb0c604fbc44c53ba9641eed31a1d0c9e1ebcadc" 89 | integrity sha512-OSo8jxkHLDXieCy8bgOFR7lMfgPxEzKvSDdP+WAWHCDM8+orwch0B6wzkTmiQFgryAtIctrBt5glAdJikZ3hGw== 90 | dependencies: 91 | "@ethersproject/bignumber" "^5.0.13" 92 | 93 | "@ethersproject/contracts@5.0.12", "@ethersproject/contracts@^5.0.2": 94 | version "5.0.12" 95 | resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.0.12.tgz#6d488db46221258399dfe80b89bf849b3afd7897" 96 | integrity sha512-srijy31idjz8bE+gL1I6IRj2H4I9dUwfQ+QroLrIgNdGArqY8y2iFUKa3QTy+JBX26fJsdYiCQi1kKkaNpnMpQ== 97 | dependencies: 98 | "@ethersproject/abi" "^5.0.10" 99 | "@ethersproject/abstract-provider" "^5.0.8" 100 | "@ethersproject/abstract-signer" "^5.0.10" 101 | "@ethersproject/address" "^5.0.9" 102 | "@ethersproject/bignumber" "^5.0.13" 103 | "@ethersproject/bytes" "^5.0.9" 104 | "@ethersproject/constants" "^5.0.8" 105 | "@ethersproject/logger" "^5.0.8" 106 | "@ethersproject/properties" "^5.0.7" 107 | 108 | "@ethersproject/hash@5.0.12", "@ethersproject/hash@^5.0.10": 109 | version "5.0.12" 110 | resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.0.12.tgz#1074599f7509e2ca2bb7a3d4f4e39ab3a796da42" 111 | integrity sha512-kn4QN+fhNFbUgX3XZTZUaQixi0oyfIEY+hfW+KtkHu+rq7dV76oAIvaLEEynu1/4npOL38E4X4YI42gGZk+C0Q== 112 | dependencies: 113 | "@ethersproject/abstract-signer" "^5.0.10" 114 | "@ethersproject/address" "^5.0.9" 115 | "@ethersproject/bignumber" "^5.0.13" 116 | "@ethersproject/bytes" "^5.0.9" 117 | "@ethersproject/keccak256" "^5.0.7" 118 | "@ethersproject/logger" "^5.0.8" 119 | "@ethersproject/properties" "^5.0.7" 120 | "@ethersproject/strings" "^5.0.8" 121 | 122 | "@ethersproject/hdnode@5.0.10", "@ethersproject/hdnode@^5.0.8": 123 | version "5.0.10" 124 | resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.0.10.tgz#f7cdf154bf5d104c76dce2940745fc71d9e7eb1b" 125 | integrity sha512-ZLwMtIcXK7xz2lSITDCl40W04CtRq4K9NwBxhCzdzPdaz6XnoJMwGz2YMVLg+8ksseq+RYtTwIIXtlK6vyvQyg== 126 | dependencies: 127 | "@ethersproject/abstract-signer" "^5.0.10" 128 | "@ethersproject/basex" "^5.0.7" 129 | "@ethersproject/bignumber" "^5.0.13" 130 | "@ethersproject/bytes" "^5.0.9" 131 | "@ethersproject/logger" "^5.0.8" 132 | "@ethersproject/pbkdf2" "^5.0.7" 133 | "@ethersproject/properties" "^5.0.7" 134 | "@ethersproject/sha2" "^5.0.7" 135 | "@ethersproject/signing-key" "^5.0.8" 136 | "@ethersproject/strings" "^5.0.8" 137 | "@ethersproject/transactions" "^5.0.9" 138 | "@ethersproject/wordlists" "^5.0.8" 139 | 140 | "@ethersproject/json-wallets@5.0.12", "@ethersproject/json-wallets@^5.0.10": 141 | version "5.0.12" 142 | resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.0.12.tgz#8946a0fcce1634b636313a50330b7d30a24996e8" 143 | integrity sha512-nac553zGZnOewpjlqbfy7WBl8m3y7qudzRsI2dCxrediYtPIVIs9f6Pbnou8vDmmp8X4/U4W788d+Ma88o+Gbg== 144 | dependencies: 145 | "@ethersproject/abstract-signer" "^5.0.10" 146 | "@ethersproject/address" "^5.0.9" 147 | "@ethersproject/bytes" "^5.0.9" 148 | "@ethersproject/hdnode" "^5.0.8" 149 | "@ethersproject/keccak256" "^5.0.7" 150 | "@ethersproject/logger" "^5.0.8" 151 | "@ethersproject/pbkdf2" "^5.0.7" 152 | "@ethersproject/properties" "^5.0.7" 153 | "@ethersproject/random" "^5.0.7" 154 | "@ethersproject/strings" "^5.0.8" 155 | "@ethersproject/transactions" "^5.0.9" 156 | aes-js "3.0.0" 157 | scrypt-js "3.0.1" 158 | 159 | "@ethersproject/keccak256@5.0.9", "@ethersproject/keccak256@^5.0.7": 160 | version "5.0.9" 161 | resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.0.9.tgz#ca0d86e4af56c13b1ef25e533bde3e96d28f647d" 162 | integrity sha512-zhdUTj6RGtCJSgU+bDrWF6cGbvW453LoIC1DSNWrTlXzC7WuH4a+EiPrgc7/kNoRxerKuA/cxYlI8GwNtVtDlw== 163 | dependencies: 164 | "@ethersproject/bytes" "^5.0.9" 165 | js-sha3 "0.5.7" 166 | 167 | "@ethersproject/logger@5.0.10", "@ethersproject/logger@^5.0.8": 168 | version "5.0.10" 169 | resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.0.10.tgz#fd884688b3143253e0356ef92d5f22d109d2e026" 170 | integrity sha512-0y2T2NqykDrbPM3Zw9RSbPkDOxwChAL8detXaom76CfYoGxsOnRP/zTX8OUAV+x9LdwzgbWvWmeXrc0M7SuDZw== 171 | 172 | "@ethersproject/networks@5.0.9", "@ethersproject/networks@^5.0.7": 173 | version "5.0.9" 174 | resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.0.9.tgz#ec5da11e4d4bfd69bec4eaebc9ace33eb9569279" 175 | integrity sha512-L8+VCQwArBLGkxZb/5Ns/OH/OxP38AcaveXIxhUTq+VWpXYjrObG3E7RDQIKkUx1S1IcQl/UWTz5w4DK0UitJg== 176 | dependencies: 177 | "@ethersproject/logger" "^5.0.8" 178 | 179 | "@ethersproject/pbkdf2@5.0.9", "@ethersproject/pbkdf2@^5.0.7": 180 | version "5.0.9" 181 | resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.0.9.tgz#be39c7f0a66c0d3cb1ad1dbb12a78e9bcdf9b5ae" 182 | integrity sha512-ItE/wQ/WVw/ajEHPUVgfu0aEvksPgOQc+278bke8sGKnGO3ppjmqp0MHh17tHc1EBTzJbSms5aLIqc56qZ/oiA== 183 | dependencies: 184 | "@ethersproject/bytes" "^5.0.9" 185 | "@ethersproject/sha2" "^5.0.7" 186 | 187 | "@ethersproject/properties@5.0.9", "@ethersproject/properties@^5.0.7": 188 | version "5.0.9" 189 | resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.0.9.tgz#d7aae634680760136ea522e25c3ef043ec15b5c2" 190 | integrity sha512-ZCjzbHYTw+rF1Pn8FDCEmx3gQttwIHcm/6Xee8g/M3Ga3SfW4tccNMbs5zqnBH0E4RoOPaeNgyg1O68TaF0tlg== 191 | dependencies: 192 | "@ethersproject/logger" "^5.0.8" 193 | 194 | "@ethersproject/providers@5.0.24", "@ethersproject/providers@^5.0.5": 195 | version "5.0.24" 196 | resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.0.24.tgz#4c638a029482d052faa18364b5e0e2d3ddd9c0cb" 197 | integrity sha512-M4Iw1r4gGJkt7ZUa++iREuviKL/DIpmIMsaUlVlXtV+ZrUXeN8xQ3zOTrbz7R4h9W9oljBZM7i4D3Kn1krJ30A== 198 | dependencies: 199 | "@ethersproject/abstract-provider" "^5.0.8" 200 | "@ethersproject/abstract-signer" "^5.0.10" 201 | "@ethersproject/address" "^5.0.9" 202 | "@ethersproject/basex" "^5.0.7" 203 | "@ethersproject/bignumber" "^5.0.13" 204 | "@ethersproject/bytes" "^5.0.9" 205 | "@ethersproject/constants" "^5.0.8" 206 | "@ethersproject/hash" "^5.0.10" 207 | "@ethersproject/logger" "^5.0.8" 208 | "@ethersproject/networks" "^5.0.7" 209 | "@ethersproject/properties" "^5.0.7" 210 | "@ethersproject/random" "^5.0.7" 211 | "@ethersproject/rlp" "^5.0.7" 212 | "@ethersproject/sha2" "^5.0.7" 213 | "@ethersproject/strings" "^5.0.8" 214 | "@ethersproject/transactions" "^5.0.9" 215 | "@ethersproject/web" "^5.0.12" 216 | bech32 "1.1.4" 217 | ws "7.2.3" 218 | 219 | "@ethersproject/random@5.0.9", "@ethersproject/random@^5.0.7": 220 | version "5.0.9" 221 | resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.0.9.tgz#1903d4436ba66e4c8ac77968b16f756abea3a0d0" 222 | integrity sha512-DANG8THsKqFbJOantrxumtG6gyETNE54VfbsWa+SQAT8WKpDo9W/X5Zhh73KuhClaey1UI32uVmISZeq/Zxn1A== 223 | dependencies: 224 | "@ethersproject/bytes" "^5.0.9" 225 | "@ethersproject/logger" "^5.0.8" 226 | 227 | "@ethersproject/rlp@5.0.9", "@ethersproject/rlp@^5.0.7": 228 | version "5.0.9" 229 | resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.0.9.tgz#da205bf8a34d3c3409eb73ddd237130a4b376aff" 230 | integrity sha512-ns1U7ZMVeruUW6JXc4om+1w3w4ynHN/0fpwmeNTsAjwGKoF8SAUgue6ylKpHKWSti2idx7jDxbn8hNNFHk67CA== 231 | dependencies: 232 | "@ethersproject/bytes" "^5.0.9" 233 | "@ethersproject/logger" "^5.0.8" 234 | 235 | "@ethersproject/sha2@5.0.9", "@ethersproject/sha2@^5.0.7": 236 | version "5.0.9" 237 | resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.0.9.tgz#41275ee03e6e1660b3c997754005e089e936adc6" 238 | integrity sha512-5FH4s47gM7N1fFAYQ1+m7aX0SbLg0Xr+6tvqndmNqc382/qBIbzXiGlUookrsjlPb6gLNurnTssCXjNM72J6lQ== 239 | dependencies: 240 | "@ethersproject/bytes" "^5.0.9" 241 | "@ethersproject/logger" "^5.0.8" 242 | hash.js "1.1.3" 243 | 244 | "@ethersproject/signing-key@5.0.11", "@ethersproject/signing-key@^5.0.8": 245 | version "5.0.11" 246 | resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.0.11.tgz#19fc5c4597e18ad0a5efc6417ba5b74069fdd2af" 247 | integrity sha512-Jfcru/BGwdkXhLxT+8WCZtFy7LL0TPFZw05FAb5asxB/MyVsEfNdNxGDtjVE9zXfmRSPe/EusXYY4K7wcygOyQ== 248 | dependencies: 249 | "@ethersproject/bytes" "^5.0.9" 250 | "@ethersproject/logger" "^5.0.8" 251 | "@ethersproject/properties" "^5.0.7" 252 | elliptic "6.5.4" 253 | 254 | "@ethersproject/solidity@5.0.10", "@ethersproject/solidity@^5.0.2": 255 | version "5.0.10" 256 | resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.0.10.tgz#128c9289761cf83d81ff62a1195d6079a924a86c" 257 | integrity sha512-8OG3HLqynWXDA6mVIHuHfF/ojTTwBahON7hc9GAKCqglzXCkVA3OpyxOJXPzjHClRIAUUiU7r9oy9Z/nsjtT/g== 258 | dependencies: 259 | "@ethersproject/bignumber" "^5.0.13" 260 | "@ethersproject/bytes" "^5.0.9" 261 | "@ethersproject/keccak256" "^5.0.7" 262 | "@ethersproject/sha2" "^5.0.7" 263 | "@ethersproject/strings" "^5.0.8" 264 | 265 | "@ethersproject/strings@5.0.10", "@ethersproject/strings@^5.0.8": 266 | version "5.0.10" 267 | resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.0.10.tgz#ddce1e9724f4ac4f3f67e0cac0b48748e964bfdb" 268 | integrity sha512-KAeoS1tZ9/5ECXiIZA6S6hywbD0so2VmuW+Wfyo5EDXeyZ6Na1nxTPhTnW7voQmjbeYJffCrOc0qLFJeylyg7w== 269 | dependencies: 270 | "@ethersproject/bytes" "^5.0.9" 271 | "@ethersproject/constants" "^5.0.8" 272 | "@ethersproject/logger" "^5.0.8" 273 | 274 | "@ethersproject/transactions@5.0.11", "@ethersproject/transactions@^5.0.2", "@ethersproject/transactions@^5.0.9": 275 | version "5.0.11" 276 | resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.0.11.tgz#b31df5292f47937136a45885d6ee6112477c13df" 277 | integrity sha512-ftsRvR9+gQp7L63F6+XmstvsZ4w8GtWvQB08e/zB+oB86Fnhq8+i/tkgpJplSHC8I/qgiCisva+M3u2GVhDFPA== 278 | dependencies: 279 | "@ethersproject/address" "^5.0.9" 280 | "@ethersproject/bignumber" "^5.0.13" 281 | "@ethersproject/bytes" "^5.0.9" 282 | "@ethersproject/constants" "^5.0.8" 283 | "@ethersproject/keccak256" "^5.0.7" 284 | "@ethersproject/logger" "^5.0.8" 285 | "@ethersproject/properties" "^5.0.7" 286 | "@ethersproject/rlp" "^5.0.7" 287 | "@ethersproject/signing-key" "^5.0.8" 288 | 289 | "@ethersproject/units@5.0.11": 290 | version "5.0.11" 291 | resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.0.11.tgz#f82f6e353ac0d6fa43b17337790f1f9aa72cb4c8" 292 | integrity sha512-nOSPmcCWyB/dwoBRhhTtPGCsTbiXqmc7Q0Adwvafc432AC7hy3Fj3IFZtnSXsbtJ/GdHCIUIoA8gtvxSsFuBJg== 293 | dependencies: 294 | "@ethersproject/bignumber" "^5.0.13" 295 | "@ethersproject/constants" "^5.0.8" 296 | "@ethersproject/logger" "^5.0.8" 297 | 298 | "@ethersproject/wallet@5.0.12", "@ethersproject/wallet@^5.0.2": 299 | version "5.0.12" 300 | resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.0.12.tgz#bfb96f95e066b4b1b4591c4615207b87afedda8b" 301 | integrity sha512-rboJebGf47/KPZrKZQdYg9BAYuXbc/OwcUyML1K1f2jnJeo1ObWV11U1PAWTjTbhhSy6/Fg+34GO2yMb5Dt1Rw== 302 | dependencies: 303 | "@ethersproject/abstract-provider" "^5.0.8" 304 | "@ethersproject/abstract-signer" "^5.0.10" 305 | "@ethersproject/address" "^5.0.9" 306 | "@ethersproject/bignumber" "^5.0.13" 307 | "@ethersproject/bytes" "^5.0.9" 308 | "@ethersproject/hash" "^5.0.10" 309 | "@ethersproject/hdnode" "^5.0.8" 310 | "@ethersproject/json-wallets" "^5.0.10" 311 | "@ethersproject/keccak256" "^5.0.7" 312 | "@ethersproject/logger" "^5.0.8" 313 | "@ethersproject/properties" "^5.0.7" 314 | "@ethersproject/random" "^5.0.7" 315 | "@ethersproject/signing-key" "^5.0.8" 316 | "@ethersproject/transactions" "^5.0.9" 317 | "@ethersproject/wordlists" "^5.0.8" 318 | 319 | "@ethersproject/web@5.0.14", "@ethersproject/web@^5.0.12": 320 | version "5.0.14" 321 | resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.0.14.tgz#6e7bebdd9fb967cb25ee60f44d9218dc0803bac4" 322 | integrity sha512-QpTgplslwZ0Sp9oKNLoRuS6TKxnkwfaEk3gr7zd7XLF8XBsYejsrQO/03fNfnMx/TAT/RR6WEw/mbOwpRSeVRA== 323 | dependencies: 324 | "@ethersproject/base64" "^5.0.7" 325 | "@ethersproject/bytes" "^5.0.9" 326 | "@ethersproject/logger" "^5.0.8" 327 | "@ethersproject/properties" "^5.0.7" 328 | "@ethersproject/strings" "^5.0.8" 329 | 330 | "@ethersproject/wordlists@5.0.10", "@ethersproject/wordlists@^5.0.8": 331 | version "5.0.10" 332 | resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.0.10.tgz#177b9a0b4d72b9c4f304d08b36612d6c60e9b896" 333 | integrity sha512-jWsEm1iJzpg9SCXnNfFz+tcp4Ofzv0TJb6mj+soCNcar9GcT0yGz62ZsHC3pLQWaF4LkCzGwRJHJTXKjHQfG1A== 334 | dependencies: 335 | "@ethersproject/bytes" "^5.0.9" 336 | "@ethersproject/hash" "^5.0.10" 337 | "@ethersproject/logger" "^5.0.8" 338 | "@ethersproject/properties" "^5.0.7" 339 | "@ethersproject/strings" "^5.0.8" 340 | 341 | "@nomiclabs/ethereumjs-vm@4.2.2": 342 | version "4.2.2" 343 | resolved "https://registry.yarnpkg.com/@nomiclabs/ethereumjs-vm/-/ethereumjs-vm-4.2.2.tgz#2f8817113ca0fb6c44c1b870d0a809f0e026a6cc" 344 | integrity sha512-8WmX94mMcJaZ7/m7yBbyuS6B+wuOul+eF+RY9fBpGhNaUpyMR/vFIcDojqcWQ4Yafe1tMKY5LDu2yfT4NZgV4Q== 345 | dependencies: 346 | async "^2.1.2" 347 | async-eventemitter "^0.2.2" 348 | core-js-pure "^3.0.1" 349 | ethereumjs-account "^3.0.0" 350 | ethereumjs-block "^2.2.2" 351 | ethereumjs-blockchain "^4.0.3" 352 | ethereumjs-common "^1.5.0" 353 | ethereumjs-tx "^2.1.2" 354 | ethereumjs-util "^6.2.0" 355 | fake-merkle-patricia-tree "^1.0.1" 356 | functional-red-black-tree "^1.0.1" 357 | merkle-patricia-tree "3.0.0" 358 | rustbn.js "~0.2.0" 359 | safe-buffer "^5.1.1" 360 | util.promisify "^1.0.0" 361 | 362 | "@sentry/core@5.30.0": 363 | version "5.30.0" 364 | resolved "https://registry.yarnpkg.com/@sentry/core/-/core-5.30.0.tgz#6b203664f69e75106ee8b5a2fe1d717379b331f3" 365 | integrity sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg== 366 | dependencies: 367 | "@sentry/hub" "5.30.0" 368 | "@sentry/minimal" "5.30.0" 369 | "@sentry/types" "5.30.0" 370 | "@sentry/utils" "5.30.0" 371 | tslib "^1.9.3" 372 | 373 | "@sentry/hub@5.30.0": 374 | version "5.30.0" 375 | resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-5.30.0.tgz#2453be9b9cb903404366e198bd30c7ca74cdc100" 376 | integrity sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ== 377 | dependencies: 378 | "@sentry/types" "5.30.0" 379 | "@sentry/utils" "5.30.0" 380 | tslib "^1.9.3" 381 | 382 | "@sentry/minimal@5.30.0": 383 | version "5.30.0" 384 | resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-5.30.0.tgz#ce3d3a6a273428e0084adcb800bc12e72d34637b" 385 | integrity sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw== 386 | dependencies: 387 | "@sentry/hub" "5.30.0" 388 | "@sentry/types" "5.30.0" 389 | tslib "^1.9.3" 390 | 391 | "@sentry/node@^5.18.1": 392 | version "5.30.0" 393 | resolved "https://registry.yarnpkg.com/@sentry/node/-/node-5.30.0.tgz#4ca479e799b1021285d7fe12ac0858951c11cd48" 394 | integrity sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg== 395 | dependencies: 396 | "@sentry/core" "5.30.0" 397 | "@sentry/hub" "5.30.0" 398 | "@sentry/tracing" "5.30.0" 399 | "@sentry/types" "5.30.0" 400 | "@sentry/utils" "5.30.0" 401 | cookie "^0.4.1" 402 | https-proxy-agent "^5.0.0" 403 | lru_map "^0.3.3" 404 | tslib "^1.9.3" 405 | 406 | "@sentry/tracing@5.30.0": 407 | version "5.30.0" 408 | resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-5.30.0.tgz#501d21f00c3f3be7f7635d8710da70d9419d4e1f" 409 | integrity sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw== 410 | dependencies: 411 | "@sentry/hub" "5.30.0" 412 | "@sentry/minimal" "5.30.0" 413 | "@sentry/types" "5.30.0" 414 | "@sentry/utils" "5.30.0" 415 | tslib "^1.9.3" 416 | 417 | "@sentry/types@5.30.0": 418 | version "5.30.0" 419 | resolved "https://registry.yarnpkg.com/@sentry/types/-/types-5.30.0.tgz#19709bbe12a1a0115bc790b8942917da5636f402" 420 | integrity sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw== 421 | 422 | "@sentry/utils@5.30.0": 423 | version "5.30.0" 424 | resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-5.30.0.tgz#9a5bd7ccff85ccfe7856d493bffa64cabc41e980" 425 | integrity sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww== 426 | dependencies: 427 | "@sentry/types" "5.30.0" 428 | tslib "^1.9.3" 429 | 430 | "@solidity-parser/parser@^0.11.0": 431 | version "0.11.1" 432 | resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.11.1.tgz#fa840af64840c930f24a9c82c08d4a092a068add" 433 | integrity sha512-H8BSBoKE8EubJa0ONqecA2TviT3TnHeC4NpgnAHSUiuhZoQBfPB4L2P9bs8R6AoTW10Endvh3vc+fomVMIDIYQ== 434 | 435 | "@types/bn.js@^4.11.3", "@types/bn.js@^4.11.5": 436 | version "4.11.6" 437 | resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.6.tgz#c306c70d9358aaea33cd4eda092a742b9505967c" 438 | integrity sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg== 439 | dependencies: 440 | "@types/node" "*" 441 | 442 | "@types/bn.js@^5.1.0": 443 | version "5.1.0" 444 | resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.0.tgz#32c5d271503a12653c62cf4d2b45e6eab8cebc68" 445 | integrity sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA== 446 | dependencies: 447 | "@types/node" "*" 448 | 449 | "@types/chai@^4.2.15": 450 | version "4.2.15" 451 | resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.2.15.tgz#b7a6d263c2cecf44b6de9a051cf496249b154553" 452 | integrity sha512-rYff6FI+ZTKAPkJUoyz7Udq3GaoDZnxYDEvdEdFZASiA7PoErltHezDishqQiSDWrGxvxmplH304jyzQmjp0AQ== 453 | 454 | "@types/lru-cache@^5.1.0": 455 | version "5.1.0" 456 | resolved "https://registry.yarnpkg.com/@types/lru-cache/-/lru-cache-5.1.0.tgz#57f228f2b80c046b4a1bd5cac031f81f207f4f03" 457 | integrity sha512-RaE0B+14ToE4l6UqdarKPnXwVDuigfFv+5j9Dze/Nqr23yyuqdNvzcZi3xB+3Agvi5R4EOgAksfv3lXX4vBt9w== 458 | 459 | "@types/mocha@^8.2.2": 460 | version "8.2.2" 461 | resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-8.2.2.tgz#91daa226eb8c2ff261e6a8cbf8c7304641e095e0" 462 | integrity sha512-Lwh0lzzqT5Pqh6z61P3c3P5nm6fzQK/MMHl9UKeneAeInVflBSz1O2EkX6gM6xfJd7FBXBY5purtLx7fUiZ7Hw== 463 | 464 | "@types/node@*", "@types/node@^14.14.35": 465 | version "14.14.35" 466 | resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.35.tgz#42c953a4e2b18ab931f72477e7012172f4ffa313" 467 | integrity sha512-Lt+wj8NVPx0zUmUwumiVXapmaLUcAk3yPuHCFVXras9k5VT9TdhJqKqGVUQCD60OTMCl0qxJ57OiTL0Mic3Iag== 468 | 469 | "@types/pbkdf2@^3.0.0": 470 | version "3.1.0" 471 | resolved "https://registry.yarnpkg.com/@types/pbkdf2/-/pbkdf2-3.1.0.tgz#039a0e9b67da0cdc4ee5dab865caa6b267bb66b1" 472 | integrity sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ== 473 | dependencies: 474 | "@types/node" "*" 475 | 476 | "@types/qs@^6.9.4": 477 | version "6.9.6" 478 | resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.6.tgz#df9c3c8b31a247ec315e6996566be3171df4b3b1" 479 | integrity sha512-0/HnwIfW4ki2D8L8c9GVcG5I72s9jP5GSLVF0VIXDW00kmIpA6O33G7a8n59Tmh7Nz0WUC3rSb7PTY/sdW2JzA== 480 | 481 | "@types/secp256k1@^4.0.1": 482 | version "4.0.1" 483 | resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.1.tgz#fb3aa61a1848ad97d7425ff9dcba784549fca5a4" 484 | integrity sha512-+ZjSA8ELlOp8SlKi0YLB2tz9d5iPNEmOBd+8Rz21wTMdaXQIa9b6TEnD6l5qKOCypE7FSyPyck12qZJxSDNoog== 485 | dependencies: 486 | "@types/node" "*" 487 | 488 | "@ungap/promise-all-settled@1.1.2": 489 | version "1.1.2" 490 | resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" 491 | integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== 492 | 493 | abort-controller@^3.0.0: 494 | version "3.0.0" 495 | resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" 496 | integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== 497 | dependencies: 498 | event-target-shim "^5.0.0" 499 | 500 | abstract-leveldown@^5.0.0, abstract-leveldown@~5.0.0: 501 | version "5.0.0" 502 | resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-5.0.0.tgz#f7128e1f86ccabf7d2893077ce5d06d798e386c6" 503 | integrity sha512-5mU5P1gXtsMIXg65/rsYGsi93+MlogXZ9FA8JnwKurHQg64bfXwGYVdVdijNTVNOlAsuIiOwHdvFFD5JqCJQ7A== 504 | dependencies: 505 | xtend "~4.0.0" 506 | 507 | abstract-leveldown@~2.6.0: 508 | version "2.6.3" 509 | resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz#1c5e8c6a5ef965ae8c35dfb3a8770c476b82c4b8" 510 | integrity sha512-2++wDf/DYqkPR3o5tbfdhF96EfMApo1GpPfzOsR/ZYXdkSmELlvOOEAl9iKkRsktMPHdGjO4rtkBpf2I7TiTeA== 511 | dependencies: 512 | xtend "~4.0.0" 513 | 514 | abstract-leveldown@~2.7.1: 515 | version "2.7.2" 516 | resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz#87a44d7ebebc341d59665204834c8b7e0932cc93" 517 | integrity sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w== 518 | dependencies: 519 | xtend "~4.0.0" 520 | 521 | adm-zip@^0.4.16: 522 | version "0.4.16" 523 | resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.16.tgz#cf4c508fdffab02c269cbc7f471a875f05570365" 524 | integrity sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg== 525 | 526 | aes-js@3.0.0: 527 | version "3.0.0" 528 | resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" 529 | integrity sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0= 530 | 531 | agent-base@6: 532 | version "6.0.2" 533 | resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" 534 | integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== 535 | dependencies: 536 | debug "4" 537 | 538 | ansi-colors@3.2.3: 539 | version "3.2.3" 540 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813" 541 | integrity sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw== 542 | 543 | ansi-colors@4.1.1, ansi-colors@^4.1.1: 544 | version "4.1.1" 545 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" 546 | integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== 547 | 548 | ansi-escapes@^4.3.0: 549 | version "4.3.1" 550 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" 551 | integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== 552 | dependencies: 553 | type-fest "^0.11.0" 554 | 555 | ansi-regex@^3.0.0: 556 | version "3.0.0" 557 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" 558 | integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= 559 | 560 | ansi-regex@^4.1.0: 561 | version "4.1.0" 562 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" 563 | integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== 564 | 565 | ansi-regex@^5.0.0: 566 | version "5.0.0" 567 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" 568 | integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== 569 | 570 | ansi-styles@^3.2.0, ansi-styles@^3.2.1: 571 | version "3.2.1" 572 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 573 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 574 | dependencies: 575 | color-convert "^1.9.0" 576 | 577 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 578 | version "4.3.0" 579 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 580 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 581 | dependencies: 582 | color-convert "^2.0.1" 583 | 584 | anymatch@~3.1.1: 585 | version "3.1.1" 586 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" 587 | integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== 588 | dependencies: 589 | normalize-path "^3.0.0" 590 | picomatch "^2.0.4" 591 | 592 | arg@^4.1.0: 593 | version "4.1.3" 594 | resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" 595 | integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== 596 | 597 | argparse@^1.0.7: 598 | version "1.0.10" 599 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 600 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 601 | dependencies: 602 | sprintf-js "~1.0.2" 603 | 604 | argparse@^2.0.1: 605 | version "2.0.1" 606 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" 607 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== 608 | 609 | assertion-error@^1.1.0: 610 | version "1.1.0" 611 | resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" 612 | integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== 613 | 614 | async-eventemitter@^0.2.2: 615 | version "0.2.4" 616 | resolved "https://registry.yarnpkg.com/async-eventemitter/-/async-eventemitter-0.2.4.tgz#f5e7c8ca7d3e46aab9ec40a292baf686a0bafaca" 617 | integrity sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw== 618 | dependencies: 619 | async "^2.4.0" 620 | 621 | async@^1.4.2: 622 | version "1.5.2" 623 | resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" 624 | integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= 625 | 626 | async@^2.0.1, async@^2.1.2, async@^2.4.0, async@^2.6.1: 627 | version "2.6.3" 628 | resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" 629 | integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== 630 | dependencies: 631 | lodash "^4.17.14" 632 | 633 | asynckit@^0.4.0: 634 | version "0.4.0" 635 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 636 | integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= 637 | 638 | at-least-node@^1.0.0: 639 | version "1.0.0" 640 | resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" 641 | integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== 642 | 643 | axios@^0.21.1: 644 | version "0.21.1" 645 | resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8" 646 | integrity sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA== 647 | dependencies: 648 | follow-redirects "^1.10.0" 649 | 650 | balanced-match@^1.0.0: 651 | version "1.0.0" 652 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 653 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 654 | 655 | base-x@^3.0.2: 656 | version "3.0.8" 657 | resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.8.tgz#1e1106c2537f0162e8b52474a557ebb09000018d" 658 | integrity sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA== 659 | dependencies: 660 | safe-buffer "^5.0.1" 661 | 662 | base64-js@^1.3.1: 663 | version "1.5.1" 664 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" 665 | integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== 666 | 667 | bech32@1.1.4: 668 | version "1.1.4" 669 | resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" 670 | integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== 671 | 672 | binary-extensions@^2.0.0: 673 | version "2.2.0" 674 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" 675 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 676 | 677 | blakejs@^1.1.0: 678 | version "1.1.0" 679 | resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.1.0.tgz#69df92ef953aa88ca51a32df6ab1c54a155fc7a5" 680 | integrity sha1-ad+S75U6qIylGjLfarHFShVfx6U= 681 | 682 | bn.js@^4.0.0, bn.js@^4.11.0, bn.js@^4.11.1, bn.js@^4.11.8, bn.js@^4.11.9, bn.js@^4.4.0: 683 | version "4.12.0" 684 | resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" 685 | integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== 686 | 687 | bn.js@^5.1.2: 688 | version "5.2.0" 689 | resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" 690 | integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== 691 | 692 | brace-expansion@^1.1.7: 693 | version "1.1.11" 694 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 695 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 696 | dependencies: 697 | balanced-match "^1.0.0" 698 | concat-map "0.0.1" 699 | 700 | braces@~3.0.2: 701 | version "3.0.2" 702 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 703 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 704 | dependencies: 705 | fill-range "^7.0.1" 706 | 707 | brorand@^1.0.1, brorand@^1.1.0: 708 | version "1.1.0" 709 | resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" 710 | integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= 711 | 712 | browser-stdout@1.3.1: 713 | version "1.3.1" 714 | resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" 715 | integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== 716 | 717 | browserify-aes@^1.2.0: 718 | version "1.2.0" 719 | resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" 720 | integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== 721 | dependencies: 722 | buffer-xor "^1.0.3" 723 | cipher-base "^1.0.0" 724 | create-hash "^1.1.0" 725 | evp_bytestokey "^1.0.3" 726 | inherits "^2.0.1" 727 | safe-buffer "^5.0.1" 728 | 729 | bs58@^4.0.0: 730 | version "4.0.1" 731 | resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" 732 | integrity sha1-vhYedsNU9veIrkBx9j806MTwpCo= 733 | dependencies: 734 | base-x "^3.0.2" 735 | 736 | bs58check@^2.1.2: 737 | version "2.1.2" 738 | resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" 739 | integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== 740 | dependencies: 741 | bs58 "^4.0.0" 742 | create-hash "^1.1.0" 743 | safe-buffer "^5.1.2" 744 | 745 | buffer-from@^1.0.0: 746 | version "1.1.1" 747 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" 748 | integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== 749 | 750 | buffer-xor@^1.0.3: 751 | version "1.0.3" 752 | resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" 753 | integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= 754 | 755 | buffer-xor@^2.0.1: 756 | version "2.0.2" 757 | resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-2.0.2.tgz#34f7c64f04c777a1f8aac5e661273bb9dd320289" 758 | integrity sha512-eHslX0bin3GB+Lx2p7lEYRShRewuNZL3fUl4qlVJGGiwoPGftmt8JQgk2Y9Ji5/01TnVDo33E5b5O3vUB1HdqQ== 759 | dependencies: 760 | safe-buffer "^5.1.1" 761 | 762 | buffer@^5.6.0: 763 | version "5.7.1" 764 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" 765 | integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== 766 | dependencies: 767 | base64-js "^1.3.1" 768 | ieee754 "^1.1.13" 769 | 770 | bytes@3.1.0: 771 | version "3.1.0" 772 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" 773 | integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== 774 | 775 | call-bind@^1.0.0, call-bind@^1.0.2: 776 | version "1.0.2" 777 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" 778 | integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== 779 | dependencies: 780 | function-bind "^1.1.1" 781 | get-intrinsic "^1.0.2" 782 | 783 | camelcase@^5.0.0: 784 | version "5.3.1" 785 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" 786 | integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== 787 | 788 | camelcase@^6.0.0: 789 | version "6.2.0" 790 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" 791 | integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== 792 | 793 | chai-ethers@^0.0.1: 794 | version "0.0.1" 795 | resolved "https://registry.yarnpkg.com/chai-ethers/-/chai-ethers-0.0.1.tgz#2dcc2d3251a07ea42ac37923b976198cccad3f1c" 796 | integrity sha512-yajwk1BSf+lO2LzV+vra/iKukiUJcfD2aEVBZRWmaIJr0kI0eI1s6VF47qoXNolYxg0bf/SAlHSfwaPZWKBVyQ== 797 | dependencies: 798 | ethers "^5.0.0" 799 | 800 | chai@^4.3.4: 801 | version "4.3.4" 802 | resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.4.tgz#b55e655b31e1eac7099be4c08c21964fce2e6c49" 803 | integrity sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA== 804 | dependencies: 805 | assertion-error "^1.1.0" 806 | check-error "^1.0.2" 807 | deep-eql "^3.0.1" 808 | get-func-name "^2.0.0" 809 | pathval "^1.1.1" 810 | type-detect "^4.0.5" 811 | 812 | chalk@^2.4.2: 813 | version "2.4.2" 814 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 815 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 816 | dependencies: 817 | ansi-styles "^3.2.1" 818 | escape-string-regexp "^1.0.5" 819 | supports-color "^5.3.0" 820 | 821 | chalk@^4.0.0, chalk@^4.1.0: 822 | version "4.1.0" 823 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" 824 | integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== 825 | dependencies: 826 | ansi-styles "^4.1.0" 827 | supports-color "^7.1.0" 828 | 829 | check-error@^1.0.2: 830 | version "1.0.2" 831 | resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" 832 | integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= 833 | 834 | checkpoint-store@^1.1.0: 835 | version "1.1.0" 836 | resolved "https://registry.yarnpkg.com/checkpoint-store/-/checkpoint-store-1.1.0.tgz#04e4cb516b91433893581e6d4601a78e9552ea06" 837 | integrity sha1-BOTLUWuRQziTWB5tRgGnjpVS6gY= 838 | dependencies: 839 | functional-red-black-tree "^1.0.1" 840 | 841 | chokidar@3.3.0: 842 | version "3.3.0" 843 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.0.tgz#12c0714668c55800f659e262d4962a97faf554a6" 844 | integrity sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A== 845 | dependencies: 846 | anymatch "~3.1.1" 847 | braces "~3.0.2" 848 | glob-parent "~5.1.0" 849 | is-binary-path "~2.1.0" 850 | is-glob "~4.0.1" 851 | normalize-path "~3.0.0" 852 | readdirp "~3.2.0" 853 | optionalDependencies: 854 | fsevents "~2.1.1" 855 | 856 | chokidar@3.5.1, chokidar@^3.4.0: 857 | version "3.5.1" 858 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" 859 | integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== 860 | dependencies: 861 | anymatch "~3.1.1" 862 | braces "~3.0.2" 863 | glob-parent "~5.1.0" 864 | is-binary-path "~2.1.0" 865 | is-glob "~4.0.1" 866 | normalize-path "~3.0.0" 867 | readdirp "~3.5.0" 868 | optionalDependencies: 869 | fsevents "~2.3.1" 870 | 871 | ci-info@^2.0.0: 872 | version "2.0.0" 873 | resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" 874 | integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== 875 | 876 | cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: 877 | version "1.0.4" 878 | resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" 879 | integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== 880 | dependencies: 881 | inherits "^2.0.1" 882 | safe-buffer "^5.0.1" 883 | 884 | cliui@^5.0.0: 885 | version "5.0.0" 886 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" 887 | integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== 888 | dependencies: 889 | string-width "^3.1.0" 890 | strip-ansi "^5.2.0" 891 | wrap-ansi "^5.1.0" 892 | 893 | cliui@^7.0.2: 894 | version "7.0.4" 895 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" 896 | integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== 897 | dependencies: 898 | string-width "^4.2.0" 899 | strip-ansi "^6.0.0" 900 | wrap-ansi "^7.0.0" 901 | 902 | color-convert@^1.9.0: 903 | version "1.9.3" 904 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 905 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 906 | dependencies: 907 | color-name "1.1.3" 908 | 909 | color-convert@^2.0.1: 910 | version "2.0.1" 911 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 912 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 913 | dependencies: 914 | color-name "~1.1.4" 915 | 916 | color-name@1.1.3: 917 | version "1.1.3" 918 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 919 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 920 | 921 | color-name@~1.1.4: 922 | version "1.1.4" 923 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 924 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 925 | 926 | combined-stream@^1.0.8: 927 | version "1.0.8" 928 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 929 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 930 | dependencies: 931 | delayed-stream "~1.0.0" 932 | 933 | command-exists@^1.2.8: 934 | version "1.2.9" 935 | resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" 936 | integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== 937 | 938 | commander@3.0.2: 939 | version "3.0.2" 940 | resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" 941 | integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== 942 | 943 | concat-map@0.0.1: 944 | version "0.0.1" 945 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 946 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 947 | 948 | cookie@^0.4.1: 949 | version "0.4.1" 950 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1" 951 | integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA== 952 | 953 | core-js-pure@^3.0.1: 954 | version "3.9.1" 955 | resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.9.1.tgz#677b322267172bd490e4464696f790cbc355bec5" 956 | integrity sha512-laz3Zx0avrw9a4QEIdmIblnVuJz8W51leY9iLThatCsFawWxC3sE4guASC78JbCin+DkwMpCdp1AVAuzL/GN7A== 957 | 958 | core-util-is@~1.0.0: 959 | version "1.0.2" 960 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 961 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 962 | 963 | create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: 964 | version "1.2.0" 965 | resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" 966 | integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== 967 | dependencies: 968 | cipher-base "^1.0.1" 969 | inherits "^2.0.1" 970 | md5.js "^1.3.4" 971 | ripemd160 "^2.0.1" 972 | sha.js "^2.4.0" 973 | 974 | create-hmac@^1.1.4, create-hmac@^1.1.7: 975 | version "1.1.7" 976 | resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" 977 | integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== 978 | dependencies: 979 | cipher-base "^1.0.3" 980 | create-hash "^1.1.0" 981 | inherits "^2.0.1" 982 | ripemd160 "^2.0.0" 983 | safe-buffer "^5.0.1" 984 | sha.js "^2.4.8" 985 | 986 | create-require@^1.1.0: 987 | version "1.1.1" 988 | resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" 989 | integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== 990 | 991 | debug@3.2.6: 992 | version "3.2.6" 993 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" 994 | integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== 995 | dependencies: 996 | ms "^2.1.1" 997 | 998 | debug@4, debug@4.3.1, debug@^4.1.1: 999 | version "4.3.1" 1000 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" 1001 | integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== 1002 | dependencies: 1003 | ms "2.1.2" 1004 | 1005 | decamelize@^1.2.0: 1006 | version "1.2.0" 1007 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 1008 | integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= 1009 | 1010 | decamelize@^4.0.0: 1011 | version "4.0.0" 1012 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" 1013 | integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== 1014 | 1015 | deep-eql@^3.0.1: 1016 | version "3.0.1" 1017 | resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" 1018 | integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== 1019 | dependencies: 1020 | type-detect "^4.0.0" 1021 | 1022 | deferred-leveldown@~1.2.1: 1023 | version "1.2.2" 1024 | resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-1.2.2.tgz#3acd2e0b75d1669924bc0a4b642851131173e1eb" 1025 | integrity sha512-uukrWD2bguRtXilKt6cAWKyoXrTSMo5m7crUdLfWQmu8kIm88w3QZoUL+6nhpfKVmhHANER6Re3sKoNoZ3IKMA== 1026 | dependencies: 1027 | abstract-leveldown "~2.6.0" 1028 | 1029 | deferred-leveldown@~4.0.0: 1030 | version "4.0.2" 1031 | resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-4.0.2.tgz#0b0570087827bf480a23494b398f04c128c19a20" 1032 | integrity sha512-5fMC8ek8alH16QiV0lTCis610D1Zt1+LA4MS4d63JgS32lrCjTFDUFz2ao09/j2I4Bqb5jL4FZYwu7Jz0XO1ww== 1033 | dependencies: 1034 | abstract-leveldown "~5.0.0" 1035 | inherits "^2.0.3" 1036 | 1037 | define-properties@^1.1.2, define-properties@^1.1.3: 1038 | version "1.1.3" 1039 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" 1040 | integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== 1041 | dependencies: 1042 | object-keys "^1.0.12" 1043 | 1044 | delayed-stream@~1.0.0: 1045 | version "1.0.0" 1046 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 1047 | integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= 1048 | 1049 | depd@~1.1.2: 1050 | version "1.1.2" 1051 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" 1052 | integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= 1053 | 1054 | diff@3.5.0: 1055 | version "3.5.0" 1056 | resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" 1057 | integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== 1058 | 1059 | diff@5.0.0: 1060 | version "5.0.0" 1061 | resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" 1062 | integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== 1063 | 1064 | diff@^4.0.1: 1065 | version "4.0.2" 1066 | resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" 1067 | integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== 1068 | 1069 | dotenv@^8.2.0: 1070 | version "8.2.0" 1071 | resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" 1072 | integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== 1073 | 1074 | elliptic@6.5.4, elliptic@^6.5.2: 1075 | version "6.5.4" 1076 | resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" 1077 | integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== 1078 | dependencies: 1079 | bn.js "^4.11.9" 1080 | brorand "^1.1.0" 1081 | hash.js "^1.0.0" 1082 | hmac-drbg "^1.0.1" 1083 | inherits "^2.0.4" 1084 | minimalistic-assert "^1.0.1" 1085 | minimalistic-crypto-utils "^1.0.1" 1086 | 1087 | emoji-regex@^7.0.1: 1088 | version "7.0.3" 1089 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" 1090 | integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== 1091 | 1092 | emoji-regex@^8.0.0: 1093 | version "8.0.0" 1094 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 1095 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 1096 | 1097 | encode-utf8@^1.0.2: 1098 | version "1.0.3" 1099 | resolved "https://registry.yarnpkg.com/encode-utf8/-/encode-utf8-1.0.3.tgz#f30fdd31da07fb596f281beb2f6b027851994cda" 1100 | integrity sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw== 1101 | 1102 | encoding-down@~5.0.0: 1103 | version "5.0.4" 1104 | resolved "https://registry.yarnpkg.com/encoding-down/-/encoding-down-5.0.4.tgz#1e477da8e9e9d0f7c8293d320044f8b2cd8e9614" 1105 | integrity sha512-8CIZLDcSKxgzT+zX8ZVfgNbu8Md2wq/iqa1Y7zyVR18QBEAc0Nmzuvj/N5ykSKpfGzjM8qxbaFntLPwnVoUhZw== 1106 | dependencies: 1107 | abstract-leveldown "^5.0.0" 1108 | inherits "^2.0.3" 1109 | level-codec "^9.0.0" 1110 | level-errors "^2.0.0" 1111 | xtend "^4.0.1" 1112 | 1113 | enquirer@^2.3.0: 1114 | version "2.3.6" 1115 | resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" 1116 | integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== 1117 | dependencies: 1118 | ansi-colors "^4.1.1" 1119 | 1120 | env-paths@^2.2.0: 1121 | version "2.2.1" 1122 | resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" 1123 | integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== 1124 | 1125 | errno@~0.1.1: 1126 | version "0.1.8" 1127 | resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" 1128 | integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== 1129 | dependencies: 1130 | prr "~1.0.1" 1131 | 1132 | es-abstract@^1.18.0-next.2: 1133 | version "1.18.0" 1134 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0.tgz#ab80b359eecb7ede4c298000390bc5ac3ec7b5a4" 1135 | integrity sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw== 1136 | dependencies: 1137 | call-bind "^1.0.2" 1138 | es-to-primitive "^1.2.1" 1139 | function-bind "^1.1.1" 1140 | get-intrinsic "^1.1.1" 1141 | has "^1.0.3" 1142 | has-symbols "^1.0.2" 1143 | is-callable "^1.2.3" 1144 | is-negative-zero "^2.0.1" 1145 | is-regex "^1.1.2" 1146 | is-string "^1.0.5" 1147 | object-inspect "^1.9.0" 1148 | object-keys "^1.1.1" 1149 | object.assign "^4.1.2" 1150 | string.prototype.trimend "^1.0.4" 1151 | string.prototype.trimstart "^1.0.4" 1152 | unbox-primitive "^1.0.0" 1153 | 1154 | es-to-primitive@^1.2.1: 1155 | version "1.2.1" 1156 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" 1157 | integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== 1158 | dependencies: 1159 | is-callable "^1.1.4" 1160 | is-date-object "^1.0.1" 1161 | is-symbol "^1.0.2" 1162 | 1163 | escalade@^3.1.1: 1164 | version "3.1.1" 1165 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 1166 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 1167 | 1168 | escape-string-regexp@1.0.5, escape-string-regexp@^1.0.5: 1169 | version "1.0.5" 1170 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 1171 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 1172 | 1173 | escape-string-regexp@4.0.0: 1174 | version "4.0.0" 1175 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" 1176 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 1177 | 1178 | esprima@^4.0.0: 1179 | version "4.0.1" 1180 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 1181 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 1182 | 1183 | eth-sig-util@^2.5.2: 1184 | version "2.5.4" 1185 | resolved "https://registry.yarnpkg.com/eth-sig-util/-/eth-sig-util-2.5.4.tgz#577b01fe491b6bf59b0464be09633e20c1677bc5" 1186 | integrity sha512-aCMBwp8q/4wrW4QLsF/HYBOSA7TpLKmkVwP3pYQNkEEseW2Rr8Z5Uxc9/h6HX+OG3tuHo+2bINVSihIeBfym6A== 1187 | dependencies: 1188 | ethereumjs-abi "0.6.8" 1189 | ethereumjs-util "^5.1.1" 1190 | tweetnacl "^1.0.3" 1191 | tweetnacl-util "^0.15.0" 1192 | 1193 | ethashjs@~0.0.7: 1194 | version "0.0.8" 1195 | resolved "https://registry.yarnpkg.com/ethashjs/-/ethashjs-0.0.8.tgz#227442f1bdee409a548fb04136e24c874f3aa6f9" 1196 | integrity sha512-/MSbf/r2/Ld8o0l15AymjOTlPqpN8Cr4ByUEA9GtR4x0yAh3TdtDzEg29zMjXCNPI7u6E5fOQdj/Cf9Tc7oVNw== 1197 | dependencies: 1198 | async "^2.1.2" 1199 | buffer-xor "^2.0.1" 1200 | ethereumjs-util "^7.0.2" 1201 | miller-rabin "^4.0.0" 1202 | 1203 | ethereum-cryptography@^0.1.2, ethereum-cryptography@^0.1.3: 1204 | version "0.1.3" 1205 | resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz#8d6143cfc3d74bf79bbd8edecdf29e4ae20dd191" 1206 | integrity sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ== 1207 | dependencies: 1208 | "@types/pbkdf2" "^3.0.0" 1209 | "@types/secp256k1" "^4.0.1" 1210 | blakejs "^1.1.0" 1211 | browserify-aes "^1.2.0" 1212 | bs58check "^2.1.2" 1213 | create-hash "^1.2.0" 1214 | create-hmac "^1.1.7" 1215 | hash.js "^1.1.7" 1216 | keccak "^3.0.0" 1217 | pbkdf2 "^3.0.17" 1218 | randombytes "^2.1.0" 1219 | safe-buffer "^5.1.2" 1220 | scrypt-js "^3.0.0" 1221 | secp256k1 "^4.0.1" 1222 | setimmediate "^1.0.5" 1223 | 1224 | ethereumjs-abi@0.6.8, ethereumjs-abi@^0.6.8: 1225 | version "0.6.8" 1226 | resolved "https://registry.yarnpkg.com/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz#71bc152db099f70e62f108b7cdfca1b362c6fcae" 1227 | integrity sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA== 1228 | dependencies: 1229 | bn.js "^4.11.8" 1230 | ethereumjs-util "^6.0.0" 1231 | 1232 | ethereumjs-account@^3.0.0: 1233 | version "3.0.0" 1234 | resolved "https://registry.yarnpkg.com/ethereumjs-account/-/ethereumjs-account-3.0.0.tgz#728f060c8e0c6e87f1e987f751d3da25422570a9" 1235 | integrity sha512-WP6BdscjiiPkQfF9PVfMcwx/rDvfZTjFKY0Uwc09zSQr9JfIVH87dYIJu0gNhBhpmovV4yq295fdllS925fnBA== 1236 | dependencies: 1237 | ethereumjs-util "^6.0.0" 1238 | rlp "^2.2.1" 1239 | safe-buffer "^5.1.1" 1240 | 1241 | ethereumjs-block@^2.2.2, ethereumjs-block@~2.2.2: 1242 | version "2.2.2" 1243 | resolved "https://registry.yarnpkg.com/ethereumjs-block/-/ethereumjs-block-2.2.2.tgz#c7654be7e22df489fda206139ecd63e2e9c04965" 1244 | integrity sha512-2p49ifhek3h2zeg/+da6XpdFR3GlqY3BIEiqxGF8j9aSRIgkb7M1Ky+yULBKJOu8PAZxfhsYA+HxUk2aCQp3vg== 1245 | dependencies: 1246 | async "^2.0.1" 1247 | ethereumjs-common "^1.5.0" 1248 | ethereumjs-tx "^2.1.1" 1249 | ethereumjs-util "^5.0.0" 1250 | merkle-patricia-tree "^2.1.2" 1251 | 1252 | ethereumjs-blockchain@^4.0.3: 1253 | version "4.0.4" 1254 | resolved "https://registry.yarnpkg.com/ethereumjs-blockchain/-/ethereumjs-blockchain-4.0.4.tgz#30f2228dc35f6dcf94423692a6902604ae34960f" 1255 | integrity sha512-zCxaRMUOzzjvX78DTGiKjA+4h2/sF0OYL1QuPux0DHpyq8XiNoF5GYHtb++GUxVlMsMfZV7AVyzbtgcRdIcEPQ== 1256 | dependencies: 1257 | async "^2.6.1" 1258 | ethashjs "~0.0.7" 1259 | ethereumjs-block "~2.2.2" 1260 | ethereumjs-common "^1.5.0" 1261 | ethereumjs-util "^6.1.0" 1262 | flow-stoplight "^1.0.0" 1263 | level-mem "^3.0.1" 1264 | lru-cache "^5.1.1" 1265 | rlp "^2.2.2" 1266 | semaphore "^1.1.0" 1267 | 1268 | ethereumjs-common@^1.5.0: 1269 | version "1.5.2" 1270 | resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-1.5.2.tgz#2065dbe9214e850f2e955a80e650cb6999066979" 1271 | integrity sha512-hTfZjwGX52GS2jcVO6E2sx4YuFnf0Fhp5ylo4pEPhEffNln7vS59Hr5sLnp3/QCazFLluuBZ+FZ6J5HTp0EqCA== 1272 | 1273 | ethereumjs-tx@^2.1.1, ethereumjs-tx@^2.1.2: 1274 | version "2.1.2" 1275 | resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz#5dfe7688bf177b45c9a23f86cf9104d47ea35fed" 1276 | integrity sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw== 1277 | dependencies: 1278 | ethereumjs-common "^1.5.0" 1279 | ethereumjs-util "^6.0.0" 1280 | 1281 | ethereumjs-util@^5.0.0, ethereumjs-util@^5.1.1, ethereumjs-util@^5.2.0: 1282 | version "5.2.1" 1283 | resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz#a833f0e5fca7e5b361384dc76301a721f537bf65" 1284 | integrity sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ== 1285 | dependencies: 1286 | bn.js "^4.11.0" 1287 | create-hash "^1.1.2" 1288 | elliptic "^6.5.2" 1289 | ethereum-cryptography "^0.1.3" 1290 | ethjs-util "^0.1.3" 1291 | rlp "^2.0.0" 1292 | safe-buffer "^5.1.1" 1293 | 1294 | ethereumjs-util@^6.0.0, ethereumjs-util@^6.1.0, ethereumjs-util@^6.2.0: 1295 | version "6.2.1" 1296 | resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz#fcb4e4dd5ceacb9d2305426ab1a5cd93e3163b69" 1297 | integrity sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw== 1298 | dependencies: 1299 | "@types/bn.js" "^4.11.3" 1300 | bn.js "^4.11.0" 1301 | create-hash "^1.1.2" 1302 | elliptic "^6.5.2" 1303 | ethereum-cryptography "^0.1.3" 1304 | ethjs-util "0.1.6" 1305 | rlp "^2.2.3" 1306 | 1307 | ethereumjs-util@^7.0.2: 1308 | version "7.0.9" 1309 | resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.0.9.tgz#2038baeb30f370a3e576ec175bd70bbbb6807d42" 1310 | integrity sha512-cRqvYYKJoitq6vMKMf8pXeVwvTrX+dRD0JwHaYqm8jvogK14tqIoCWH/KUHcRwnVxVXEYF/o6pup5jRG4V0xzg== 1311 | dependencies: 1312 | "@types/bn.js" "^5.1.0" 1313 | bn.js "^5.1.2" 1314 | create-hash "^1.1.2" 1315 | ethereum-cryptography "^0.1.3" 1316 | ethjs-util "0.1.6" 1317 | rlp "^2.2.4" 1318 | 1319 | ethers@^5.0.0, ethers@^5.0.32: 1320 | version "5.0.32" 1321 | resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.0.32.tgz#f009970be31d96a589bf0ce597a39c10c7e297a6" 1322 | integrity sha512-rORfGWR0HsA4pjKMMcWZorw12DHsXqfIAuPVHJsXt+vI24jvXcVqx+rLsSvgOoLdaCMdxiN5qlIq2+4axKG31g== 1323 | dependencies: 1324 | "@ethersproject/abi" "5.0.13" 1325 | "@ethersproject/abstract-provider" "5.0.10" 1326 | "@ethersproject/abstract-signer" "5.0.14" 1327 | "@ethersproject/address" "5.0.11" 1328 | "@ethersproject/base64" "5.0.9" 1329 | "@ethersproject/basex" "5.0.9" 1330 | "@ethersproject/bignumber" "5.0.15" 1331 | "@ethersproject/bytes" "5.0.11" 1332 | "@ethersproject/constants" "5.0.10" 1333 | "@ethersproject/contracts" "5.0.12" 1334 | "@ethersproject/hash" "5.0.12" 1335 | "@ethersproject/hdnode" "5.0.10" 1336 | "@ethersproject/json-wallets" "5.0.12" 1337 | "@ethersproject/keccak256" "5.0.9" 1338 | "@ethersproject/logger" "5.0.10" 1339 | "@ethersproject/networks" "5.0.9" 1340 | "@ethersproject/pbkdf2" "5.0.9" 1341 | "@ethersproject/properties" "5.0.9" 1342 | "@ethersproject/providers" "5.0.24" 1343 | "@ethersproject/random" "5.0.9" 1344 | "@ethersproject/rlp" "5.0.9" 1345 | "@ethersproject/sha2" "5.0.9" 1346 | "@ethersproject/signing-key" "5.0.11" 1347 | "@ethersproject/solidity" "5.0.10" 1348 | "@ethersproject/strings" "5.0.10" 1349 | "@ethersproject/transactions" "5.0.11" 1350 | "@ethersproject/units" "5.0.11" 1351 | "@ethersproject/wallet" "5.0.12" 1352 | "@ethersproject/web" "5.0.14" 1353 | "@ethersproject/wordlists" "5.0.10" 1354 | 1355 | ethjs-util@0.1.6, ethjs-util@^0.1.3: 1356 | version "0.1.6" 1357 | resolved "https://registry.yarnpkg.com/ethjs-util/-/ethjs-util-0.1.6.tgz#f308b62f185f9fe6237132fb2a9818866a5cd536" 1358 | integrity sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w== 1359 | dependencies: 1360 | is-hex-prefixed "1.0.0" 1361 | strip-hex-prefix "1.0.0" 1362 | 1363 | event-target-shim@^5.0.0: 1364 | version "5.0.1" 1365 | resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" 1366 | integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== 1367 | 1368 | evp_bytestokey@^1.0.3: 1369 | version "1.0.3" 1370 | resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" 1371 | integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== 1372 | dependencies: 1373 | md5.js "^1.3.4" 1374 | safe-buffer "^5.1.1" 1375 | 1376 | fake-merkle-patricia-tree@^1.0.1: 1377 | version "1.0.1" 1378 | resolved "https://registry.yarnpkg.com/fake-merkle-patricia-tree/-/fake-merkle-patricia-tree-1.0.1.tgz#4b8c3acfb520afadf9860b1f14cd8ce3402cddd3" 1379 | integrity sha1-S4w6z7Ugr635hgsfFM2M40As3dM= 1380 | dependencies: 1381 | checkpoint-store "^1.1.0" 1382 | 1383 | fill-range@^7.0.1: 1384 | version "7.0.1" 1385 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 1386 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 1387 | dependencies: 1388 | to-regex-range "^5.0.1" 1389 | 1390 | find-up@3.0.0, find-up@^3.0.0: 1391 | version "3.0.0" 1392 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" 1393 | integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== 1394 | dependencies: 1395 | locate-path "^3.0.0" 1396 | 1397 | find-up@5.0.0: 1398 | version "5.0.0" 1399 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" 1400 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== 1401 | dependencies: 1402 | locate-path "^6.0.0" 1403 | path-exists "^4.0.0" 1404 | 1405 | find-up@^2.1.0: 1406 | version "2.1.0" 1407 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" 1408 | integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= 1409 | dependencies: 1410 | locate-path "^2.0.0" 1411 | 1412 | flat@^4.1.0: 1413 | version "4.1.1" 1414 | resolved "https://registry.yarnpkg.com/flat/-/flat-4.1.1.tgz#a392059cc382881ff98642f5da4dde0a959f309b" 1415 | integrity sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA== 1416 | dependencies: 1417 | is-buffer "~2.0.3" 1418 | 1419 | flat@^5.0.2: 1420 | version "5.0.2" 1421 | resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" 1422 | integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== 1423 | 1424 | flow-stoplight@^1.0.0: 1425 | version "1.0.0" 1426 | resolved "https://registry.yarnpkg.com/flow-stoplight/-/flow-stoplight-1.0.0.tgz#4a292c5bcff8b39fa6cc0cb1a853d86f27eeff7b" 1427 | integrity sha1-SiksW8/4s5+mzAyxqFPYbyfu/3s= 1428 | 1429 | fmix@^0.1.0: 1430 | version "0.1.0" 1431 | resolved "https://registry.yarnpkg.com/fmix/-/fmix-0.1.0.tgz#c7bbf124dec42c9d191cfb947d0a9778dd986c0c" 1432 | integrity sha1-x7vxJN7ELJ0ZHPuUfQqXeN2YbAw= 1433 | dependencies: 1434 | imul "^1.0.0" 1435 | 1436 | follow-redirects@^1.10.0, follow-redirects@^1.12.1: 1437 | version "1.13.3" 1438 | resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.3.tgz#e5598ad50174c1bc4e872301e82ac2cd97f90267" 1439 | integrity sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA== 1440 | 1441 | for-each@^0.3.3: 1442 | version "0.3.3" 1443 | resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" 1444 | integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== 1445 | dependencies: 1446 | is-callable "^1.1.3" 1447 | 1448 | form-data@^3.0.0: 1449 | version "3.0.1" 1450 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" 1451 | integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== 1452 | dependencies: 1453 | asynckit "^0.4.0" 1454 | combined-stream "^1.0.8" 1455 | mime-types "^2.1.12" 1456 | 1457 | fp-ts@1.19.3: 1458 | version "1.19.3" 1459 | resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-1.19.3.tgz#261a60d1088fbff01f91256f91d21d0caaaaa96f" 1460 | integrity sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg== 1461 | 1462 | fp-ts@^1.0.0: 1463 | version "1.19.5" 1464 | resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-1.19.5.tgz#3da865e585dfa1fdfd51785417357ac50afc520a" 1465 | integrity sha512-wDNqTimnzs8QqpldiId9OavWK2NptormjXnRJTQecNjzwfyp6P/8s/zG8e4h3ja3oqkKaY72UlTjQYt/1yXf9A== 1466 | 1467 | fs-extra@^0.30.0: 1468 | version "0.30.0" 1469 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" 1470 | integrity sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A= 1471 | dependencies: 1472 | graceful-fs "^4.1.2" 1473 | jsonfile "^2.1.0" 1474 | klaw "^1.0.0" 1475 | path-is-absolute "^1.0.0" 1476 | rimraf "^2.2.8" 1477 | 1478 | fs-extra@^7.0.1: 1479 | version "7.0.1" 1480 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" 1481 | integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== 1482 | dependencies: 1483 | graceful-fs "^4.1.2" 1484 | jsonfile "^4.0.0" 1485 | universalify "^0.1.0" 1486 | 1487 | fs-extra@^9.0.0: 1488 | version "9.1.0" 1489 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" 1490 | integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== 1491 | dependencies: 1492 | at-least-node "^1.0.0" 1493 | graceful-fs "^4.2.0" 1494 | jsonfile "^6.0.1" 1495 | universalify "^2.0.0" 1496 | 1497 | fs.realpath@^1.0.0: 1498 | version "1.0.0" 1499 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 1500 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 1501 | 1502 | fsevents@~2.1.1: 1503 | version "2.1.3" 1504 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" 1505 | integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== 1506 | 1507 | fsevents@~2.3.1: 1508 | version "2.3.2" 1509 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 1510 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 1511 | 1512 | function-bind@^1.1.1: 1513 | version "1.1.1" 1514 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 1515 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 1516 | 1517 | functional-red-black-tree@^1.0.1, functional-red-black-tree@~1.0.1: 1518 | version "1.0.1" 1519 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" 1520 | integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= 1521 | 1522 | get-caller-file@^2.0.1, get-caller-file@^2.0.5: 1523 | version "2.0.5" 1524 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 1525 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 1526 | 1527 | get-func-name@^2.0.0: 1528 | version "2.0.0" 1529 | resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" 1530 | integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= 1531 | 1532 | get-intrinsic@^1.0.2, get-intrinsic@^1.1.1: 1533 | version "1.1.1" 1534 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" 1535 | integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== 1536 | dependencies: 1537 | function-bind "^1.1.1" 1538 | has "^1.0.3" 1539 | has-symbols "^1.0.1" 1540 | 1541 | glob-parent@~5.1.0: 1542 | version "5.1.2" 1543 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 1544 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 1545 | dependencies: 1546 | is-glob "^4.0.1" 1547 | 1548 | glob@7.1.3: 1549 | version "7.1.3" 1550 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" 1551 | integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== 1552 | dependencies: 1553 | fs.realpath "^1.0.0" 1554 | inflight "^1.0.4" 1555 | inherits "2" 1556 | minimatch "^3.0.4" 1557 | once "^1.3.0" 1558 | path-is-absolute "^1.0.0" 1559 | 1560 | glob@7.1.6, glob@^7.1.3: 1561 | version "7.1.6" 1562 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" 1563 | integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== 1564 | dependencies: 1565 | fs.realpath "^1.0.0" 1566 | inflight "^1.0.4" 1567 | inherits "2" 1568 | minimatch "^3.0.4" 1569 | once "^1.3.0" 1570 | path-is-absolute "^1.0.0" 1571 | 1572 | graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0: 1573 | version "4.2.6" 1574 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" 1575 | integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== 1576 | 1577 | growl@1.10.5: 1578 | version "1.10.5" 1579 | resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" 1580 | integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== 1581 | 1582 | hardhat-deploy-ethers@^0.3.0-beta.7: 1583 | version "0.3.0-beta.7" 1584 | resolved "https://registry.yarnpkg.com/hardhat-deploy-ethers/-/hardhat-deploy-ethers-0.3.0-beta.7.tgz#860d86b84ed3c4fdef64283ccf1e8d5623454d02" 1585 | integrity sha512-JKMNte6vudu9LSNqgmBtNxc1gfxp3NUcPKVAf/FANHfl9pa/mBGg6hpQO7tD8CLkAbe6f4K5BjyYIPWX3p7MKw== 1586 | 1587 | hardhat-deploy@^0.7.0-beta.50: 1588 | version "0.7.0-beta.50" 1589 | resolved "https://registry.yarnpkg.com/hardhat-deploy/-/hardhat-deploy-0.7.0-beta.50.tgz#e9e8ae0a6b566303f784aa74311d945cc109b857" 1590 | integrity sha512-WSt/wQYy4TLgwXZrvC4PNM+zpngX8nldhE8/pZ6B7JxovU9LwLhgqa9pvPST+sOhr7fTuBGrO7XyTVq2TgK6YQ== 1591 | dependencies: 1592 | "@ethersproject/abi" "^5.0.2" 1593 | "@ethersproject/abstract-signer" "^5.0.2" 1594 | "@ethersproject/address" "^5.0.2" 1595 | "@ethersproject/bignumber" "^5.0.5" 1596 | "@ethersproject/bytes" "^5.0.2" 1597 | "@ethersproject/contracts" "^5.0.2" 1598 | "@ethersproject/providers" "^5.0.5" 1599 | "@ethersproject/solidity" "^5.0.2" 1600 | "@ethersproject/transactions" "^5.0.2" 1601 | "@ethersproject/wallet" "^5.0.2" 1602 | "@types/qs" "^6.9.4" 1603 | axios "^0.21.1" 1604 | chalk "^4.1.0" 1605 | chokidar "^3.4.0" 1606 | debug "^4.1.1" 1607 | form-data "^3.0.0" 1608 | fs-extra "^9.0.0" 1609 | match-all "^1.2.6" 1610 | murmur-128 "^0.2.1" 1611 | qs "^6.9.4" 1612 | 1613 | hardhat@^2.1.1: 1614 | version "2.1.1" 1615 | resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.1.1.tgz#bcfed980019672b57011845a1678f714728d6ee7" 1616 | integrity sha512-55XMqB5QoeRg3m56rBg0NQgU//GPqOC9t4RbRSU3pdBJGHGXFTUh8fjTPxnWJNu9r72Zju++syGcCkPGwftyvw== 1617 | dependencies: 1618 | "@nomiclabs/ethereumjs-vm" "4.2.2" 1619 | "@sentry/node" "^5.18.1" 1620 | "@solidity-parser/parser" "^0.11.0" 1621 | "@types/bn.js" "^4.11.5" 1622 | "@types/lru-cache" "^5.1.0" 1623 | abort-controller "^3.0.0" 1624 | adm-zip "^0.4.16" 1625 | ansi-escapes "^4.3.0" 1626 | chalk "^2.4.2" 1627 | chokidar "^3.4.0" 1628 | ci-info "^2.0.0" 1629 | debug "^4.1.1" 1630 | enquirer "^2.3.0" 1631 | env-paths "^2.2.0" 1632 | eth-sig-util "^2.5.2" 1633 | ethereum-cryptography "^0.1.2" 1634 | ethereumjs-abi "^0.6.8" 1635 | ethereumjs-account "^3.0.0" 1636 | ethereumjs-block "^2.2.2" 1637 | ethereumjs-common "^1.5.0" 1638 | ethereumjs-tx "^2.1.2" 1639 | ethereumjs-util "^6.2.0" 1640 | find-up "^2.1.0" 1641 | fp-ts "1.19.3" 1642 | fs-extra "^7.0.1" 1643 | glob "^7.1.3" 1644 | immutable "^4.0.0-rc.12" 1645 | io-ts "1.10.4" 1646 | lodash "^4.17.11" 1647 | merkle-patricia-tree "3.0.0" 1648 | mnemonist "^0.38.0" 1649 | mocha "^7.1.2" 1650 | node-fetch "^2.6.0" 1651 | qs "^6.7.0" 1652 | raw-body "^2.4.1" 1653 | resolve "1.17.0" 1654 | semver "^6.3.0" 1655 | slash "^3.0.0" 1656 | solc "0.7.3" 1657 | source-map-support "^0.5.13" 1658 | stacktrace-parser "^0.1.10" 1659 | "true-case-path" "^2.2.1" 1660 | tsort "0.0.1" 1661 | uuid "^3.3.2" 1662 | ws "^7.2.1" 1663 | 1664 | has-bigints@^1.0.0: 1665 | version "1.0.1" 1666 | resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" 1667 | integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== 1668 | 1669 | has-flag@^3.0.0: 1670 | version "3.0.0" 1671 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 1672 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 1673 | 1674 | has-flag@^4.0.0: 1675 | version "4.0.0" 1676 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 1677 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 1678 | 1679 | has-symbols@^1.0.0, has-symbols@^1.0.1, has-symbols@^1.0.2: 1680 | version "1.0.2" 1681 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" 1682 | integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== 1683 | 1684 | has@^1.0.3: 1685 | version "1.0.3" 1686 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 1687 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 1688 | dependencies: 1689 | function-bind "^1.1.1" 1690 | 1691 | hash-base@^3.0.0: 1692 | version "3.1.0" 1693 | resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" 1694 | integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== 1695 | dependencies: 1696 | inherits "^2.0.4" 1697 | readable-stream "^3.6.0" 1698 | safe-buffer "^5.2.0" 1699 | 1700 | hash.js@1.1.3: 1701 | version "1.1.3" 1702 | resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" 1703 | integrity sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA== 1704 | dependencies: 1705 | inherits "^2.0.3" 1706 | minimalistic-assert "^1.0.0" 1707 | 1708 | hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: 1709 | version "1.1.7" 1710 | resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" 1711 | integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== 1712 | dependencies: 1713 | inherits "^2.0.3" 1714 | minimalistic-assert "^1.0.1" 1715 | 1716 | he@1.2.0: 1717 | version "1.2.0" 1718 | resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" 1719 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== 1720 | 1721 | hmac-drbg@^1.0.1: 1722 | version "1.0.1" 1723 | resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" 1724 | integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= 1725 | dependencies: 1726 | hash.js "^1.0.3" 1727 | minimalistic-assert "^1.0.0" 1728 | minimalistic-crypto-utils "^1.0.1" 1729 | 1730 | http-errors@1.7.3: 1731 | version "1.7.3" 1732 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" 1733 | integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== 1734 | dependencies: 1735 | depd "~1.1.2" 1736 | inherits "2.0.4" 1737 | setprototypeof "1.1.1" 1738 | statuses ">= 1.5.0 < 2" 1739 | toidentifier "1.0.0" 1740 | 1741 | https-proxy-agent@^5.0.0: 1742 | version "5.0.0" 1743 | resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" 1744 | integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== 1745 | dependencies: 1746 | agent-base "6" 1747 | debug "4" 1748 | 1749 | iconv-lite@0.4.24: 1750 | version "0.4.24" 1751 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 1752 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 1753 | dependencies: 1754 | safer-buffer ">= 2.1.2 < 3" 1755 | 1756 | ieee754@^1.1.13: 1757 | version "1.2.1" 1758 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" 1759 | integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== 1760 | 1761 | immediate@^3.2.3: 1762 | version "3.3.0" 1763 | resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.3.0.tgz#1aef225517836bcdf7f2a2de2600c79ff0269266" 1764 | integrity sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q== 1765 | 1766 | immediate@~3.2.3: 1767 | version "3.2.3" 1768 | resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.2.3.tgz#d140fa8f614659bd6541233097ddaac25cdd991c" 1769 | integrity sha1-0UD6j2FGWb1lQSMwl92qwlzdmRw= 1770 | 1771 | immutable@^4.0.0-rc.12: 1772 | version "4.0.0-rc.12" 1773 | resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.0.0-rc.12.tgz#ca59a7e4c19ae8d9bf74a97bdf0f6e2f2a5d0217" 1774 | integrity sha512-0M2XxkZLx/mi3t8NVwIm1g8nHoEmM9p9UBl/G9k4+hm0kBgOVdMV/B3CY5dQ8qG8qc80NN4gDV4HQv6FTJ5q7A== 1775 | 1776 | imul@^1.0.0: 1777 | version "1.0.1" 1778 | resolved "https://registry.yarnpkg.com/imul/-/imul-1.0.1.tgz#9d5867161e8b3de96c2c38d5dc7cb102f35e2ac9" 1779 | integrity sha1-nVhnFh6LPelsLDjV3HyxAvNeKsk= 1780 | 1781 | inflight@^1.0.4: 1782 | version "1.0.6" 1783 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1784 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 1785 | dependencies: 1786 | once "^1.3.0" 1787 | wrappy "1" 1788 | 1789 | inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: 1790 | version "2.0.4" 1791 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 1792 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 1793 | 1794 | io-ts@1.10.4: 1795 | version "1.10.4" 1796 | resolved "https://registry.yarnpkg.com/io-ts/-/io-ts-1.10.4.tgz#cd5401b138de88e4f920adbcb7026e2d1967e6e2" 1797 | integrity sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g== 1798 | dependencies: 1799 | fp-ts "^1.0.0" 1800 | 1801 | is-bigint@^1.0.1: 1802 | version "1.0.1" 1803 | resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.1.tgz#6923051dfcbc764278540b9ce0e6b3213aa5ebc2" 1804 | integrity sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg== 1805 | 1806 | is-binary-path@~2.1.0: 1807 | version "2.1.0" 1808 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 1809 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 1810 | dependencies: 1811 | binary-extensions "^2.0.0" 1812 | 1813 | is-boolean-object@^1.1.0: 1814 | version "1.1.0" 1815 | resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.0.tgz#e2aaad3a3a8fca34c28f6eee135b156ed2587ff0" 1816 | integrity sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA== 1817 | dependencies: 1818 | call-bind "^1.0.0" 1819 | 1820 | is-buffer@~2.0.3: 1821 | version "2.0.5" 1822 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" 1823 | integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== 1824 | 1825 | is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.3: 1826 | version "1.2.3" 1827 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" 1828 | integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== 1829 | 1830 | is-date-object@^1.0.1: 1831 | version "1.0.2" 1832 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" 1833 | integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== 1834 | 1835 | is-extglob@^2.1.1: 1836 | version "2.1.1" 1837 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 1838 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 1839 | 1840 | is-fullwidth-code-point@^2.0.0: 1841 | version "2.0.0" 1842 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 1843 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= 1844 | 1845 | is-fullwidth-code-point@^3.0.0: 1846 | version "3.0.0" 1847 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 1848 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 1849 | 1850 | is-glob@^4.0.1, is-glob@~4.0.1: 1851 | version "4.0.1" 1852 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" 1853 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== 1854 | dependencies: 1855 | is-extglob "^2.1.1" 1856 | 1857 | is-hex-prefixed@1.0.0: 1858 | version "1.0.0" 1859 | resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" 1860 | integrity sha1-fY035q135dEnFIkTxXPggtd39VQ= 1861 | 1862 | is-negative-zero@^2.0.1: 1863 | version "2.0.1" 1864 | resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" 1865 | integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== 1866 | 1867 | is-number-object@^1.0.4: 1868 | version "1.0.4" 1869 | resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" 1870 | integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== 1871 | 1872 | is-number@^7.0.0: 1873 | version "7.0.0" 1874 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 1875 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 1876 | 1877 | is-plain-obj@^2.1.0: 1878 | version "2.1.0" 1879 | resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" 1880 | integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== 1881 | 1882 | is-regex@^1.1.2: 1883 | version "1.1.2" 1884 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.2.tgz#81c8ebde4db142f2cf1c53fc86d6a45788266251" 1885 | integrity sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg== 1886 | dependencies: 1887 | call-bind "^1.0.2" 1888 | has-symbols "^1.0.1" 1889 | 1890 | is-string@^1.0.5: 1891 | version "1.0.5" 1892 | resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" 1893 | integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== 1894 | 1895 | is-symbol@^1.0.2, is-symbol@^1.0.3: 1896 | version "1.0.3" 1897 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" 1898 | integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== 1899 | dependencies: 1900 | has-symbols "^1.0.1" 1901 | 1902 | isarray@0.0.1: 1903 | version "0.0.1" 1904 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" 1905 | integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= 1906 | 1907 | isarray@~1.0.0: 1908 | version "1.0.0" 1909 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 1910 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 1911 | 1912 | isexe@^2.0.0: 1913 | version "2.0.0" 1914 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1915 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 1916 | 1917 | js-sha3@0.5.7: 1918 | version "0.5.7" 1919 | resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7" 1920 | integrity sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc= 1921 | 1922 | js-sha3@0.8.0: 1923 | version "0.8.0" 1924 | resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" 1925 | integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== 1926 | 1927 | js-yaml@3.13.1: 1928 | version "3.13.1" 1929 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" 1930 | integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== 1931 | dependencies: 1932 | argparse "^1.0.7" 1933 | esprima "^4.0.0" 1934 | 1935 | js-yaml@4.0.0: 1936 | version "4.0.0" 1937 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.0.0.tgz#f426bc0ff4b4051926cd588c71113183409a121f" 1938 | integrity sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q== 1939 | dependencies: 1940 | argparse "^2.0.1" 1941 | 1942 | jsonfile@^2.1.0: 1943 | version "2.4.0" 1944 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" 1945 | integrity sha1-NzaitCi4e72gzIO1P6PWM6NcKug= 1946 | optionalDependencies: 1947 | graceful-fs "^4.1.6" 1948 | 1949 | jsonfile@^4.0.0: 1950 | version "4.0.0" 1951 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" 1952 | integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= 1953 | optionalDependencies: 1954 | graceful-fs "^4.1.6" 1955 | 1956 | jsonfile@^6.0.1: 1957 | version "6.1.0" 1958 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" 1959 | integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== 1960 | dependencies: 1961 | universalify "^2.0.0" 1962 | optionalDependencies: 1963 | graceful-fs "^4.1.6" 1964 | 1965 | keccak@^3.0.0: 1966 | version "3.0.1" 1967 | resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.1.tgz#ae30a0e94dbe43414f741375cff6d64c8bea0bff" 1968 | integrity sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA== 1969 | dependencies: 1970 | node-addon-api "^2.0.0" 1971 | node-gyp-build "^4.2.0" 1972 | 1973 | klaw@^1.0.0: 1974 | version "1.3.1" 1975 | resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" 1976 | integrity sha1-QIhDO0azsbolnXh4XY6W9zugJDk= 1977 | optionalDependencies: 1978 | graceful-fs "^4.1.9" 1979 | 1980 | level-codec@^9.0.0: 1981 | version "9.0.2" 1982 | resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-9.0.2.tgz#fd60df8c64786a80d44e63423096ffead63d8cbc" 1983 | integrity sha512-UyIwNb1lJBChJnGfjmO0OR+ezh2iVu1Kas3nvBS/BzGnx79dv6g7unpKIDNPMhfdTEGoc7mC8uAu51XEtX+FHQ== 1984 | dependencies: 1985 | buffer "^5.6.0" 1986 | 1987 | level-codec@~7.0.0: 1988 | version "7.0.1" 1989 | resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-7.0.1.tgz#341f22f907ce0f16763f24bddd681e395a0fb8a7" 1990 | integrity sha512-Ua/R9B9r3RasXdRmOtd+t9TCOEIIlts+TN/7XTT2unhDaL6sJn83S3rUyljbr6lVtw49N3/yA0HHjpV6Kzb2aQ== 1991 | 1992 | level-errors@^1.0.3: 1993 | version "1.1.2" 1994 | resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-1.1.2.tgz#4399c2f3d3ab87d0625f7e3676e2d807deff404d" 1995 | integrity sha512-Sw/IJwWbPKF5Ai4Wz60B52yj0zYeqzObLh8k1Tk88jVmD51cJSKWSYpRyhVIvFzZdvsPqlH5wfhp/yxdsaQH4w== 1996 | dependencies: 1997 | errno "~0.1.1" 1998 | 1999 | level-errors@^2.0.0, level-errors@~2.0.0: 2000 | version "2.0.1" 2001 | resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-2.0.1.tgz#2132a677bf4e679ce029f517c2f17432800c05c8" 2002 | integrity sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw== 2003 | dependencies: 2004 | errno "~0.1.1" 2005 | 2006 | level-errors@~1.0.3: 2007 | version "1.0.5" 2008 | resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-1.0.5.tgz#83dbfb12f0b8a2516bdc9a31c4876038e227b859" 2009 | integrity sha512-/cLUpQduF6bNrWuAC4pwtUKA5t669pCsCi2XbmojG2tFeOr9j6ShtdDCtFFQO1DRt+EVZhx9gPzP9G2bUaG4ig== 2010 | dependencies: 2011 | errno "~0.1.1" 2012 | 2013 | level-iterator-stream@~1.3.0: 2014 | version "1.3.1" 2015 | resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz#e43b78b1a8143e6fa97a4f485eb8ea530352f2ed" 2016 | integrity sha1-5Dt4sagUPm+pek9IXrjqUwNS8u0= 2017 | dependencies: 2018 | inherits "^2.0.1" 2019 | level-errors "^1.0.3" 2020 | readable-stream "^1.0.33" 2021 | xtend "^4.0.0" 2022 | 2023 | level-iterator-stream@~3.0.0: 2024 | version "3.0.1" 2025 | resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-3.0.1.tgz#2c98a4f8820d87cdacab3132506815419077c730" 2026 | integrity sha512-nEIQvxEED9yRThxvOrq8Aqziy4EGzrxSZK+QzEFAVuJvQ8glfyZ96GB6BoI4sBbLfjMXm2w4vu3Tkcm9obcY0g== 2027 | dependencies: 2028 | inherits "^2.0.1" 2029 | readable-stream "^2.3.6" 2030 | xtend "^4.0.0" 2031 | 2032 | level-mem@^3.0.1: 2033 | version "3.0.1" 2034 | resolved "https://registry.yarnpkg.com/level-mem/-/level-mem-3.0.1.tgz#7ce8cf256eac40f716eb6489654726247f5a89e5" 2035 | integrity sha512-LbtfK9+3Ug1UmvvhR2DqLqXiPW1OJ5jEh0a3m9ZgAipiwpSxGj/qaVVy54RG5vAQN1nCuXqjvprCuKSCxcJHBg== 2036 | dependencies: 2037 | level-packager "~4.0.0" 2038 | memdown "~3.0.0" 2039 | 2040 | level-packager@~4.0.0: 2041 | version "4.0.1" 2042 | resolved "https://registry.yarnpkg.com/level-packager/-/level-packager-4.0.1.tgz#7e7d3016af005be0869bc5fa8de93d2a7f56ffe6" 2043 | integrity sha512-svCRKfYLn9/4CoFfi+d8krOtrp6RoX8+xm0Na5cgXMqSyRru0AnDYdLl+YI8u1FyS6gGZ94ILLZDE5dh2but3Q== 2044 | dependencies: 2045 | encoding-down "~5.0.0" 2046 | levelup "^3.0.0" 2047 | 2048 | level-ws@0.0.0: 2049 | version "0.0.0" 2050 | resolved "https://registry.yarnpkg.com/level-ws/-/level-ws-0.0.0.tgz#372e512177924a00424b0b43aef2bb42496d228b" 2051 | integrity sha1-Ny5RIXeSSgBCSwtDrvK7QkltIos= 2052 | dependencies: 2053 | readable-stream "~1.0.15" 2054 | xtend "~2.1.1" 2055 | 2056 | level-ws@^1.0.0: 2057 | version "1.0.0" 2058 | resolved "https://registry.yarnpkg.com/level-ws/-/level-ws-1.0.0.tgz#19a22d2d4ac57b18cc7c6ecc4bd23d899d8f603b" 2059 | integrity sha512-RXEfCmkd6WWFlArh3X8ONvQPm8jNpfA0s/36M4QzLqrLEIt1iJE9WBHLZ5vZJK6haMjJPJGJCQWfjMNnRcq/9Q== 2060 | dependencies: 2061 | inherits "^2.0.3" 2062 | readable-stream "^2.2.8" 2063 | xtend "^4.0.1" 2064 | 2065 | levelup@^1.2.1: 2066 | version "1.3.9" 2067 | resolved "https://registry.yarnpkg.com/levelup/-/levelup-1.3.9.tgz#2dbcae845b2bb2b6bea84df334c475533bbd82ab" 2068 | integrity sha512-VVGHfKIlmw8w1XqpGOAGwq6sZm2WwWLmlDcULkKWQXEA5EopA8OBNJ2Ck2v6bdk8HeEZSbCSEgzXadyQFm76sQ== 2069 | dependencies: 2070 | deferred-leveldown "~1.2.1" 2071 | level-codec "~7.0.0" 2072 | level-errors "~1.0.3" 2073 | level-iterator-stream "~1.3.0" 2074 | prr "~1.0.1" 2075 | semver "~5.4.1" 2076 | xtend "~4.0.0" 2077 | 2078 | levelup@^3.0.0: 2079 | version "3.1.1" 2080 | resolved "https://registry.yarnpkg.com/levelup/-/levelup-3.1.1.tgz#c2c0b3be2b4dc316647c53b42e2f559e232d2189" 2081 | integrity sha512-9N10xRkUU4dShSRRFTBdNaBxofz+PGaIZO962ckboJZiNmLuhVT6FZ6ZKAsICKfUBO76ySaYU6fJWX/jnj3Lcg== 2082 | dependencies: 2083 | deferred-leveldown "~4.0.0" 2084 | level-errors "~2.0.0" 2085 | level-iterator-stream "~3.0.0" 2086 | xtend "~4.0.0" 2087 | 2088 | locate-path@^2.0.0: 2089 | version "2.0.0" 2090 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" 2091 | integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= 2092 | dependencies: 2093 | p-locate "^2.0.0" 2094 | path-exists "^3.0.0" 2095 | 2096 | locate-path@^3.0.0: 2097 | version "3.0.0" 2098 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" 2099 | integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== 2100 | dependencies: 2101 | p-locate "^3.0.0" 2102 | path-exists "^3.0.0" 2103 | 2104 | locate-path@^6.0.0: 2105 | version "6.0.0" 2106 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" 2107 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== 2108 | dependencies: 2109 | p-locate "^5.0.0" 2110 | 2111 | lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15: 2112 | version "4.17.21" 2113 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 2114 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 2115 | 2116 | log-symbols@3.0.0: 2117 | version "3.0.0" 2118 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" 2119 | integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== 2120 | dependencies: 2121 | chalk "^2.4.2" 2122 | 2123 | log-symbols@4.0.0: 2124 | version "4.0.0" 2125 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" 2126 | integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA== 2127 | dependencies: 2128 | chalk "^4.0.0" 2129 | 2130 | lru-cache@^5.1.1: 2131 | version "5.1.1" 2132 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" 2133 | integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== 2134 | dependencies: 2135 | yallist "^3.0.2" 2136 | 2137 | lru_map@^0.3.3: 2138 | version "0.3.3" 2139 | resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" 2140 | integrity sha1-tcg1G5Rky9dQM1p5ZQoOwOVhGN0= 2141 | 2142 | ltgt@~2.2.0: 2143 | version "2.2.1" 2144 | resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.2.1.tgz#f35ca91c493f7b73da0e07495304f17b31f87ee5" 2145 | integrity sha1-81ypHEk/e3PaDgdJUwTxezH4fuU= 2146 | 2147 | make-error@^1.1.1: 2148 | version "1.3.6" 2149 | resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" 2150 | integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== 2151 | 2152 | match-all@^1.2.6: 2153 | version "1.2.6" 2154 | resolved "https://registry.yarnpkg.com/match-all/-/match-all-1.2.6.tgz#66d276ad6b49655551e63d3a6ee53e8be0566f8d" 2155 | integrity sha512-0EESkXiTkWzrQQntBu2uzKvLu6vVkUGz40nGPbSZuegcfE5UuSzNjLaIu76zJWuaT/2I3Z/8M06OlUOZLGwLlQ== 2156 | 2157 | md5.js@^1.3.4: 2158 | version "1.3.5" 2159 | resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" 2160 | integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== 2161 | dependencies: 2162 | hash-base "^3.0.0" 2163 | inherits "^2.0.1" 2164 | safe-buffer "^5.1.2" 2165 | 2166 | memdown@^1.0.0: 2167 | version "1.4.1" 2168 | resolved "https://registry.yarnpkg.com/memdown/-/memdown-1.4.1.tgz#b4e4e192174664ffbae41361aa500f3119efe215" 2169 | integrity sha1-tOThkhdGZP+65BNhqlAPMRnv4hU= 2170 | dependencies: 2171 | abstract-leveldown "~2.7.1" 2172 | functional-red-black-tree "^1.0.1" 2173 | immediate "^3.2.3" 2174 | inherits "~2.0.1" 2175 | ltgt "~2.2.0" 2176 | safe-buffer "~5.1.1" 2177 | 2178 | memdown@~3.0.0: 2179 | version "3.0.0" 2180 | resolved "https://registry.yarnpkg.com/memdown/-/memdown-3.0.0.tgz#93aca055d743b20efc37492e9e399784f2958309" 2181 | integrity sha512-tbV02LfZMWLcHcq4tw++NuqMO+FZX8tNJEiD2aNRm48ZZusVg5N8NART+dmBkepJVye986oixErf7jfXboMGMA== 2182 | dependencies: 2183 | abstract-leveldown "~5.0.0" 2184 | functional-red-black-tree "~1.0.1" 2185 | immediate "~3.2.3" 2186 | inherits "~2.0.1" 2187 | ltgt "~2.2.0" 2188 | safe-buffer "~5.1.1" 2189 | 2190 | memorystream@^0.3.1: 2191 | version "0.3.1" 2192 | resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" 2193 | integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI= 2194 | 2195 | merkle-patricia-tree@3.0.0: 2196 | version "3.0.0" 2197 | resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-3.0.0.tgz#448d85415565df72febc33ca362b8b614f5a58f8" 2198 | integrity sha512-soRaMuNf/ILmw3KWbybaCjhx86EYeBbD8ph0edQCTed0JN/rxDt1EBN52Ajre3VyGo+91f8+/rfPIRQnnGMqmQ== 2199 | dependencies: 2200 | async "^2.6.1" 2201 | ethereumjs-util "^5.2.0" 2202 | level-mem "^3.0.1" 2203 | level-ws "^1.0.0" 2204 | readable-stream "^3.0.6" 2205 | rlp "^2.0.0" 2206 | semaphore ">=1.0.1" 2207 | 2208 | merkle-patricia-tree@^2.1.2: 2209 | version "2.3.2" 2210 | resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-2.3.2.tgz#982ca1b5a0fde00eed2f6aeed1f9152860b8208a" 2211 | integrity sha512-81PW5m8oz/pz3GvsAwbauj7Y00rqm81Tzad77tHBwU7pIAtN+TJnMSOJhxBKflSVYhptMMb9RskhqHqrSm1V+g== 2212 | dependencies: 2213 | async "^1.4.2" 2214 | ethereumjs-util "^5.0.0" 2215 | level-ws "0.0.0" 2216 | levelup "^1.2.1" 2217 | memdown "^1.0.0" 2218 | readable-stream "^2.0.0" 2219 | rlp "^2.0.0" 2220 | semaphore ">=1.0.1" 2221 | 2222 | miller-rabin@^4.0.0: 2223 | version "4.0.1" 2224 | resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" 2225 | integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== 2226 | dependencies: 2227 | bn.js "^4.0.0" 2228 | brorand "^1.0.1" 2229 | 2230 | mime-db@1.46.0: 2231 | version "1.46.0" 2232 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.46.0.tgz#6267748a7f799594de3cbc8cde91def349661cee" 2233 | integrity sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ== 2234 | 2235 | mime-types@^2.1.12: 2236 | version "2.1.29" 2237 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.29.tgz#1d4ab77da64b91f5f72489df29236563754bb1b2" 2238 | integrity sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ== 2239 | dependencies: 2240 | mime-db "1.46.0" 2241 | 2242 | minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: 2243 | version "1.0.1" 2244 | resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" 2245 | integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== 2246 | 2247 | minimalistic-crypto-utils@^1.0.1: 2248 | version "1.0.1" 2249 | resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" 2250 | integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= 2251 | 2252 | minimatch@3.0.4, minimatch@^3.0.4: 2253 | version "3.0.4" 2254 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 2255 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 2256 | dependencies: 2257 | brace-expansion "^1.1.7" 2258 | 2259 | minimist@^1.2.5: 2260 | version "1.2.5" 2261 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 2262 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 2263 | 2264 | mkdirp@0.5.5: 2265 | version "0.5.5" 2266 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" 2267 | integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== 2268 | dependencies: 2269 | minimist "^1.2.5" 2270 | 2271 | mnemonist@^0.38.0: 2272 | version "0.38.3" 2273 | resolved "https://registry.yarnpkg.com/mnemonist/-/mnemonist-0.38.3.tgz#35ec79c1c1f4357cfda2fe264659c2775ccd7d9d" 2274 | integrity sha512-2K9QYubXx/NAjv4VLq1d1Ly8pWNC5L3BrixtdkyTegXWJIqY+zLNDhhX/A+ZwWt70tB1S8H4BE8FLYEFyNoOBw== 2275 | dependencies: 2276 | obliterator "^1.6.1" 2277 | 2278 | mocha@^7.1.2: 2279 | version "7.2.0" 2280 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-7.2.0.tgz#01cc227b00d875ab1eed03a75106689cfed5a604" 2281 | integrity sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ== 2282 | dependencies: 2283 | ansi-colors "3.2.3" 2284 | browser-stdout "1.3.1" 2285 | chokidar "3.3.0" 2286 | debug "3.2.6" 2287 | diff "3.5.0" 2288 | escape-string-regexp "1.0.5" 2289 | find-up "3.0.0" 2290 | glob "7.1.3" 2291 | growl "1.10.5" 2292 | he "1.2.0" 2293 | js-yaml "3.13.1" 2294 | log-symbols "3.0.0" 2295 | minimatch "3.0.4" 2296 | mkdirp "0.5.5" 2297 | ms "2.1.1" 2298 | node-environment-flags "1.0.6" 2299 | object.assign "4.1.0" 2300 | strip-json-comments "2.0.1" 2301 | supports-color "6.0.0" 2302 | which "1.3.1" 2303 | wide-align "1.1.3" 2304 | yargs "13.3.2" 2305 | yargs-parser "13.1.2" 2306 | yargs-unparser "1.6.0" 2307 | 2308 | mocha@^8.3.2: 2309 | version "8.3.2" 2310 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-8.3.2.tgz#53406f195fa86fbdebe71f8b1c6fb23221d69fcc" 2311 | integrity sha512-UdmISwr/5w+uXLPKspgoV7/RXZwKRTiTjJ2/AC5ZiEztIoOYdfKb19+9jNmEInzx5pBsCyJQzarAxqIGBNYJhg== 2312 | dependencies: 2313 | "@ungap/promise-all-settled" "1.1.2" 2314 | ansi-colors "4.1.1" 2315 | browser-stdout "1.3.1" 2316 | chokidar "3.5.1" 2317 | debug "4.3.1" 2318 | diff "5.0.0" 2319 | escape-string-regexp "4.0.0" 2320 | find-up "5.0.0" 2321 | glob "7.1.6" 2322 | growl "1.10.5" 2323 | he "1.2.0" 2324 | js-yaml "4.0.0" 2325 | log-symbols "4.0.0" 2326 | minimatch "3.0.4" 2327 | ms "2.1.3" 2328 | nanoid "3.1.20" 2329 | serialize-javascript "5.0.1" 2330 | strip-json-comments "3.1.1" 2331 | supports-color "8.1.1" 2332 | which "2.0.2" 2333 | wide-align "1.1.3" 2334 | workerpool "6.1.0" 2335 | yargs "16.2.0" 2336 | yargs-parser "20.2.4" 2337 | yargs-unparser "2.0.0" 2338 | 2339 | ms@2.1.1: 2340 | version "2.1.1" 2341 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" 2342 | integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== 2343 | 2344 | ms@2.1.2: 2345 | version "2.1.2" 2346 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 2347 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 2348 | 2349 | ms@2.1.3, ms@^2.1.1: 2350 | version "2.1.3" 2351 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 2352 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 2353 | 2354 | murmur-128@^0.2.1: 2355 | version "0.2.1" 2356 | resolved "https://registry.yarnpkg.com/murmur-128/-/murmur-128-0.2.1.tgz#a9f6568781d2350ecb1bf80c14968cadbeaa4b4d" 2357 | integrity sha512-WseEgiRkI6aMFBbj8Cg9yBj/y+OdipwVC7zUo3W2W1JAJITwouUOtpqsmGSg67EQmwwSyod7hsVsWY5LsrfQVg== 2358 | dependencies: 2359 | encode-utf8 "^1.0.2" 2360 | fmix "^0.1.0" 2361 | imul "^1.0.0" 2362 | 2363 | nanoid@3.1.20: 2364 | version "3.1.20" 2365 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.20.tgz#badc263c6b1dcf14b71efaa85f6ab4c1d6cfc788" 2366 | integrity sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw== 2367 | 2368 | node-addon-api@^2.0.0: 2369 | version "2.0.2" 2370 | resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" 2371 | integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== 2372 | 2373 | node-environment-flags@1.0.6: 2374 | version "1.0.6" 2375 | resolved "https://registry.yarnpkg.com/node-environment-flags/-/node-environment-flags-1.0.6.tgz#a30ac13621f6f7d674260a54dede048c3982c088" 2376 | integrity sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw== 2377 | dependencies: 2378 | object.getownpropertydescriptors "^2.0.3" 2379 | semver "^5.7.0" 2380 | 2381 | node-fetch@^2.6.0: 2382 | version "2.6.1" 2383 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" 2384 | integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== 2385 | 2386 | node-gyp-build@^4.2.0: 2387 | version "4.2.3" 2388 | resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.2.3.tgz#ce6277f853835f718829efb47db20f3e4d9c4739" 2389 | integrity sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg== 2390 | 2391 | normalize-path@^3.0.0, normalize-path@~3.0.0: 2392 | version "3.0.0" 2393 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 2394 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 2395 | 2396 | object-inspect@^1.9.0: 2397 | version "1.9.0" 2398 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a" 2399 | integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw== 2400 | 2401 | object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: 2402 | version "1.1.1" 2403 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" 2404 | integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== 2405 | 2406 | object-keys@~0.4.0: 2407 | version "0.4.0" 2408 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336" 2409 | integrity sha1-KKaq50KN0sOpLz2V8hM13SBOAzY= 2410 | 2411 | object.assign@4.1.0: 2412 | version "4.1.0" 2413 | resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" 2414 | integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== 2415 | dependencies: 2416 | define-properties "^1.1.2" 2417 | function-bind "^1.1.1" 2418 | has-symbols "^1.0.0" 2419 | object-keys "^1.0.11" 2420 | 2421 | object.assign@^4.1.2: 2422 | version "4.1.2" 2423 | resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" 2424 | integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== 2425 | dependencies: 2426 | call-bind "^1.0.0" 2427 | define-properties "^1.1.3" 2428 | has-symbols "^1.0.1" 2429 | object-keys "^1.1.1" 2430 | 2431 | object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.1: 2432 | version "2.1.2" 2433 | resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz#1bd63aeacf0d5d2d2f31b5e393b03a7c601a23f7" 2434 | integrity sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ== 2435 | dependencies: 2436 | call-bind "^1.0.2" 2437 | define-properties "^1.1.3" 2438 | es-abstract "^1.18.0-next.2" 2439 | 2440 | obliterator@^1.6.1: 2441 | version "1.6.1" 2442 | resolved "https://registry.yarnpkg.com/obliterator/-/obliterator-1.6.1.tgz#dea03e8ab821f6c4d96a299e17aef6a3af994ef3" 2443 | integrity sha512-9WXswnqINnnhOG/5SLimUlzuU1hFJUc8zkwyD59Sd+dPOMf05PmnYG/d6Q7HZ+KmgkZJa1PxRso6QdM3sTNHig== 2444 | 2445 | once@^1.3.0: 2446 | version "1.4.0" 2447 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 2448 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 2449 | dependencies: 2450 | wrappy "1" 2451 | 2452 | os-tmpdir@~1.0.2: 2453 | version "1.0.2" 2454 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 2455 | integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= 2456 | 2457 | p-limit@^1.1.0: 2458 | version "1.3.0" 2459 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" 2460 | integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== 2461 | dependencies: 2462 | p-try "^1.0.0" 2463 | 2464 | p-limit@^2.0.0: 2465 | version "2.3.0" 2466 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" 2467 | integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== 2468 | dependencies: 2469 | p-try "^2.0.0" 2470 | 2471 | p-limit@^3.0.2: 2472 | version "3.1.0" 2473 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" 2474 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== 2475 | dependencies: 2476 | yocto-queue "^0.1.0" 2477 | 2478 | p-locate@^2.0.0: 2479 | version "2.0.0" 2480 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" 2481 | integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= 2482 | dependencies: 2483 | p-limit "^1.1.0" 2484 | 2485 | p-locate@^3.0.0: 2486 | version "3.0.0" 2487 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" 2488 | integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== 2489 | dependencies: 2490 | p-limit "^2.0.0" 2491 | 2492 | p-locate@^5.0.0: 2493 | version "5.0.0" 2494 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" 2495 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== 2496 | dependencies: 2497 | p-limit "^3.0.2" 2498 | 2499 | p-try@^1.0.0: 2500 | version "1.0.0" 2501 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" 2502 | integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= 2503 | 2504 | p-try@^2.0.0: 2505 | version "2.2.0" 2506 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" 2507 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== 2508 | 2509 | path-exists@^3.0.0: 2510 | version "3.0.0" 2511 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" 2512 | integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= 2513 | 2514 | path-exists@^4.0.0: 2515 | version "4.0.0" 2516 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 2517 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 2518 | 2519 | path-is-absolute@^1.0.0: 2520 | version "1.0.1" 2521 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 2522 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 2523 | 2524 | path-parse@^1.0.6: 2525 | version "1.0.6" 2526 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" 2527 | integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== 2528 | 2529 | pathval@^1.1.1: 2530 | version "1.1.1" 2531 | resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" 2532 | integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== 2533 | 2534 | pbkdf2@^3.0.17: 2535 | version "3.1.1" 2536 | resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.1.tgz#cb8724b0fada984596856d1a6ebafd3584654b94" 2537 | integrity sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg== 2538 | dependencies: 2539 | create-hash "^1.1.2" 2540 | create-hmac "^1.1.4" 2541 | ripemd160 "^2.0.1" 2542 | safe-buffer "^5.0.1" 2543 | sha.js "^2.4.8" 2544 | 2545 | picomatch@^2.0.4, picomatch@^2.2.1: 2546 | version "2.2.2" 2547 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" 2548 | integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== 2549 | 2550 | process-nextick-args@~2.0.0: 2551 | version "2.0.1" 2552 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" 2553 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== 2554 | 2555 | prr@~1.0.1: 2556 | version "1.0.1" 2557 | resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" 2558 | integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= 2559 | 2560 | qs@^6.7.0, qs@^6.9.4: 2561 | version "6.10.1" 2562 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.1.tgz#4931482fa8d647a5aab799c5271d2133b981fb6a" 2563 | integrity sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg== 2564 | dependencies: 2565 | side-channel "^1.0.4" 2566 | 2567 | randombytes@^2.1.0: 2568 | version "2.1.0" 2569 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" 2570 | integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== 2571 | dependencies: 2572 | safe-buffer "^5.1.0" 2573 | 2574 | raw-body@^2.4.1: 2575 | version "2.4.1" 2576 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.1.tgz#30ac82f98bb5ae8c152e67149dac8d55153b168c" 2577 | integrity sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA== 2578 | dependencies: 2579 | bytes "3.1.0" 2580 | http-errors "1.7.3" 2581 | iconv-lite "0.4.24" 2582 | unpipe "1.0.0" 2583 | 2584 | readable-stream@^1.0.33: 2585 | version "1.1.14" 2586 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" 2587 | integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= 2588 | dependencies: 2589 | core-util-is "~1.0.0" 2590 | inherits "~2.0.1" 2591 | isarray "0.0.1" 2592 | string_decoder "~0.10.x" 2593 | 2594 | readable-stream@^2.0.0, readable-stream@^2.2.8, readable-stream@^2.3.6: 2595 | version "2.3.7" 2596 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" 2597 | integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== 2598 | dependencies: 2599 | core-util-is "~1.0.0" 2600 | inherits "~2.0.3" 2601 | isarray "~1.0.0" 2602 | process-nextick-args "~2.0.0" 2603 | safe-buffer "~5.1.1" 2604 | string_decoder "~1.1.1" 2605 | util-deprecate "~1.0.1" 2606 | 2607 | readable-stream@^3.0.6, readable-stream@^3.6.0: 2608 | version "3.6.0" 2609 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" 2610 | integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== 2611 | dependencies: 2612 | inherits "^2.0.3" 2613 | string_decoder "^1.1.1" 2614 | util-deprecate "^1.0.1" 2615 | 2616 | readable-stream@~1.0.15: 2617 | version "1.0.34" 2618 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" 2619 | integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= 2620 | dependencies: 2621 | core-util-is "~1.0.0" 2622 | inherits "~2.0.1" 2623 | isarray "0.0.1" 2624 | string_decoder "~0.10.x" 2625 | 2626 | readdirp@~3.2.0: 2627 | version "3.2.0" 2628 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.2.0.tgz#c30c33352b12c96dfb4b895421a49fd5a9593839" 2629 | integrity sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ== 2630 | dependencies: 2631 | picomatch "^2.0.4" 2632 | 2633 | readdirp@~3.5.0: 2634 | version "3.5.0" 2635 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" 2636 | integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== 2637 | dependencies: 2638 | picomatch "^2.2.1" 2639 | 2640 | require-directory@^2.1.1: 2641 | version "2.1.1" 2642 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 2643 | integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= 2644 | 2645 | require-from-string@^2.0.0: 2646 | version "2.0.2" 2647 | resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" 2648 | integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== 2649 | 2650 | require-main-filename@^2.0.0: 2651 | version "2.0.0" 2652 | resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" 2653 | integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== 2654 | 2655 | resolve@1.17.0: 2656 | version "1.17.0" 2657 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" 2658 | integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== 2659 | dependencies: 2660 | path-parse "^1.0.6" 2661 | 2662 | rimraf@^2.2.8: 2663 | version "2.7.1" 2664 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" 2665 | integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== 2666 | dependencies: 2667 | glob "^7.1.3" 2668 | 2669 | ripemd160@^2.0.0, ripemd160@^2.0.1: 2670 | version "2.0.2" 2671 | resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" 2672 | integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== 2673 | dependencies: 2674 | hash-base "^3.0.0" 2675 | inherits "^2.0.1" 2676 | 2677 | rlp@^2.0.0, rlp@^2.2.1, rlp@^2.2.2, rlp@^2.2.3, rlp@^2.2.4: 2678 | version "2.2.6" 2679 | resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.6.tgz#c80ba6266ac7a483ef1e69e8e2f056656de2fb2c" 2680 | integrity sha512-HAfAmL6SDYNWPUOJNrM500x4Thn4PZsEy5pijPh40U9WfNk0z15hUYzO9xVIMAdIHdFtD8CBDHd75Td1g36Mjg== 2681 | dependencies: 2682 | bn.js "^4.11.1" 2683 | 2684 | rustbn.js@~0.2.0: 2685 | version "0.2.0" 2686 | resolved "https://registry.yarnpkg.com/rustbn.js/-/rustbn.js-0.2.0.tgz#8082cb886e707155fd1cb6f23bd591ab8d55d0ca" 2687 | integrity sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA== 2688 | 2689 | safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: 2690 | version "5.2.1" 2691 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 2692 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 2693 | 2694 | safe-buffer@~5.1.0, safe-buffer@~5.1.1: 2695 | version "5.1.2" 2696 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 2697 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 2698 | 2699 | "safer-buffer@>= 2.1.2 < 3": 2700 | version "2.1.2" 2701 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 2702 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 2703 | 2704 | scrypt-js@3.0.1, scrypt-js@^3.0.0: 2705 | version "3.0.1" 2706 | resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" 2707 | integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== 2708 | 2709 | secp256k1@^4.0.1: 2710 | version "4.0.2" 2711 | resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.2.tgz#15dd57d0f0b9fdb54ac1fa1694f40e5e9a54f4a1" 2712 | integrity sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg== 2713 | dependencies: 2714 | elliptic "^6.5.2" 2715 | node-addon-api "^2.0.0" 2716 | node-gyp-build "^4.2.0" 2717 | 2718 | semaphore@>=1.0.1, semaphore@^1.1.0: 2719 | version "1.1.0" 2720 | resolved "https://registry.yarnpkg.com/semaphore/-/semaphore-1.1.0.tgz#aaad8b86b20fe8e9b32b16dc2ee682a8cd26a8aa" 2721 | integrity sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA== 2722 | 2723 | semver@^5.5.0, semver@^5.7.0: 2724 | version "5.7.1" 2725 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 2726 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 2727 | 2728 | semver@^6.3.0: 2729 | version "6.3.0" 2730 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 2731 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 2732 | 2733 | semver@~5.4.1: 2734 | version "5.4.1" 2735 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" 2736 | integrity sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg== 2737 | 2738 | serialize-javascript@5.0.1: 2739 | version "5.0.1" 2740 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" 2741 | integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== 2742 | dependencies: 2743 | randombytes "^2.1.0" 2744 | 2745 | set-blocking@^2.0.0: 2746 | version "2.0.0" 2747 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 2748 | integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= 2749 | 2750 | setimmediate@^1.0.5: 2751 | version "1.0.5" 2752 | resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" 2753 | integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= 2754 | 2755 | setprototypeof@1.1.1: 2756 | version "1.1.1" 2757 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" 2758 | integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== 2759 | 2760 | sha.js@^2.4.0, sha.js@^2.4.8: 2761 | version "2.4.11" 2762 | resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" 2763 | integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== 2764 | dependencies: 2765 | inherits "^2.0.1" 2766 | safe-buffer "^5.0.1" 2767 | 2768 | side-channel@^1.0.4: 2769 | version "1.0.4" 2770 | resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" 2771 | integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== 2772 | dependencies: 2773 | call-bind "^1.0.0" 2774 | get-intrinsic "^1.0.2" 2775 | object-inspect "^1.9.0" 2776 | 2777 | slash@^3.0.0: 2778 | version "3.0.0" 2779 | resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" 2780 | integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== 2781 | 2782 | solc@0.7.3: 2783 | version "0.7.3" 2784 | resolved "https://registry.yarnpkg.com/solc/-/solc-0.7.3.tgz#04646961bd867a744f63d2b4e3c0701ffdc7d78a" 2785 | integrity sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA== 2786 | dependencies: 2787 | command-exists "^1.2.8" 2788 | commander "3.0.2" 2789 | follow-redirects "^1.12.1" 2790 | fs-extra "^0.30.0" 2791 | js-sha3 "0.8.0" 2792 | memorystream "^0.3.1" 2793 | require-from-string "^2.0.0" 2794 | semver "^5.5.0" 2795 | tmp "0.0.33" 2796 | 2797 | source-map-support@^0.5.13, source-map-support@^0.5.17: 2798 | version "0.5.19" 2799 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" 2800 | integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== 2801 | dependencies: 2802 | buffer-from "^1.0.0" 2803 | source-map "^0.6.0" 2804 | 2805 | source-map@^0.6.0: 2806 | version "0.6.1" 2807 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 2808 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 2809 | 2810 | sprintf-js@~1.0.2: 2811 | version "1.0.3" 2812 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 2813 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 2814 | 2815 | stacktrace-parser@^0.1.10: 2816 | version "0.1.10" 2817 | resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a" 2818 | integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg== 2819 | dependencies: 2820 | type-fest "^0.7.1" 2821 | 2822 | "statuses@>= 1.5.0 < 2": 2823 | version "1.5.0" 2824 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" 2825 | integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= 2826 | 2827 | "string-width@^1.0.2 || 2": 2828 | version "2.1.1" 2829 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" 2830 | integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== 2831 | dependencies: 2832 | is-fullwidth-code-point "^2.0.0" 2833 | strip-ansi "^4.0.0" 2834 | 2835 | string-width@^3.0.0, string-width@^3.1.0: 2836 | version "3.1.0" 2837 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" 2838 | integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== 2839 | dependencies: 2840 | emoji-regex "^7.0.1" 2841 | is-fullwidth-code-point "^2.0.0" 2842 | strip-ansi "^5.1.0" 2843 | 2844 | string-width@^4.1.0, string-width@^4.2.0: 2845 | version "4.2.2" 2846 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" 2847 | integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== 2848 | dependencies: 2849 | emoji-regex "^8.0.0" 2850 | is-fullwidth-code-point "^3.0.0" 2851 | strip-ansi "^6.0.0" 2852 | 2853 | string.prototype.trimend@^1.0.4: 2854 | version "1.0.4" 2855 | resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" 2856 | integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== 2857 | dependencies: 2858 | call-bind "^1.0.2" 2859 | define-properties "^1.1.3" 2860 | 2861 | string.prototype.trimstart@^1.0.4: 2862 | version "1.0.4" 2863 | resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" 2864 | integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== 2865 | dependencies: 2866 | call-bind "^1.0.2" 2867 | define-properties "^1.1.3" 2868 | 2869 | string_decoder@^1.1.1: 2870 | version "1.3.0" 2871 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" 2872 | integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== 2873 | dependencies: 2874 | safe-buffer "~5.2.0" 2875 | 2876 | string_decoder@~0.10.x: 2877 | version "0.10.31" 2878 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" 2879 | integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= 2880 | 2881 | string_decoder@~1.1.1: 2882 | version "1.1.1" 2883 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 2884 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 2885 | dependencies: 2886 | safe-buffer "~5.1.0" 2887 | 2888 | strip-ansi@^4.0.0: 2889 | version "4.0.0" 2890 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" 2891 | integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= 2892 | dependencies: 2893 | ansi-regex "^3.0.0" 2894 | 2895 | strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: 2896 | version "5.2.0" 2897 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" 2898 | integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== 2899 | dependencies: 2900 | ansi-regex "^4.1.0" 2901 | 2902 | strip-ansi@^6.0.0: 2903 | version "6.0.0" 2904 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" 2905 | integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== 2906 | dependencies: 2907 | ansi-regex "^5.0.0" 2908 | 2909 | strip-hex-prefix@1.0.0: 2910 | version "1.0.0" 2911 | resolved "https://registry.yarnpkg.com/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz#0c5f155fef1151373377de9dbb588da05500e36f" 2912 | integrity sha1-DF8VX+8RUTczd96du1iNoFUA428= 2913 | dependencies: 2914 | is-hex-prefixed "1.0.0" 2915 | 2916 | strip-json-comments@2.0.1: 2917 | version "2.0.1" 2918 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 2919 | integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= 2920 | 2921 | strip-json-comments@3.1.1: 2922 | version "3.1.1" 2923 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 2924 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 2925 | 2926 | supports-color@6.0.0: 2927 | version "6.0.0" 2928 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.0.0.tgz#76cfe742cf1f41bb9b1c29ad03068c05b4c0e40a" 2929 | integrity sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg== 2930 | dependencies: 2931 | has-flag "^3.0.0" 2932 | 2933 | supports-color@8.1.1: 2934 | version "8.1.1" 2935 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" 2936 | integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== 2937 | dependencies: 2938 | has-flag "^4.0.0" 2939 | 2940 | supports-color@^5.3.0: 2941 | version "5.5.0" 2942 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 2943 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 2944 | dependencies: 2945 | has-flag "^3.0.0" 2946 | 2947 | supports-color@^7.1.0: 2948 | version "7.2.0" 2949 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 2950 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 2951 | dependencies: 2952 | has-flag "^4.0.0" 2953 | 2954 | tmp@0.0.33: 2955 | version "0.0.33" 2956 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" 2957 | integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== 2958 | dependencies: 2959 | os-tmpdir "~1.0.2" 2960 | 2961 | to-regex-range@^5.0.1: 2962 | version "5.0.1" 2963 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 2964 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 2965 | dependencies: 2966 | is-number "^7.0.0" 2967 | 2968 | toidentifier@1.0.0: 2969 | version "1.0.0" 2970 | resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" 2971 | integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== 2972 | 2973 | "true-case-path@^2.2.1": 2974 | version "2.2.1" 2975 | resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-2.2.1.tgz#c5bf04a5bbec3fd118be4084461b3a27c4d796bf" 2976 | integrity sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q== 2977 | 2978 | ts-node@^9.1.1: 2979 | version "9.1.1" 2980 | resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-9.1.1.tgz#51a9a450a3e959401bda5f004a72d54b936d376d" 2981 | integrity sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg== 2982 | dependencies: 2983 | arg "^4.1.0" 2984 | create-require "^1.1.0" 2985 | diff "^4.0.1" 2986 | make-error "^1.1.1" 2987 | source-map-support "^0.5.17" 2988 | yn "3.1.1" 2989 | 2990 | tslib@^1.9.3: 2991 | version "1.14.1" 2992 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" 2993 | integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== 2994 | 2995 | tsort@0.0.1: 2996 | version "0.0.1" 2997 | resolved "https://registry.yarnpkg.com/tsort/-/tsort-0.0.1.tgz#e2280f5e817f8bf4275657fd0f9aebd44f5a2786" 2998 | integrity sha1-4igPXoF/i/QnVlf9D5rr1E9aJ4Y= 2999 | 3000 | tweetnacl-util@^0.15.0: 3001 | version "0.15.1" 3002 | resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz#b80fcdb5c97bcc508be18c44a4be50f022eea00b" 3003 | integrity sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw== 3004 | 3005 | tweetnacl@^1.0.3: 3006 | version "1.0.3" 3007 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" 3008 | integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== 3009 | 3010 | type-detect@^4.0.0, type-detect@^4.0.5: 3011 | version "4.0.8" 3012 | resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" 3013 | integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== 3014 | 3015 | type-fest@^0.11.0: 3016 | version "0.11.0" 3017 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" 3018 | integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== 3019 | 3020 | type-fest@^0.7.1: 3021 | version "0.7.1" 3022 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48" 3023 | integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== 3024 | 3025 | typescript@^4.2.3: 3026 | version "4.2.3" 3027 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.2.3.tgz#39062d8019912d43726298f09493d598048c1ce3" 3028 | integrity sha512-qOcYwxaByStAWrBf4x0fibwZvMRG+r4cQoTjbPtUlrWjBHbmCAww1i448U0GJ+3cNNEtebDteo/cHOR3xJ4wEw== 3029 | 3030 | unbox-primitive@^1.0.0: 3031 | version "1.0.0" 3032 | resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.0.tgz#eeacbc4affa28e9b3d36b5eaeccc50b3251b1d3f" 3033 | integrity sha512-P/51NX+JXyxK/aigg1/ZgyccdAxm5K1+n8+tvqSntjOivPt19gvm1VC49RWYetsiub8WViUchdxl/KWHHB0kzA== 3034 | dependencies: 3035 | function-bind "^1.1.1" 3036 | has-bigints "^1.0.0" 3037 | has-symbols "^1.0.0" 3038 | which-boxed-primitive "^1.0.1" 3039 | 3040 | universalify@^0.1.0: 3041 | version "0.1.2" 3042 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" 3043 | integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== 3044 | 3045 | universalify@^2.0.0: 3046 | version "2.0.0" 3047 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" 3048 | integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== 3049 | 3050 | unpipe@1.0.0: 3051 | version "1.0.0" 3052 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 3053 | integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= 3054 | 3055 | util-deprecate@^1.0.1, util-deprecate@~1.0.1: 3056 | version "1.0.2" 3057 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 3058 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 3059 | 3060 | util.promisify@^1.0.0: 3061 | version "1.1.1" 3062 | resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.1.1.tgz#77832f57ced2c9478174149cae9b96e9918cd54b" 3063 | integrity sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw== 3064 | dependencies: 3065 | call-bind "^1.0.0" 3066 | define-properties "^1.1.3" 3067 | for-each "^0.3.3" 3068 | has-symbols "^1.0.1" 3069 | object.getownpropertydescriptors "^2.1.1" 3070 | 3071 | uuid@^3.3.2: 3072 | version "3.4.0" 3073 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" 3074 | integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== 3075 | 3076 | which-boxed-primitive@^1.0.1: 3077 | version "1.0.2" 3078 | resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" 3079 | integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== 3080 | dependencies: 3081 | is-bigint "^1.0.1" 3082 | is-boolean-object "^1.1.0" 3083 | is-number-object "^1.0.4" 3084 | is-string "^1.0.5" 3085 | is-symbol "^1.0.3" 3086 | 3087 | which-module@^2.0.0: 3088 | version "2.0.0" 3089 | resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" 3090 | integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= 3091 | 3092 | which@1.3.1: 3093 | version "1.3.1" 3094 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" 3095 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== 3096 | dependencies: 3097 | isexe "^2.0.0" 3098 | 3099 | which@2.0.2: 3100 | version "2.0.2" 3101 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 3102 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 3103 | dependencies: 3104 | isexe "^2.0.0" 3105 | 3106 | wide-align@1.1.3: 3107 | version "1.1.3" 3108 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" 3109 | integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== 3110 | dependencies: 3111 | string-width "^1.0.2 || 2" 3112 | 3113 | workerpool@6.1.0: 3114 | version "6.1.0" 3115 | resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.1.0.tgz#a8e038b4c94569596852de7a8ea4228eefdeb37b" 3116 | integrity sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg== 3117 | 3118 | wrap-ansi@^5.1.0: 3119 | version "5.1.0" 3120 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" 3121 | integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== 3122 | dependencies: 3123 | ansi-styles "^3.2.0" 3124 | string-width "^3.0.0" 3125 | strip-ansi "^5.0.0" 3126 | 3127 | wrap-ansi@^7.0.0: 3128 | version "7.0.0" 3129 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 3130 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 3131 | dependencies: 3132 | ansi-styles "^4.0.0" 3133 | string-width "^4.1.0" 3134 | strip-ansi "^6.0.0" 3135 | 3136 | wrappy@1: 3137 | version "1.0.2" 3138 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 3139 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 3140 | 3141 | ws@7.2.3: 3142 | version "7.2.3" 3143 | resolved "https://registry.yarnpkg.com/ws/-/ws-7.2.3.tgz#a5411e1fb04d5ed0efee76d26d5c46d830c39b46" 3144 | integrity sha512-HTDl9G9hbkNDk98naoR/cHDws7+EyYMOdL1BmjsZXRUjf7d+MficC4B7HLUPlSiho0vg+CWKrGIt/VJBd1xunQ== 3145 | 3146 | ws@^7.2.1: 3147 | version "7.4.4" 3148 | resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.4.tgz#383bc9742cb202292c9077ceab6f6047b17f2d59" 3149 | integrity sha512-Qm8k8ojNQIMx7S+Zp8u/uHOx7Qazv3Yv4q68MiWWWOJhiwG5W3x7iqmRtJo8xxrciZUY4vRxUTJCKuRnF28ZZw== 3150 | 3151 | xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0: 3152 | version "4.0.2" 3153 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" 3154 | integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== 3155 | 3156 | xtend@~2.1.1: 3157 | version "2.1.2" 3158 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b" 3159 | integrity sha1-bv7MKk2tjmlixJAbM3znuoe10os= 3160 | dependencies: 3161 | object-keys "~0.4.0" 3162 | 3163 | y18n@^4.0.0: 3164 | version "4.0.1" 3165 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4" 3166 | integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ== 3167 | 3168 | y18n@^5.0.5: 3169 | version "5.0.5" 3170 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.5.tgz#8769ec08d03b1ea2df2500acef561743bbb9ab18" 3171 | integrity sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg== 3172 | 3173 | yallist@^3.0.2: 3174 | version "3.1.1" 3175 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" 3176 | integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== 3177 | 3178 | yargs-parser@13.1.2, yargs-parser@^13.1.2: 3179 | version "13.1.2" 3180 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" 3181 | integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== 3182 | dependencies: 3183 | camelcase "^5.0.0" 3184 | decamelize "^1.2.0" 3185 | 3186 | yargs-parser@20.2.4: 3187 | version "20.2.4" 3188 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" 3189 | integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== 3190 | 3191 | yargs-parser@^20.2.2: 3192 | version "20.2.7" 3193 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.7.tgz#61df85c113edfb5a7a4e36eb8aa60ef423cbc90a" 3194 | integrity sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw== 3195 | 3196 | yargs-unparser@1.6.0: 3197 | version "1.6.0" 3198 | resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-1.6.0.tgz#ef25c2c769ff6bd09e4b0f9d7c605fb27846ea9f" 3199 | integrity sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw== 3200 | dependencies: 3201 | flat "^4.1.0" 3202 | lodash "^4.17.15" 3203 | yargs "^13.3.0" 3204 | 3205 | yargs-unparser@2.0.0: 3206 | version "2.0.0" 3207 | resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" 3208 | integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== 3209 | dependencies: 3210 | camelcase "^6.0.0" 3211 | decamelize "^4.0.0" 3212 | flat "^5.0.2" 3213 | is-plain-obj "^2.1.0" 3214 | 3215 | yargs@13.3.2, yargs@^13.3.0: 3216 | version "13.3.2" 3217 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" 3218 | integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== 3219 | dependencies: 3220 | cliui "^5.0.0" 3221 | find-up "^3.0.0" 3222 | get-caller-file "^2.0.1" 3223 | require-directory "^2.1.1" 3224 | require-main-filename "^2.0.0" 3225 | set-blocking "^2.0.0" 3226 | string-width "^3.0.0" 3227 | which-module "^2.0.0" 3228 | y18n "^4.0.0" 3229 | yargs-parser "^13.1.2" 3230 | 3231 | yargs@16.2.0: 3232 | version "16.2.0" 3233 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" 3234 | integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== 3235 | dependencies: 3236 | cliui "^7.0.2" 3237 | escalade "^3.1.1" 3238 | get-caller-file "^2.0.5" 3239 | require-directory "^2.1.1" 3240 | string-width "^4.2.0" 3241 | y18n "^5.0.5" 3242 | yargs-parser "^20.2.2" 3243 | 3244 | yn@3.1.1: 3245 | version "3.1.1" 3246 | resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" 3247 | integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== 3248 | 3249 | yocto-queue@^0.1.0: 3250 | version "0.1.0" 3251 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" 3252 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== 3253 | --------------------------------------------------------------------------------