├── remappings.txt ├── .gitattributes ├── .env.example ├── .vscode └── settings.json ├── .prettierrc.yml ├── .gitignore ├── foundry.toml ├── .gitmodules ├── src ├── test │ └── utils │ │ ├── tokens │ │ ├── TokenERC721.sol │ │ └── TokenERC20.sol │ │ ├── Hevm.sol │ │ └── Caller.sol ├── OnlyAuthorized.sol └── OnlyAuthorized.t.sol ├── .solhint.json ├── Makefile ├── .github ├── ISSUE_TEMPLATE │ ├── bug.md │ └── feature.md ├── PULL_REQUEST_TEMPLATE │ └── pull_request_template.md └── workflows │ └── ci.yml ├── package.json ├── CHANGELOG.md ├── README.md ├── LICENSE └── yarn.lock /remappings.txt: -------------------------------------------------------------------------------- 1 | @openzeppelin/=lib/openzeppelin-contracts/ 2 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | .dapprc linguist-language=Shell 2 | *.sol linguist-language=Solidity 3 | -------------------------------------------------------------------------------- /.env.example: -------------------------------------------------------------------------------- 1 | export ETH_FROM=YOUR_DEFAULT_SENDER_ACCOUNT 2 | export RPC_ON=no 3 | export ETH_NODE=https://eth-mainnet.alchemyapi.io/v2/ALCHEMY_API_KEY 4 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "solidity.packageDefaultDependenciesContractsDirectory": "src", 3 | "solidity.packageDefaultDependenciesDirectory": "lib" 4 | } -------------------------------------------------------------------------------- /.prettierrc.yml: -------------------------------------------------------------------------------- 1 | arrowParens: avoid 2 | bracketSpacing: false 3 | endOfLine: auto 4 | printWidth: 80 5 | singleQuote: false 6 | tabWidth: 4 7 | trailingComma: all 8 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Environment variables 2 | .env 3 | 4 | # MacOS 5 | .DS_Store 6 | 7 | # Node 8 | node_modules 9 | 10 | # Dapptools 11 | out/ 12 | 13 | # Foundry 14 | cache/ -------------------------------------------------------------------------------- /foundry.toml: -------------------------------------------------------------------------------- 1 | # Full reference 2 | # https://onbjerg.github.io/foundry-book/reference/config.html 3 | 4 | [profile.default] 5 | solc_version = "0.8.13" 6 | optimizer = true 7 | optimizer_runs = 20000 8 | gas_reports = ["*"] 9 | 10 | [profile.ci] 11 | verbosity = 4 12 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "lib/openzeppelin-contracts"] 2 | path = lib/openzeppelin-contracts 3 | url = https://github.com/OpenZeppelin/openzeppelin-contracts 4 | [submodule "lib/mockprovider"] 5 | path = lib/mockprovider 6 | url = https://github.com/cleanunicorn/mockprovider 7 | [submodule "lib/forge-std"] 8 | path = lib/forge-std 9 | url = https://github.com/foundry-rs/forge-std 10 | -------------------------------------------------------------------------------- /src/test/utils/tokens/TokenERC721.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | pragma solidity ^0.8.0; 3 | 4 | import {ERC721} from "@openzeppelin/contracts/token/ERC721/ERC721.sol"; 5 | 6 | contract Token is ERC721 { 7 | constructor(string memory _name, string memory _symbol) 8 | ERC721(_name, _symbol) 9 | { 10 | this; 11 | } 12 | 13 | function mint(address _to, uint256 _id) public { 14 | _mint(_to, _id); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/test/utils/tokens/TokenERC20.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | pragma solidity ^0.8.0; 3 | 4 | import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; 5 | 6 | contract TokenERC20 is ERC20 { 7 | constructor(string memory _name, string memory _symbol) 8 | ERC20(_name, _symbol) 9 | { 10 | this; 11 | } 12 | 13 | function mint(address _to, uint256 _amount) public { 14 | _mint(_to, _amount); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/test/utils/Hevm.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Unlicense 2 | pragma solidity ^0.8.0; 3 | 4 | abstract contract Hevm { 5 | // sets the block timestamp to x 6 | function warp(uint256 x) public virtual; 7 | 8 | // sets the block number to x 9 | function roll(uint256 x) public virtual; 10 | 11 | // sets the slot loc of contract c to val 12 | function store( 13 | address c, 14 | bytes32 loc, 15 | bytes32 val 16 | ) public virtual; 17 | 18 | function ffi(string[] calldata) external virtual returns (bytes memory); 19 | } 20 | -------------------------------------------------------------------------------- /.solhint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "solhint:recommended", 3 | "plugins": ["prettier"], 4 | "rules": { 5 | "code-complexity": ["error", 8], 6 | "compiler-version": ["error", ">=0.5.8"], 7 | "const-name-snakecase": "off", 8 | "constructor-syntax": "error", 9 | "func-visibility": ["error", { "ignoreConstructors": true }], 10 | "max-line-length": ["error", 120], 11 | "not-rely-on-time": "off", 12 | "prettier/prettier": [ 13 | "error", 14 | { 15 | "endOfLine": "auto" 16 | } 17 | ], 18 | "reason-string": ["warn", { "maxLength": 64 }] 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | # include .env file and export its env vars 2 | # (-include to ignore error if it does not exist) 3 | -include .env 4 | 5 | # Update dependencies 6 | setup :; make update-libs ; make install-deps 7 | update-libs :; git submodule update --init --recursive 8 | install-deps :; yarn install --frozen-lockfile 9 | 10 | # Build & test & deploy 11 | build :; forge build 12 | xclean :; forge clean 13 | lint :; yarn run lint 14 | test :; forge test 15 | test-gasreport :; forge test --gas-report 16 | # test-fork :; forge test --gas-report --fork-url ${ETH_NODE} 17 | watch :; forge test --watch src/ 18 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: 🐜 Bug report 3 | about: If something isn't working 🔧 4 | title: "[BUG NAME]" 5 | labels: bug, help wanted 6 | --- 7 | 8 | **What is the expected behavior?** 9 | 10 | **What is the actual behavior?** 11 | 12 | **Please provide a proof of concept that demonstrates the bug.** 13 | 14 | **Other notes on how to reproduce the issue?** 15 | 16 | **Any possible solutions?** 17 | 18 | **Can you identify the location in the source code where the problem exists?** 19 | 20 | **If the bug is confirmed, would you be willing to submit a PR?** 21 | 22 | Yes / No _(Help can be provided if you need assistance submitting a PR)_ -------------------------------------------------------------------------------- /src/OnlyAuthorized.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: UNLICENSED 2 | pragma solidity ^0.8.0; 3 | 4 | contract OnlyAuthorized { 5 | address public owner; 6 | uint256 public n; 7 | 8 | error OnlyOwner(); 9 | error ZeroAddress(); 10 | 11 | constructor() { 12 | owner = msg.sender; 13 | } 14 | 15 | modifier onlyOwner() { 16 | if (msg.sender != owner) revert OnlyOwner(); 17 | _; 18 | } 19 | 20 | function changeOwner(address newOwner) external onlyOwner { 21 | if (newOwner == address(0)) revert ZeroAddress(); 22 | owner = newOwner; 23 | } 24 | 25 | function setN(uint256 newN) external { 26 | n = newN; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE/pull_request_template.md: -------------------------------------------------------------------------------- 1 | ### Description 2 | 3 | 10 | 11 | ### Issues 12 | 13 | 16 | 17 | - Closes #ISSUE 18 | 19 | ### Todo 20 | 21 | - [ ] Link issues 22 | - [ ] Link projects 23 | - [ ] Update tests 24 | - [ ] Update code 25 | - [ ] Comment code 26 | - [ ] Test locally 27 | - [ ] Update changelog -------------------------------------------------------------------------------- /src/test/utils/Caller.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | pragma solidity ^0.8.0; 3 | 4 | contract Caller { 5 | /// @dev Can use this method to call any other contract's function 6 | /// @param contractAddress_ Address of the contract to call 7 | /// @param callData_ Call data 8 | /// @return ok is `true` if the call was successful 9 | /// @return data is the encoded result of the call 10 | function externalCall(address contractAddress_, bytes calldata callData_) 11 | external 12 | returns (bool, bytes memory) 13 | { 14 | (bool ok, bytes memory data) = contractAddress_.call(callData_); // solhint-disable-line 15 | return (ok, data); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: 🚀 Feature request 3 | about: If you have a feature request 💡 4 | title: "[FEATURE NAME]" 5 | labels: enhancement, help wanted 6 | --- 7 | 8 | **Context** 9 | 10 | What are you trying to do and how would you want to do it differently? Is it something you currently you cannot do? Is this related to an issue/problem? 11 | 12 | **Details** 13 | 14 | Add as many details to this issue to help anyone implementing the feature by themselves. 15 | 16 | **Alternatives** 17 | 18 | Can you achieve the same result doing it in an alternative way? Is the alternative considerable? 19 | 20 | **Security concerns** 21 | 22 | How does this affect the security of the system? Are there any other risks associated with the feature? 23 | 24 | **Has the feature been requested before?** 25 | 26 | Please provide a link to the issue. 27 | 28 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "magnus", 3 | "author": "Daniel Luca (@CleanUnicorn)", 4 | "license": "Apache-2.0", 5 | "version": "1.0.0", 6 | "description": "Smart Contract starting template", 7 | "files": [ 8 | "*.sol" 9 | ], 10 | "devDependencies": { 11 | "copyfiles": "^2.4.1", 12 | "prettier": "^2.4.1", 13 | "prettier-plugin-solidity": "^1.0.0-beta.18", 14 | "rimraf": "^3.0.2", 15 | "solhint": "^3.3.6", 16 | "solhint-plugin-prettier": "^0.0.5" 17 | }, 18 | "scripts": { 19 | "lint": "yarn prettier && yarn solhint", 20 | "lint:check": "yarn prettier:check && yarn solhint:check", 21 | "prettier": "yarn prettier:check --write", 22 | "prettier:check": "prettier --check \"src/**/*.sol\"", 23 | "solhint": "yarn solhint:check --fix", 24 | "solhint:check": "solhint --config ./.solhint.json \"src/**/*.sol\"" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/OnlyAuthorized.t.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: UNLICENSED 2 | pragma solidity ^0.8.0; 3 | 4 | import "forge-std/Test.sol"; 5 | 6 | import "./test/utils/Caller.sol"; 7 | 8 | import {OnlyAuthorized} from "./OnlyAuthorized.sol"; 9 | 10 | contract OnlyAuthorizedTest is Test { 11 | OnlyAuthorized private oa; 12 | 13 | function setUp() public { 14 | oa = new OnlyAuthorized(); 15 | } 16 | 17 | function testCanChangeOwner() public { 18 | oa.changeOwner(address(0x1)); 19 | assertEq(oa.owner(), address(0x1)); 20 | } 21 | 22 | function testOtherUsersCannotChangeOwner() public { 23 | Caller user = new Caller(); 24 | 25 | (bool ok, ) = user.externalCall( 26 | address(oa), 27 | abi.encodeWithSelector( 28 | oa.changeOwner.selector, 29 | (address(0xdeadbeef)) 30 | ) 31 | ); 32 | 33 | assertTrue(!ok, "Only the owner can change owner"); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | All notable changes to this project will be documented in this file. 4 | 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), 6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). 7 | 8 | ## [Unreleased] 9 | 10 | ### Added 11 | 12 | ### Changed 13 | - Update `foundry.toml` to Foundry new format 14 | - Replace ['dapphub/ds-test'](https://github.com/dapphub/ds-test) with ['foundry-rs/forge-std'](https://github.com/foundry-rs/forge-std) 15 | 16 | ### Deprecated 17 | 18 | ## [1.0.0] - 2022-03-26 19 | 20 | - Remake the project to support [Foundry](https://github.com/gakonst/foundry) first and remove support for dapptools 21 | 22 | ## [0.0.1] - 2022-03-24 23 | 24 | - Add `CHANGELOG.md` inspired by [keepachangelog.com](https://keepachangelog.com/en/1.0.0/) 25 | - Rewrite `README.md` 26 | - Update Solidity to 0.8.12 27 | - Add [MockProvider](https://github.com/cleanunicorn/mockprovider) library to help with mocking 28 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: Continuous Integration 2 | 3 | on: 4 | - push 5 | - pull_request 6 | 7 | jobs: 8 | lint: 9 | runs-on: ubuntu-latest 10 | 11 | steps: 12 | - name: Install Node.js 13 | uses: actions/setup-node@v2 14 | 15 | - name: Clone repo 16 | uses: actions/checkout@v2 17 | 18 | - name: Install yarn 19 | run: npm i -g yarn 20 | 21 | - name: Install dependencies 22 | run: make 23 | 24 | - name: Check contracts are linted 25 | run: yarn lint:check 26 | 27 | - name: Add lint summary 28 | run: | 29 | echo '## Lint results' >> $GITHUB_STEP_SUMMARY 30 | echo '✅ Passed' >> $GITHUB_STEP_SUMMARY 31 | 32 | tests: 33 | runs-on: ubuntu-latest 34 | 35 | steps: 36 | - name: Install Foundry 37 | uses: onbjerg/foundry-toolchain@v1.0.6 38 | with: 39 | version: nightly 40 | 41 | - name: Install node 42 | uses: actions/setup-node@v2 43 | 44 | - name: Install yarn 45 | run: npm i -g yarn 46 | 47 | - name: Clone repo with submodules 48 | uses: actions/checkout@v2 49 | with: 50 | submodules: recursive 51 | 52 | - name: Install dependencies 53 | run: make 54 | 55 | - name: Show Foundry config 56 | run: forge config 57 | 58 | - name: Run tests 59 | run: make test 60 | 61 | - name: Add test summary 62 | run: | 63 | echo '## Test results' >> $GITHUB_STEP_SUMMARY 64 | echo '✅ Passed' >> $GITHUB_STEP_SUMMARY 65 | 66 | 67 | full-pass: 68 | needs: 69 | - "tests" 70 | - "lint" 71 | 72 | runs-on: ubuntu-latest 73 | 74 | steps: 75 | - name: Add summary 76 | run: | 77 | echo '## Summary' >> $GITHUB_STEP_SUMMARY 78 | echo '✅ All passed' >> $GITHUB_STEP_SUMMARY 79 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Ethereum Smart Contract Template 2 | 3 | This development quick start template is heavily inspired by [Georgios's template](https://github.com/gakonst/dapptools-template). Over time it was migrated to use [foundry](https://github.com/gakonst/foundry) since dapptools was deprecated. 4 | 5 | It requires [Foundry](https://github.com/gakonst/foundry) installed to run. You can find instructions here [Foundry installation](https://github.com/gakonst/foundry#installation). 6 | 7 | ## Installation 8 | 9 | ### GitHub template 10 | 11 | It's easiest to start a new project by clicking the ["Use this template"](https://github.com/cleanunicorn/ethereum-smartcontract-template/generate). 12 | 13 | ### Manual installation 14 | 15 | If you want to create your project manually, clone the template in a new folder and `cd` into it. 16 | 17 | Clone the template, install dependencies and make sure tests work: 18 | 19 | ```sh 20 | mkdir cool-dapp 21 | cd cool-dapp 22 | forge init --template https://github.com/cleanunicorn/ethereum-smartcontract-template 23 | # Install the project's dependencies (libs and yarn packages) 24 | make 25 | # Run tests 26 | make test 27 | ``` 28 | 29 | ## Features 30 | 31 | For Foundry specific features, refer to: 32 | 33 | - [repository](https://github.com/foundry-rs/foundry) 34 | - [cheat codes](https://github.com/foundry-rs/foundry/blob/master/forge/README.md#cheat-codes) 35 | - [Foundry book](https://book.getfoundry.sh/) 36 | 37 | This template comes with an additional set of features explained below. 38 | 39 | ### Solidity libraries 40 | 41 | Included libraries in [`lib`](lib/): 42 | 43 | - [ds-test](https://github.com/dapphub/ds-test) - Test framework for DappTools 44 | - [openzeppelin-contracts](https://github.com/OpenZeppelin/openzeppelin-contracts) - OpenZeppelin contracts library 45 | - [mockprovider](https://github.com/cleanunicorn/mockprovider) - Mocking library 46 | 47 | ### GitHub Actions 48 | 49 | The template already comes with GitHub actions configured, which means that the project will be tested on every `push` and `pull request`. 50 | 51 | Check the [project's actions](https://github.com/cleanunicorn/ethereum-smartcontract-template/actions) for an example. 52 | 53 | Actions are defined in [.github/workflows/ci.yml](.github/workflows/ci.yml). 54 | 55 | ### GitHub templates 56 | 57 | The template comes with a list of templates: 58 | 59 | - [feature](.github/ISSUE_TEMPLATE/feature.md) 60 | - [bug](.github/ISSUE_TEMPLATE/bug.md) 61 | - [pull request](.github/pull_request_template.md) 62 | 63 | ## Commands 64 | 65 | - `make setup` - initialize libraries and yarn packages 66 | - `make build` - build your project 67 | - `make xclean` - remove compiled files 68 | - `make lint` - lint files 69 | - [`make test`](#testing) - run tests 70 | - `make test-gasreport` - run tests and show gas report 71 | - `make watch` - watch files and re-run tests 72 | 73 | ## Testing 74 | 75 | Normally you would run your tests on the local evm engine. 76 | 77 | ```sh 78 | $ make test 79 | forge test --gas-report 80 | [⠊] Compiling... 81 | [⠑] Compiling 19 files with 0.8.13 82 | Compiler run successful 83 | 84 | Running 2 tests for OnlyAuthorizedTest.json:OnlyAuthorizedTest 85 | [PASS] testCanChangeOwner() (gas: 11542) 86 | [PASS] testOtherUsersCannotChangeOwner() (gas: 156817) 87 | ╭─────────────────┬─────────────────┬──────┬────────┬──────┬─────────╮ 88 | │ Caller contract ┆ ┆ ┆ ┆ ┆ │ 89 | ╞═════════════════╪═════════════════╪══════╪════════╪══════╪═════════╡ 90 | │ Deployment Cost ┆ Deployment Size ┆ ┆ ┆ ┆ │ 91 | ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┤ 92 | │ 114159 ┆ 602 ┆ ┆ ┆ ┆ │ 93 | ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┤ 94 | │ Function Name ┆ min ┆ avg ┆ median ┆ max ┆ # calls │ 95 | ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┤ 96 | │ externalCall ┆ 6419 ┆ 6419 ┆ 6419 ┆ 6419 ┆ 1 │ 97 | ╰─────────────────┴─────────────────┴──────┴────────┴──────┴─────────╯ 98 | ╭─────────────────────────┬─────────────────┬──────┬────────┬──────┬─────────╮ 99 | │ OnlyAuthorized contract ┆ ┆ ┆ ┆ ┆ │ 100 | ╞═════════════════════════╪═════════════════╪══════╪════════╪══════╪═════════╡ 101 | │ Deployment Cost ┆ Deployment Size ┆ ┆ ┆ ┆ │ 102 | ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┤ 103 | │ 133694 ┆ 607 ┆ ┆ ┆ ┆ │ 104 | ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┤ 105 | │ Function Name ┆ min ┆ avg ┆ median ┆ max ┆ # calls │ 106 | ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┤ 107 | │ changeOwner ┆ 2504 ┆ 3980 ┆ 3980 ┆ 5457 ┆ 2 │ 108 | ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┤ 109 | │ owner ┆ 335 ┆ 335 ┆ 335 ┆ 335 ┆ 1 │ 110 | ╰─────────────────────────┴─────────────────┴──────┴────────┴──────┴─────────╯ 111 | ╭─────────────────────────────┬─────────────────┬────────┬────────┬────────┬─────────╮ 112 | │ OnlyAuthorizedTest contract ┆ ┆ ┆ ┆ ┆ │ 113 | ╞═════════════════════════════╪═════════════════╪════════╪════════╪════════╪═════════╡ 114 | │ Deployment Cost ┆ Deployment Size ┆ ┆ ┆ ┆ │ 115 | ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┤ 116 | │ 741677 ┆ 3639 ┆ ┆ ┆ ┆ │ 117 | ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┤ 118 | │ Function Name ┆ min ┆ avg ┆ median ┆ max ┆ # calls │ 119 | ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┤ 120 | │ setUp ┆ 171174 ┆ 171174 ┆ 171174 ┆ 171174 ┆ 2 │ 121 | ╰─────────────────────────────┴─────────────────┴────────┴────────┴────────┴─────────╯ 122 | 123 | ``` 124 | 125 | ### Changes 126 | 127 | Listed in the [CHANGELOG.md](./CHANGELOG.md) file which follows the https://keepachangelog.com/en/1.0.0/ format. 128 | 129 | ### Testing forked chain 130 | 131 | Work in progress... 132 | 133 | 154 | 155 | 156 | # FAQ 157 | 1. What is the Smartcontract? 158 | A smart contract is a self-executing program stored on a blockchain. 159 | It automatically enforces rules or agreements without the need for a central authority. 160 | 2. What is the solidity? 161 | Solidity is a programming language specifically designed to write smart contracts on the Ethereum blockchain. 162 | 3. What is the connections between smartcontract and solidity? 163 | Solidity is the main language used to write smart contracts on Ethereum and other EVM-compatible blockchains (like BNB Chain, Polygon, etc.). 164 | 4. If you have any question with this project, feel free to reach out. 165 | 5. This project protected by S.Team from 2022@com 166 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/code-frame@^7.0.0": 6 | version "7.15.8" 7 | resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz" 8 | integrity sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg== 9 | dependencies: 10 | "@babel/highlight" "^7.14.5" 11 | 12 | "@babel/helper-validator-identifier@^7.14.5": 13 | version "7.15.7" 14 | resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz" 15 | integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== 16 | 17 | "@babel/highlight@^7.14.5": 18 | version "7.14.5" 19 | resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz" 20 | integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== 21 | dependencies: 22 | "@babel/helper-validator-identifier" "^7.14.5" 23 | chalk "^2.0.0" 24 | js-tokens "^4.0.0" 25 | 26 | "@solidity-parser/parser@^0.13.2": 27 | version "0.13.2" 28 | resolved "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.13.2.tgz" 29 | integrity sha512-RwHnpRnfrnD2MSPveYoPh8nhofEvX7fgjHk1Oq+NNvCcLx4r1js91CO9o+F/F3fBzOCyvm8kKRTriFICX/odWw== 30 | dependencies: 31 | antlr4ts "^0.5.0-alpha.4" 32 | 33 | acorn-jsx@^5.0.0: 34 | version "5.3.2" 35 | resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" 36 | integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== 37 | 38 | acorn@^6.0.7: 39 | version "6.4.2" 40 | resolved "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz" 41 | integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== 42 | 43 | ajv@^6.10.2, ajv@^6.6.1, ajv@^6.9.1: 44 | version "6.12.6" 45 | resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" 46 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 47 | dependencies: 48 | fast-deep-equal "^3.1.1" 49 | fast-json-stable-stringify "^2.0.0" 50 | json-schema-traverse "^0.4.1" 51 | uri-js "^4.2.2" 52 | 53 | ansi-escapes@^3.2.0: 54 | version "3.2.0" 55 | resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz" 56 | integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== 57 | 58 | ansi-regex@^3.0.0: 59 | version "3.0.1" 60 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" 61 | integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== 62 | 63 | ansi-regex@^4.1.0: 64 | version "4.1.0" 65 | resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz" 66 | integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== 67 | 68 | ansi-regex@^5.0.1: 69 | version "5.0.1" 70 | resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" 71 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 72 | 73 | ansi-styles@^3.2.0, ansi-styles@^3.2.1: 74 | version "3.2.1" 75 | resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" 76 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 77 | dependencies: 78 | color-convert "^1.9.0" 79 | 80 | ansi-styles@^4.0.0: 81 | version "4.3.0" 82 | resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" 83 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 84 | dependencies: 85 | color-convert "^2.0.1" 86 | 87 | antlr4@4.7.1: 88 | version "4.7.1" 89 | resolved "https://registry.npmjs.org/antlr4/-/antlr4-4.7.1.tgz" 90 | integrity sha512-haHyTW7Y9joE5MVs37P2lNYfU2RWBLfcRDD8OWldcdZm5TiCE91B5Xl1oWSwiDUSd4rlExpt2pu1fksYQjRBYQ== 91 | 92 | antlr4ts@^0.5.0-alpha.4: 93 | version "0.5.0-alpha.4" 94 | resolved "https://registry.npmjs.org/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz" 95 | integrity sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ== 96 | 97 | argparse@^1.0.7: 98 | version "1.0.10" 99 | resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" 100 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 101 | dependencies: 102 | sprintf-js "~1.0.2" 103 | 104 | ast-parents@0.0.1: 105 | version "0.0.1" 106 | resolved "https://registry.npmjs.org/ast-parents/-/ast-parents-0.0.1.tgz" 107 | integrity sha1-UI/Q8F0MSHddnszaLhdEIyYejdM= 108 | 109 | astral-regex@^1.0.0: 110 | version "1.0.0" 111 | resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz" 112 | integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== 113 | 114 | balanced-match@^1.0.0: 115 | version "1.0.2" 116 | resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" 117 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 118 | 119 | brace-expansion@^1.1.7: 120 | version "1.1.11" 121 | resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" 122 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 123 | dependencies: 124 | balanced-match "^1.0.0" 125 | concat-map "0.0.1" 126 | 127 | caller-callsite@^2.0.0: 128 | version "2.0.0" 129 | resolved "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz" 130 | integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= 131 | dependencies: 132 | callsites "^2.0.0" 133 | 134 | caller-path@^2.0.0: 135 | version "2.0.0" 136 | resolved "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz" 137 | integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= 138 | dependencies: 139 | caller-callsite "^2.0.0" 140 | 141 | callsites@^2.0.0: 142 | version "2.0.0" 143 | resolved "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz" 144 | integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= 145 | 146 | callsites@^3.0.0: 147 | version "3.1.0" 148 | resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" 149 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 150 | 151 | chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.2: 152 | version "2.4.2" 153 | resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" 154 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 155 | dependencies: 156 | ansi-styles "^3.2.1" 157 | escape-string-regexp "^1.0.5" 158 | supports-color "^5.3.0" 159 | 160 | chardet@^0.7.0: 161 | version "0.7.0" 162 | resolved "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz" 163 | integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== 164 | 165 | cli-cursor@^2.1.0: 166 | version "2.1.0" 167 | resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz" 168 | integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= 169 | dependencies: 170 | restore-cursor "^2.0.0" 171 | 172 | cli-width@^2.0.0: 173 | version "2.2.1" 174 | resolved "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz" 175 | integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== 176 | 177 | cliui@^7.0.2: 178 | version "7.0.4" 179 | resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" 180 | integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== 181 | dependencies: 182 | string-width "^4.2.0" 183 | strip-ansi "^6.0.0" 184 | wrap-ansi "^7.0.0" 185 | 186 | color-convert@^1.9.0: 187 | version "1.9.3" 188 | resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" 189 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 190 | dependencies: 191 | color-name "1.1.3" 192 | 193 | color-convert@^2.0.1: 194 | version "2.0.1" 195 | resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" 196 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 197 | dependencies: 198 | color-name "~1.1.4" 199 | 200 | color-name@1.1.3: 201 | version "1.1.3" 202 | resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" 203 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 204 | 205 | color-name@~1.1.4: 206 | version "1.1.4" 207 | resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" 208 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 209 | 210 | commander@2.18.0: 211 | version "2.18.0" 212 | resolved "https://registry.npmjs.org/commander/-/commander-2.18.0.tgz" 213 | integrity sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ== 214 | 215 | concat-map@0.0.1: 216 | version "0.0.1" 217 | resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" 218 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 219 | 220 | copyfiles@^2.4.1: 221 | version "2.4.1" 222 | resolved "https://registry.npmjs.org/copyfiles/-/copyfiles-2.4.1.tgz" 223 | integrity sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg== 224 | dependencies: 225 | glob "^7.0.5" 226 | minimatch "^3.0.3" 227 | mkdirp "^1.0.4" 228 | noms "0.0.0" 229 | through2 "^2.0.1" 230 | untildify "^4.0.0" 231 | yargs "^16.1.0" 232 | 233 | core-util-is@~1.0.0: 234 | version "1.0.3" 235 | resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" 236 | integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== 237 | 238 | cosmiconfig@^5.0.7: 239 | version "5.2.1" 240 | resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz" 241 | integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== 242 | dependencies: 243 | import-fresh "^2.0.0" 244 | is-directory "^0.3.1" 245 | js-yaml "^3.13.1" 246 | parse-json "^4.0.0" 247 | 248 | cross-spawn@^6.0.5: 249 | version "6.0.5" 250 | resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz" 251 | integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== 252 | dependencies: 253 | nice-try "^1.0.4" 254 | path-key "^2.0.1" 255 | semver "^5.5.0" 256 | shebang-command "^1.2.0" 257 | which "^1.2.9" 258 | 259 | debug@^4.0.1: 260 | version "4.3.2" 261 | resolved "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz" 262 | integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== 263 | dependencies: 264 | ms "2.1.2" 265 | 266 | deep-is@~0.1.3: 267 | version "0.1.4" 268 | resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" 269 | integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== 270 | 271 | doctrine@^3.0.0: 272 | version "3.0.0" 273 | resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" 274 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== 275 | dependencies: 276 | esutils "^2.0.2" 277 | 278 | emoji-regex@^7.0.1: 279 | version "7.0.3" 280 | resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz" 281 | integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== 282 | 283 | emoji-regex@^8.0.0: 284 | version "8.0.0" 285 | resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" 286 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 287 | 288 | emoji-regex@^9.2.2: 289 | version "9.2.2" 290 | resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" 291 | integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== 292 | 293 | error-ex@^1.3.1: 294 | version "1.3.2" 295 | resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" 296 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== 297 | dependencies: 298 | is-arrayish "^0.2.1" 299 | 300 | escalade@^3.1.1: 301 | version "3.1.1" 302 | resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" 303 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 304 | 305 | escape-string-regexp@^1.0.5: 306 | version "1.0.5" 307 | resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" 308 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 309 | 310 | escape-string-regexp@^4.0.0: 311 | version "4.0.0" 312 | resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" 313 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 314 | 315 | eslint-scope@^4.0.3: 316 | version "4.0.3" 317 | resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz" 318 | integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== 319 | dependencies: 320 | esrecurse "^4.1.0" 321 | estraverse "^4.1.1" 322 | 323 | eslint-utils@^1.3.1: 324 | version "1.4.3" 325 | resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz" 326 | integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== 327 | dependencies: 328 | eslint-visitor-keys "^1.1.0" 329 | 330 | eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: 331 | version "1.3.0" 332 | resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz" 333 | integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== 334 | 335 | eslint@^5.6.0: 336 | version "5.16.0" 337 | resolved "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz" 338 | integrity sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg== 339 | dependencies: 340 | "@babel/code-frame" "^7.0.0" 341 | ajv "^6.9.1" 342 | chalk "^2.1.0" 343 | cross-spawn "^6.0.5" 344 | debug "^4.0.1" 345 | doctrine "^3.0.0" 346 | eslint-scope "^4.0.3" 347 | eslint-utils "^1.3.1" 348 | eslint-visitor-keys "^1.0.0" 349 | espree "^5.0.1" 350 | esquery "^1.0.1" 351 | esutils "^2.0.2" 352 | file-entry-cache "^5.0.1" 353 | functional-red-black-tree "^1.0.1" 354 | glob "^7.1.2" 355 | globals "^11.7.0" 356 | ignore "^4.0.6" 357 | import-fresh "^3.0.0" 358 | imurmurhash "^0.1.4" 359 | inquirer "^6.2.2" 360 | js-yaml "^3.13.0" 361 | json-stable-stringify-without-jsonify "^1.0.1" 362 | levn "^0.3.0" 363 | lodash "^4.17.11" 364 | minimatch "^3.0.4" 365 | mkdirp "^0.5.1" 366 | natural-compare "^1.4.0" 367 | optionator "^0.8.2" 368 | path-is-inside "^1.0.2" 369 | progress "^2.0.0" 370 | regexpp "^2.0.1" 371 | semver "^5.5.1" 372 | strip-ansi "^4.0.0" 373 | strip-json-comments "^2.0.1" 374 | table "^5.2.3" 375 | text-table "^0.2.0" 376 | 377 | espree@^5.0.1: 378 | version "5.0.1" 379 | resolved "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz" 380 | integrity sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A== 381 | dependencies: 382 | acorn "^6.0.7" 383 | acorn-jsx "^5.0.0" 384 | eslint-visitor-keys "^1.0.0" 385 | 386 | esprima@^4.0.0: 387 | version "4.0.1" 388 | resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" 389 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 390 | 391 | esquery@^1.0.1: 392 | version "1.4.0" 393 | resolved "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz" 394 | integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== 395 | dependencies: 396 | estraverse "^5.1.0" 397 | 398 | esrecurse@^4.1.0: 399 | version "4.3.0" 400 | resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" 401 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== 402 | dependencies: 403 | estraverse "^5.2.0" 404 | 405 | estraverse@^4.1.1: 406 | version "4.3.0" 407 | resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" 408 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== 409 | 410 | estraverse@^5.1.0, estraverse@^5.2.0: 411 | version "5.2.0" 412 | resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz" 413 | integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== 414 | 415 | esutils@^2.0.2: 416 | version "2.0.3" 417 | resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" 418 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 419 | 420 | external-editor@^3.0.3: 421 | version "3.1.0" 422 | resolved "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz" 423 | integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== 424 | dependencies: 425 | chardet "^0.7.0" 426 | iconv-lite "^0.4.24" 427 | tmp "^0.0.33" 428 | 429 | fast-deep-equal@^3.1.1: 430 | version "3.1.3" 431 | resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" 432 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 433 | 434 | fast-diff@^1.1.2: 435 | version "1.2.0" 436 | resolved "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz" 437 | integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== 438 | 439 | fast-json-stable-stringify@^2.0.0: 440 | version "2.1.0" 441 | resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" 442 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 443 | 444 | fast-levenshtein@~2.0.6: 445 | version "2.0.6" 446 | resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" 447 | integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= 448 | 449 | figures@^2.0.0: 450 | version "2.0.0" 451 | resolved "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz" 452 | integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= 453 | dependencies: 454 | escape-string-regexp "^1.0.5" 455 | 456 | file-entry-cache@^5.0.1: 457 | version "5.0.1" 458 | resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz" 459 | integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== 460 | dependencies: 461 | flat-cache "^2.0.1" 462 | 463 | flat-cache@^2.0.1: 464 | version "2.0.1" 465 | resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz" 466 | integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== 467 | dependencies: 468 | flatted "^2.0.0" 469 | rimraf "2.6.3" 470 | write "1.0.3" 471 | 472 | flatted@^2.0.0: 473 | version "2.0.2" 474 | resolved "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz" 475 | integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== 476 | 477 | fs.realpath@^1.0.0: 478 | version "1.0.0" 479 | resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" 480 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 481 | 482 | functional-red-black-tree@^1.0.1: 483 | version "1.0.1" 484 | resolved "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz" 485 | integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= 486 | 487 | get-caller-file@^2.0.5: 488 | version "2.0.5" 489 | resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" 490 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 491 | 492 | glob@^7.0.5, glob@^7.1.2, glob@^7.1.3: 493 | version "7.2.0" 494 | resolved "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz" 495 | integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== 496 | dependencies: 497 | fs.realpath "^1.0.0" 498 | inflight "^1.0.4" 499 | inherits "2" 500 | minimatch "^3.0.4" 501 | once "^1.3.0" 502 | path-is-absolute "^1.0.0" 503 | 504 | globals@^11.7.0: 505 | version "11.12.0" 506 | resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" 507 | integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== 508 | 509 | has-flag@^3.0.0: 510 | version "3.0.0" 511 | resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" 512 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 513 | 514 | iconv-lite@^0.4.24: 515 | version "0.4.24" 516 | resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" 517 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 518 | dependencies: 519 | safer-buffer ">= 2.1.2 < 3" 520 | 521 | ignore@^4.0.6: 522 | version "4.0.6" 523 | resolved "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz" 524 | integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== 525 | 526 | import-fresh@^2.0.0: 527 | version "2.0.0" 528 | resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz" 529 | integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= 530 | dependencies: 531 | caller-path "^2.0.0" 532 | resolve-from "^3.0.0" 533 | 534 | import-fresh@^3.0.0: 535 | version "3.3.0" 536 | resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" 537 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== 538 | dependencies: 539 | parent-module "^1.0.0" 540 | resolve-from "^4.0.0" 541 | 542 | imurmurhash@^0.1.4: 543 | version "0.1.4" 544 | resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" 545 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 546 | 547 | inflight@^1.0.4: 548 | version "1.0.6" 549 | resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" 550 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 551 | dependencies: 552 | once "^1.3.0" 553 | wrappy "1" 554 | 555 | inherits@2, inherits@^2.0.1, inherits@~2.0.1, inherits@~2.0.3: 556 | version "2.0.4" 557 | resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" 558 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 559 | 560 | inquirer@^6.2.2: 561 | version "6.5.2" 562 | resolved "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz" 563 | integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== 564 | dependencies: 565 | ansi-escapes "^3.2.0" 566 | chalk "^2.4.2" 567 | cli-cursor "^2.1.0" 568 | cli-width "^2.0.0" 569 | external-editor "^3.0.3" 570 | figures "^2.0.0" 571 | lodash "^4.17.12" 572 | mute-stream "0.0.7" 573 | run-async "^2.2.0" 574 | rxjs "^6.4.0" 575 | string-width "^2.1.0" 576 | strip-ansi "^5.1.0" 577 | through "^2.3.6" 578 | 579 | is-arrayish@^0.2.1: 580 | version "0.2.1" 581 | resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" 582 | integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= 583 | 584 | is-directory@^0.3.1: 585 | version "0.3.1" 586 | resolved "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz" 587 | integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= 588 | 589 | is-fullwidth-code-point@^2.0.0: 590 | version "2.0.0" 591 | resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz" 592 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= 593 | 594 | is-fullwidth-code-point@^3.0.0: 595 | version "3.0.0" 596 | resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" 597 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 598 | 599 | isarray@0.0.1: 600 | version "0.0.1" 601 | resolved "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" 602 | integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= 603 | 604 | isarray@~1.0.0: 605 | version "1.0.0" 606 | resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" 607 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 608 | 609 | isexe@^2.0.0: 610 | version "2.0.0" 611 | resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" 612 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 613 | 614 | js-tokens@^4.0.0: 615 | version "4.0.0" 616 | resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" 617 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 618 | 619 | js-yaml@^3.12.0, js-yaml@^3.13.0, js-yaml@^3.13.1: 620 | version "3.14.1" 621 | resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" 622 | integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== 623 | dependencies: 624 | argparse "^1.0.7" 625 | esprima "^4.0.0" 626 | 627 | json-parse-better-errors@^1.0.1: 628 | version "1.0.2" 629 | resolved "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz" 630 | integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== 631 | 632 | json-schema-traverse@^0.4.1: 633 | version "0.4.1" 634 | resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" 635 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 636 | 637 | json-stable-stringify-without-jsonify@^1.0.1: 638 | version "1.0.1" 639 | resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" 640 | integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= 641 | 642 | levn@^0.3.0, levn@~0.3.0: 643 | version "0.3.0" 644 | resolved "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz" 645 | integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= 646 | dependencies: 647 | prelude-ls "~1.1.2" 648 | type-check "~0.3.2" 649 | 650 | lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14: 651 | version "4.17.21" 652 | resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" 653 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 654 | 655 | lru-cache@^6.0.0: 656 | version "6.0.0" 657 | resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" 658 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 659 | dependencies: 660 | yallist "^4.0.0" 661 | 662 | mimic-fn@^1.0.0: 663 | version "1.2.0" 664 | resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz" 665 | integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== 666 | 667 | minimatch@^3.0.3, minimatch@^3.0.4: 668 | version "3.0.4" 669 | resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz" 670 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 671 | dependencies: 672 | brace-expansion "^1.1.7" 673 | 674 | minimist@^1.2.5: 675 | version "1.2.6" 676 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" 677 | integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== 678 | 679 | mkdirp@^0.5.1: 680 | version "0.5.5" 681 | resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz" 682 | integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== 683 | dependencies: 684 | minimist "^1.2.5" 685 | 686 | mkdirp@^1.0.4: 687 | version "1.0.4" 688 | resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" 689 | integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== 690 | 691 | ms@2.1.2: 692 | version "2.1.2" 693 | resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" 694 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 695 | 696 | mute-stream@0.0.7: 697 | version "0.0.7" 698 | resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz" 699 | integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= 700 | 701 | natural-compare@^1.4.0: 702 | version "1.4.0" 703 | resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" 704 | integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= 705 | 706 | nice-try@^1.0.4: 707 | version "1.0.5" 708 | resolved "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz" 709 | integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== 710 | 711 | noms@0.0.0: 712 | version "0.0.0" 713 | resolved "https://registry.npmjs.org/noms/-/noms-0.0.0.tgz" 714 | integrity sha1-2o69nzr51nYJGbJ9nNyAkqczKFk= 715 | dependencies: 716 | inherits "^2.0.1" 717 | readable-stream "~1.0.31" 718 | 719 | once@^1.3.0: 720 | version "1.4.0" 721 | resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" 722 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 723 | dependencies: 724 | wrappy "1" 725 | 726 | onetime@^2.0.0: 727 | version "2.0.1" 728 | resolved "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz" 729 | integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= 730 | dependencies: 731 | mimic-fn "^1.0.0" 732 | 733 | optionator@^0.8.2: 734 | version "0.8.3" 735 | resolved "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz" 736 | integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== 737 | dependencies: 738 | deep-is "~0.1.3" 739 | fast-levenshtein "~2.0.6" 740 | levn "~0.3.0" 741 | prelude-ls "~1.1.2" 742 | type-check "~0.3.2" 743 | word-wrap "~1.2.3" 744 | 745 | os-tmpdir@~1.0.2: 746 | version "1.0.2" 747 | resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" 748 | integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= 749 | 750 | parent-module@^1.0.0: 751 | version "1.0.1" 752 | resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" 753 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 754 | dependencies: 755 | callsites "^3.0.0" 756 | 757 | parse-json@^4.0.0: 758 | version "4.0.0" 759 | resolved "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz" 760 | integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= 761 | dependencies: 762 | error-ex "^1.3.1" 763 | json-parse-better-errors "^1.0.1" 764 | 765 | path-is-absolute@^1.0.0: 766 | version "1.0.1" 767 | resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" 768 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 769 | 770 | path-is-inside@^1.0.2: 771 | version "1.0.2" 772 | resolved "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz" 773 | integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= 774 | 775 | path-key@^2.0.1: 776 | version "2.0.1" 777 | resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" 778 | integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= 779 | 780 | prelude-ls@~1.1.2: 781 | version "1.1.2" 782 | resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz" 783 | integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= 784 | 785 | prettier-linter-helpers@^1.0.0: 786 | version "1.0.0" 787 | resolved "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz" 788 | integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== 789 | dependencies: 790 | fast-diff "^1.1.2" 791 | 792 | prettier-plugin-solidity@^1.0.0-beta.18: 793 | version "1.0.0-beta.18" 794 | resolved "https://registry.npmjs.org/prettier-plugin-solidity/-/prettier-plugin-solidity-1.0.0-beta.18.tgz" 795 | integrity sha512-ezWdsG/jIeClmYBzg8V9Voy8jujt+VxWF8OS3Vld+C3c+3cPVib8D9l8ahTod7O5Df1anK9zo+WiiS5wb1mLmg== 796 | dependencies: 797 | "@solidity-parser/parser" "^0.13.2" 798 | emoji-regex "^9.2.2" 799 | escape-string-regexp "^4.0.0" 800 | semver "^7.3.5" 801 | solidity-comments-extractor "^0.0.7" 802 | string-width "^4.2.2" 803 | 804 | prettier@^1.14.3: 805 | version "1.19.1" 806 | resolved "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz" 807 | integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== 808 | 809 | prettier@^2.4.1: 810 | version "2.4.1" 811 | resolved "https://registry.npmjs.org/prettier/-/prettier-2.4.1.tgz" 812 | integrity sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA== 813 | 814 | process-nextick-args@~2.0.0: 815 | version "2.0.1" 816 | resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" 817 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== 818 | 819 | progress@^2.0.0: 820 | version "2.0.3" 821 | resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz" 822 | integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== 823 | 824 | punycode@^2.1.0: 825 | version "2.1.1" 826 | resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" 827 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 828 | 829 | readable-stream@~1.0.31: 830 | version "1.0.34" 831 | resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz" 832 | integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= 833 | dependencies: 834 | core-util-is "~1.0.0" 835 | inherits "~2.0.1" 836 | isarray "0.0.1" 837 | string_decoder "~0.10.x" 838 | 839 | readable-stream@~2.3.6: 840 | version "2.3.7" 841 | resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" 842 | integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== 843 | dependencies: 844 | core-util-is "~1.0.0" 845 | inherits "~2.0.3" 846 | isarray "~1.0.0" 847 | process-nextick-args "~2.0.0" 848 | safe-buffer "~5.1.1" 849 | string_decoder "~1.1.1" 850 | util-deprecate "~1.0.1" 851 | 852 | regexpp@^2.0.1: 853 | version "2.0.1" 854 | resolved "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz" 855 | integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== 856 | 857 | require-directory@^2.1.1: 858 | version "2.1.1" 859 | resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" 860 | integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= 861 | 862 | resolve-from@^3.0.0: 863 | version "3.0.0" 864 | resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz" 865 | integrity sha1-six699nWiBvItuZTM17rywoYh0g= 866 | 867 | resolve-from@^4.0.0: 868 | version "4.0.0" 869 | resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" 870 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 871 | 872 | restore-cursor@^2.0.0: 873 | version "2.0.0" 874 | resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz" 875 | integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= 876 | dependencies: 877 | onetime "^2.0.0" 878 | signal-exit "^3.0.2" 879 | 880 | rimraf@2.6.3: 881 | version "2.6.3" 882 | resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz" 883 | integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== 884 | dependencies: 885 | glob "^7.1.3" 886 | 887 | rimraf@^3.0.2: 888 | version "3.0.2" 889 | resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" 890 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 891 | dependencies: 892 | glob "^7.1.3" 893 | 894 | run-async@^2.2.0: 895 | version "2.4.1" 896 | resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz" 897 | integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== 898 | 899 | rxjs@^6.4.0: 900 | version "6.6.7" 901 | resolved "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz" 902 | integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== 903 | dependencies: 904 | tslib "^1.9.0" 905 | 906 | safe-buffer@~5.1.0, safe-buffer@~5.1.1: 907 | version "5.1.2" 908 | resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" 909 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 910 | 911 | "safer-buffer@>= 2.1.2 < 3": 912 | version "2.1.2" 913 | resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" 914 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 915 | 916 | semver@^5.5.0, semver@^5.5.1: 917 | version "5.7.1" 918 | resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" 919 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 920 | 921 | semver@^6.3.0: 922 | version "6.3.0" 923 | resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" 924 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 925 | 926 | semver@^7.3.5: 927 | version "7.3.5" 928 | resolved "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz" 929 | integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== 930 | dependencies: 931 | lru-cache "^6.0.0" 932 | 933 | shebang-command@^1.2.0: 934 | version "1.2.0" 935 | resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz" 936 | integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= 937 | dependencies: 938 | shebang-regex "^1.0.0" 939 | 940 | shebang-regex@^1.0.0: 941 | version "1.0.0" 942 | resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz" 943 | integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= 944 | 945 | signal-exit@^3.0.2: 946 | version "3.0.5" 947 | resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz" 948 | integrity sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ== 949 | 950 | slice-ansi@^2.1.0: 951 | version "2.1.0" 952 | resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz" 953 | integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== 954 | dependencies: 955 | ansi-styles "^3.2.0" 956 | astral-regex "^1.0.0" 957 | is-fullwidth-code-point "^2.0.0" 958 | 959 | solhint-plugin-prettier@^0.0.5: 960 | version "0.0.5" 961 | resolved "https://registry.npmjs.org/solhint-plugin-prettier/-/solhint-plugin-prettier-0.0.5.tgz" 962 | integrity sha512-7jmWcnVshIrO2FFinIvDQmhQpfpS2rRRn3RejiYgnjIE68xO2bvrYvjqVNfrio4xH9ghOqn83tKuTzLjEbmGIA== 963 | dependencies: 964 | prettier-linter-helpers "^1.0.0" 965 | 966 | solhint@^3.3.6: 967 | version "3.3.6" 968 | resolved "https://registry.npmjs.org/solhint/-/solhint-3.3.6.tgz" 969 | integrity sha512-HWUxTAv2h7hx3s3hAab3ifnlwb02ZWhwFU/wSudUHqteMS3ll9c+m1FlGn9V8ztE2rf3Z82fQZA005Wv7KpcFA== 970 | dependencies: 971 | "@solidity-parser/parser" "^0.13.2" 972 | ajv "^6.6.1" 973 | antlr4 "4.7.1" 974 | ast-parents "0.0.1" 975 | chalk "^2.4.2" 976 | commander "2.18.0" 977 | cosmiconfig "^5.0.7" 978 | eslint "^5.6.0" 979 | fast-diff "^1.1.2" 980 | glob "^7.1.3" 981 | ignore "^4.0.6" 982 | js-yaml "^3.12.0" 983 | lodash "^4.17.11" 984 | semver "^6.3.0" 985 | optionalDependencies: 986 | prettier "^1.14.3" 987 | 988 | solidity-comments-extractor@^0.0.7: 989 | version "0.0.7" 990 | resolved "https://registry.npmjs.org/solidity-comments-extractor/-/solidity-comments-extractor-0.0.7.tgz" 991 | integrity sha512-wciNMLg/Irp8OKGrh3S2tfvZiZ0NEyILfcRCXCD4mp7SgK/i9gzLfhY2hY7VMCQJ3kH9UB9BzNdibIVMchzyYw== 992 | 993 | sprintf-js@~1.0.2: 994 | version "1.0.3" 995 | resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" 996 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 997 | 998 | string-width@^2.1.0: 999 | version "2.1.1" 1000 | resolved "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz" 1001 | integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== 1002 | dependencies: 1003 | is-fullwidth-code-point "^2.0.0" 1004 | strip-ansi "^4.0.0" 1005 | 1006 | string-width@^3.0.0: 1007 | version "3.1.0" 1008 | resolved "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz" 1009 | integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== 1010 | dependencies: 1011 | emoji-regex "^7.0.1" 1012 | is-fullwidth-code-point "^2.0.0" 1013 | strip-ansi "^5.1.0" 1014 | 1015 | string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2: 1016 | version "4.2.3" 1017 | resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" 1018 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 1019 | dependencies: 1020 | emoji-regex "^8.0.0" 1021 | is-fullwidth-code-point "^3.0.0" 1022 | strip-ansi "^6.0.1" 1023 | 1024 | string_decoder@~0.10.x: 1025 | version "0.10.31" 1026 | resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" 1027 | integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= 1028 | 1029 | string_decoder@~1.1.1: 1030 | version "1.1.1" 1031 | resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" 1032 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 1033 | dependencies: 1034 | safe-buffer "~5.1.0" 1035 | 1036 | strip-ansi@^4.0.0: 1037 | version "4.0.0" 1038 | resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz" 1039 | integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= 1040 | dependencies: 1041 | ansi-regex "^3.0.0" 1042 | 1043 | strip-ansi@^5.1.0: 1044 | version "5.2.0" 1045 | resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz" 1046 | integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== 1047 | dependencies: 1048 | ansi-regex "^4.1.0" 1049 | 1050 | strip-ansi@^6.0.0, strip-ansi@^6.0.1: 1051 | version "6.0.1" 1052 | resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" 1053 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 1054 | dependencies: 1055 | ansi-regex "^5.0.1" 1056 | 1057 | strip-json-comments@^2.0.1: 1058 | version "2.0.1" 1059 | resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz" 1060 | integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= 1061 | 1062 | supports-color@^5.3.0: 1063 | version "5.5.0" 1064 | resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" 1065 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1066 | dependencies: 1067 | has-flag "^3.0.0" 1068 | 1069 | table@^5.2.3: 1070 | version "5.4.6" 1071 | resolved "https://registry.npmjs.org/table/-/table-5.4.6.tgz" 1072 | integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== 1073 | dependencies: 1074 | ajv "^6.10.2" 1075 | lodash "^4.17.14" 1076 | slice-ansi "^2.1.0" 1077 | string-width "^3.0.0" 1078 | 1079 | text-table@^0.2.0: 1080 | version "0.2.0" 1081 | resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" 1082 | integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= 1083 | 1084 | through2@^2.0.1: 1085 | version "2.0.5" 1086 | resolved "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz" 1087 | integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== 1088 | dependencies: 1089 | readable-stream "~2.3.6" 1090 | xtend "~4.0.1" 1091 | 1092 | through@^2.3.6: 1093 | version "2.3.8" 1094 | resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" 1095 | integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= 1096 | 1097 | tmp@^0.0.33: 1098 | version "0.0.33" 1099 | resolved "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz" 1100 | integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== 1101 | dependencies: 1102 | os-tmpdir "~1.0.2" 1103 | 1104 | tslib@^1.9.0: 1105 | version "1.14.1" 1106 | resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" 1107 | integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== 1108 | 1109 | type-check@~0.3.2: 1110 | version "0.3.2" 1111 | resolved "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz" 1112 | integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= 1113 | dependencies: 1114 | prelude-ls "~1.1.2" 1115 | 1116 | untildify@^4.0.0: 1117 | version "4.0.0" 1118 | resolved "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz" 1119 | integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== 1120 | 1121 | uri-js@^4.2.2: 1122 | version "4.4.1" 1123 | resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" 1124 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 1125 | dependencies: 1126 | punycode "^2.1.0" 1127 | 1128 | util-deprecate@~1.0.1: 1129 | version "1.0.2" 1130 | resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" 1131 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 1132 | 1133 | which@^1.2.9: 1134 | version "1.3.1" 1135 | resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz" 1136 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== 1137 | dependencies: 1138 | isexe "^2.0.0" 1139 | 1140 | word-wrap@~1.2.3: 1141 | version "1.2.3" 1142 | resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz" 1143 | integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== 1144 | 1145 | wrap-ansi@^7.0.0: 1146 | version "7.0.0" 1147 | resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" 1148 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 1149 | dependencies: 1150 | ansi-styles "^4.0.0" 1151 | string-width "^4.1.0" 1152 | strip-ansi "^6.0.0" 1153 | 1154 | wrappy@1: 1155 | version "1.0.2" 1156 | resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" 1157 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 1158 | 1159 | write@1.0.3: 1160 | version "1.0.3" 1161 | resolved "https://registry.npmjs.org/write/-/write-1.0.3.tgz" 1162 | integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== 1163 | dependencies: 1164 | mkdirp "^0.5.1" 1165 | 1166 | xtend@~4.0.1: 1167 | version "4.0.2" 1168 | resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" 1169 | integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== 1170 | 1171 | y18n@^5.0.5: 1172 | version "5.0.8" 1173 | resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" 1174 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== 1175 | 1176 | yallist@^4.0.0: 1177 | version "4.0.0" 1178 | resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" 1179 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 1180 | 1181 | yargs-parser@^20.2.2: 1182 | version "20.2.9" 1183 | resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" 1184 | integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== 1185 | 1186 | yargs@^16.1.0: 1187 | version "16.2.0" 1188 | resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" 1189 | integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== 1190 | dependencies: 1191 | cliui "^7.0.2" 1192 | escalade "^3.1.1" 1193 | get-caller-file "^2.0.5" 1194 | require-directory "^2.1.1" 1195 | string-width "^4.2.0" 1196 | y18n "^5.0.5" 1197 | yargs-parser "^20.2.2" 1198 | --------------------------------------------------------------------------------